games/play-7-billion-humans.sh0000755000000000000000000000443014471751340015246 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # 7 Billion Humans ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='7-billion-humans' GAME_NAME='7 Billion Humans' ARCHIVE_BASE_0_NAME='7_billion_humans_1_0_32487_23774.sh' ARCHIVE_BASE_0_MD5='3d42952a6b9329f1c64bda00b05c4afb' ARCHIVE_BASE_0_SIZE='160000' ARCHIVE_BASE_0_VERSION='1.0.32487-gog23774' ARCHIVE_BASE_0_URL='https://www.gog.com/game/7_billion_humans' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' 7BillionHumans.bin.x86_64' CONTENT_GAME_BIN32_FILES=' 7BillionHumans.bin.x86' CONTENT_GAME_DATA_FILES=' shaders resource.pak icon.png' CONTENT_DOC_DATA_FILES=' LICENSE.txt README.linux' APP_MAIN_EXE_BIN64='7BillionHumans.bin.x86_64' APP_MAIN_EXE_BIN32='7BillionHumans.bin.x86' APP_MAIN_ICON='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 libgcc_s.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-a-dance-of-fire-and-ice.sh0000755000000000000000000000432414471751340016276 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 ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' 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' ## ./play.it 2.29 does not have support for multiple archives sharing a same name. ## cf. https://forge.dotslashplay.it/play.it/scripts/-/issues/355 #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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 libpulse.so.0 librt.so.1 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-a-house-of-many-doors.sh0000755000000000000000000000350314471751340016212 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # A House of Many Doors ### script_version=20240531.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='a-house-of-many-doors' GAME_NAME='A House of Many Doors' ARCHIVE_BASE_0_NAME='A House of Many Doors.zip' ARCHIVE_BASE_0_MD5='bf3714af567c8e6290577af2d744dd0a' ARCHIVE_BASE_0_SIZE='463417' ARCHIVE_BASE_0_VERSION='1.2-itch.2017.03.30' ARCHIVE_BASE_0_URL='https://pixeltrickery.itch.io/a-house-of-many-doors' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' D3DX9_43.dll A House of Many Doors.exe HOMD.homd Game Data.ini options.ini' CONTENT_GAME_DATA_FILES=' Images audiogroup*.dat *.ogg penumbra_s.png data.win' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/A_House_of_Many_Doors' APP_MAIN_EXE='A House of Many Doors.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_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 . "$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-age-of-mythology.sh0000755000000000000000000015160314471751340015355 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 Hoël Bézier set -o errexit ### # Age of Mythology ### script_version=20240503.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='age-of-mythology' GAME_NAME='Age of Mythology' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_DEMO_0_NAME='mtrial.exe' ARCHIVE_BASE_DEMO_0_MD5='c475268b774c0fd469802e915b3c3803' ARCHIVE_BASE_DEMO_0_TYPE='cabinet' ARCHIVE_BASE_DEMO_0_SIZE='550000' ARCHIVE_BASE_DEMO_0_VERSION='1.0-archiveorg1' ARCHIVE_BASE_DEMO_0_URL='https://archive.org/details/AgeOfMythologyDemo' CONTENT_PATH_DEFAULT='aom' CONTENT_GAME_BIN_FILES=' *.exe *.dll' CONTENT_GAME0_BIN_PATH='.' CONTENT_GAME0_BIN_FILES=' *.dll' CONTENT_FONTS_DATA_FILES=' arialuni.ttf gio_bk.ttf per_____.ttf' CONTENT_FONTS0_DATA_PATH='.' CONTENT_FONTS0_DATA_FILES=' georgiab.ttf georgiai.ttf georgia.ttf georgiaz.ttf' CONTENT_GAME_DATA_FILES=' *' CONTENT_DOC_DATA_PATH='.' CONTENT_DOC_DATA_FILES=' *.rtf' USER_PERSISTENT_FILES=' startup/persistent.cfg rts3banglog.txt *.XMB *.xml .xs' USER_PERSISTENT_DIRECTORIES=' cameratracks default language savegame screenshots users' APP_MAIN_EXE='aom.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPS_DEMO="$PKG_DATA_ID_DEMO" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Rename files with truncated names. mv 'gfxcon_1' 'gfxconfig' mv 'godpow_1' 'god powers' mv 'sound/cinema_1' 'sound/cinematics' mv 'sound/music/interf_1' 'sound/music/interface' mv '1028/dwin0000.dll' '1028/dwintl.dll' mv '1029/dwin0001.dll' '1029/dwintl.dll' mv '1030/dwin0002.dll' '1030/dwintl.dll' mv '1031/dwin0003.dll' '1031/dwintl.dll' mv '1031/msil0000.bin' '1031/msiloadr.bin' mv '1031/webl0000.bin' '1031/webloadr.bin' mv '1032/dwin0004.dll' '1032/dwintl.dll' mv '1033/dwin0005.dll' '1033/dwintl.dll' mv '1033/msil0001.bin' '1033/msiloadr.bin' mv '1033/webl0001.bin' '1033/webloadr.bin' mv '1035/dwin0006.dll' '1035/dwintl.dll' mv '1036/dwin0007.dll' '1036/dwintl.dll' mv '1036/msil0002.bin' '1036/msiloadr.bin' mv '1036/webl0002.bin' '1036/webloadr.bin' mv '1037/dwin0008.dll' '1037/dwintl.dll' mv '1038/dwin0009.dll' '1038/dwintl.dll' mv '1040/dwin000a.dll' '1040/dwintl.dll' mv '1040/msil0003.bin' '1040/msiloadr.bin' mv '1040/webl0003.bin' '1040/webloadr.bin' mv '1041/dwin000b.dll' '1041/dwintl.dll' mv '1041/msil0004.bin' '1041/msiloadr.bin' mv '1041/webl0004.bin' '1041/webloadr.bin' mv '1042/dwin000c.dll' '1042/dwintl.dll' mv '1042/msil0005.bin' '1042/msiloadr.bin' mv '1042/webl0005.bin' '1042/webloadr.bin' mv '1043/dwin000d.dll' '1043/dwintl.dll' mv '1044/dwin000e.dll' '1044/dwintl.dll' mv '1045/dwin000f.dll' '1045/dwintl.dll' mv '1046/dwin0010.dll' '1046/dwintl.dll' mv '1048/dwin0011.dll' '1048/dwintl.dll' mv '1049/dwin0012.dll' '1049/dwintl.dll' mv '1050/dwin0013.dll' '1050/dwintl.dll' mv '1051/dwin0014.dll' '1051/dwintl.dll' mv '1053/dwin0015.dll' '1053/dwintl.dll' mv '1054/dwin0016.dll' '1054/dwintl.dll' mv '1055/dwin0017.dll' '1055/dwintl.dll' mv '1060/dwin0018.dll' '1060/dwintl.dll' mv '2052/dwin0019.dll' '2052/dwintl.dll' mv '2052/msil0006.bin' '2052/msiloadr.bin' mv '2052/webl0006.bin' '2052/webloadr.bin' mv '2070/dwin001a.dll' '2070/dwintl.dll' mv '3076/dwin001b.dll' '3076/dwintl.dll' mv '3082/dwin001c.dll' '3082/dwintl.dll' mv '3082/msil0007.bin' '3082/msiloadr.bin' mv '3082/webl0007.bin' '3082/webloadr.bin' mv 'ai/ao9982_1.xs' 'ai/aomdefaultaiprogress.xs' mv 'ai/aomdef_1.xs' 'ai/aomdefaultai.xs' mv 'ai/aomdef_2.xs' 'ai/aomdefaultaieconomy.xs' mv 'ai/aomdef_3.xs' 'ai/aomdefaultaigodpowers.xs' mv 'ai/aomdef_4.xs' 'ai/aomdefaultaimilitary.xs' mv 'ai/defaul_1.xml' 'ai/defaultboom.xml' mv 'ai/defaul_2.xml' 'ai/defaultrandom.xml' mv 'ai/defaul_3.xml' 'ai/defaultrush.xml' mv 'ai/scn17a_1.xs' 'ai/scn17altp2.xs' mv 'ai/scn28p_1.xs' 'ai/scn28p234.xs' mv 'ai/scnlib_1.xs' 'ai/scn lib.xs' mv 'autopa_1.exe' 'autopatcher.exe' mv 'avi/aomlog_1.bik' 'avi/aom logo.bik' mv 'data/fimbul_1.lgt' 'data/fimbulwinter.lgt' mv 'data/ghostl_1.lgt' 'data/ghost lake.lgt' mv 'data/learnt_1.cpn' 'data/learn to play.cpn' mv 'data/mainca_1.cpn' 'data/main campaign.cpn' mv 'data/prword_1.xml' 'data/prwordlist.xml' mv 'docs/aomais_1.rtf' 'docs/aom ai script help file.rtf' mv 'docs/aomce__1.pdf' 'docs/aomce_egyptianqrc_en.pdf' mv 'docs/aomce__2.pdf' 'docs/aomce_greekqrc_en.pdf' mv 'docs/aomce__3.pdf' 'docs/aomce_norseqrc_en.pdf' mv 'docs/aom_in_1.pdf' 'docs/aom_ingamemanual.pdf' mv 'docs/aomran_1.rtf' 'docs/aom random map help file.rtf' mv 'docs/aomsce_1.rtf' 'docs/aom scenario editor faq.rtf' mv 'docs/aomsta_1.pdf' 'docs/aomstandard_manual_en.pdf' mv 'docs/troubl_1.rtf' 'docs/troubleshooting crashing issues.rtf' mv 'docs/troubl_2.rtf' 'docs/troubleshooting display problems.rtf' mv 'esocli_1.dll' 'esoclientdll.dll' mv 'fonts/arialu_1.msk' 'fonts/arial unicode ms.msk' mv 'fonts/courie_1.msk' 'fonts/courier new.msk' mv 'fonts/frizqu_1.msk' 'fonts/friz quadrata tt.msk' mv 'fonts/giovan_1.msk' 'fonts/giovanni book.msk' mv 'fonts/giovan_2.msk' 'fonts/giovanni test.msk' mv 'fonts/giovan_3.msk' 'fonts/giovanniitctt.msk' mv 'fonts/imeuis_1.xml' 'fonts/imeuisettings.xml' mv 'fonts/timesn_1.msk' 'fonts/times new roman.msk' mv 'gfxconfig/0x015d_1.gfx' 'gfxconfig/0x015d_number9.gfx' mv 'gfxconfig/0x0315_1.gfx' 'gfxconfig/0x0315_sis.gfx' mv 'gfxconfig/0x1002_1.gfx' 'gfxconfig/0x1002_ati.gfx' mv 'gfxconfig/0x100c_1.gfx' 'gfxconfig/0x100c_tseng.gfx' mv 'gfxconfig/0x1013_1.gfx' 'gfxconfig/0x1013_cirruslogic.gfx' mv 'gfxconfig/0x1023_1.gfx' 'gfxconfig/0x1023_trident.gfx' mv 'gfxconfig/0x1029_1.gfx' 'gfxconfig/0x1029_trident.gfx' mv 'gfxconfig/0x102b_1.gfx' 'gfxconfig/0x102b_matrox.gfx' mv 'gfxconfig/0x1039_1.gfx' 'gfxconfig/0x1039_sis.gfx' mv 'gfxconfig/0x104a_1.gfx' 'gfxconfig/0x104a_stmicroelectronics.gfx' mv 'gfxconfig/0x104c_1.gfx' 'gfxconfig/0x104c_3dlabs.gfx' mv 'gfxconfig/0x104e_1.gfx' 'gfxconfig/0x104e_oaktech.gfx' mv 'gfxconfig/0x10c8_1.gfx' 'gfxconfig/0x10c8_neomagic.gfx' mv 'gfxconfig/0x10d9_1.gfx' 'gfxconfig/0x10d9_3dfx.gfx' mv 'gfxconfig/0x10de_1.gfx' 'gfxconfig/0x10de_nvidia.gfx' mv 'gfxconfig/0x110b_1.gfx' 'gfxconfig/0x110b_chromatic.gfx' mv 'gfxconfig/0x1142_1.gfx' 'gfxconfig/0x1142_3dfx.gfx' mv 'gfxconfig/0x1163_1.gfx' 'gfxconfig/0x1163_rendition.gfx' mv 'gfxconfig/0x121a_1.gfx' 'gfxconfig/0x121a_3dfx.gfx' mv 'gfxconfig/0x12d2_1.gfx' 'gfxconfig/0x12d2_nvidia.gfx' mv 'gfxconfig/0x14af_1.gfx' 'gfxconfig/0x14af_guillemot.gfx' mv 'gfxconfig/0x3d3d_1.gfx' 'gfxconfig/0x3d3d_3dlabs.gfx' mv 'gfxconfig/0x5333_1.gfx' 'gfxconfig/0x5333_s3.gfx' mv 'gfxconfig/0x8086_1.gfx' 'gfxconfig/0x8086_intel.gfx' mv 'gfxconfig/cyberb_1.gfx' 'gfxconfig/cyberbladexp.gfx' mv 'gfxconfig/geforc_1.gfx' 'gfxconfig/geforce1and2.gfx' mv 'gfxconfig/mt40b6_1.tss' 'gfxconfig/mtlinearblendalphaemissivespecularfactor_nvidia.tss' mv 'gfxconfig/mt6b37_1.tss' 'gfxconfig/mtlinearblendalphaemissivespecularfactor.tss' mv 'gfxconfig/mt6db5_1.tss' 'gfxconfig/mtlinearblendinversealpha.tss' mv 'gfxconfig/mt81aa_1.tss' 'gfxconfig/mtlinearblend_nvidia.tss' mv 'gfxconfig/mt8378_1.tss' 'gfxconfig/mtlinearblendemissivespecularfactor.tss' mv 'gfxconfig/mta5c3_1.tss' 'gfxconfig/mtlinearblendemissivespecularfactor_nvidia.tss' mv 'gfxconfig/mtadda_1.tss' 'gfxconfig/mtaddalpha.tss' mv 'gfxconfig/mtadda_2.tss' 'gfxconfig/mtaddalpha_nvidia.tss' mv 'gfxconfig/mtaddf_1.tss' 'gfxconfig/mtaddfactor.tss' mv 'gfxconfig/mtaddf_2.tss' 'gfxconfig/mtaddfactor_nvidia.tss' mv 'gfxconfig/mtaddi_1.tss' 'gfxconfig/mtaddinversealpha.tss' mv 'gfxconfig/mtaddi_2.tss' 'gfxconfig/mtaddinversealpha_nvidia.tss' mv 'gfxconfig/mte0b7_1.tss' 'gfxconfig/mtlinearblendalpha_nvidia.tss' mv 'gfxconfig/mtee67_1.tss' 'gfxconfig/mtlinearblendinversealpha_nvidia.tss' mv 'gfxconfig/mtemis_1.tss' 'gfxconfig/mtemissivespecularfactor.tss' mv 'gfxconfig/mtemis_2.tss' 'gfxconfig/mtemissivespecularfactor2stage.tss' mv 'gfxconfig/mtemis_3.tss' 'gfxconfig/mtemissivespecularfactornotx.tss' mv 'gfxconfig/mtemis_4.tss' 'gfxconfig/mtemissivespecularfactornotx2stage.tss' mv 'gfxconfig/mtfade_1.tss' 'gfxconfig/mtfadelightmapbyalpha.tss' mv 'gfxconfig/mtfogm_1.tss' 'gfxconfig/mtfogmask.tss' mv 'gfxconfig/mtfogm_2.tss' 'gfxconfig/mtfogmask2stage.tss' mv 'gfxconfig/mtligh_1.tss' 'gfxconfig/mtlightmap.tss' mv 'gfxconfig/mtline_1.tss' 'gfxconfig/mtlinearblend.tss' mv 'gfxconfig/mtline_2.tss' 'gfxconfig/mtlinearblend2stage.tss' mv 'gfxconfig/mtline_3.tss' 'gfxconfig/mtlinearblendalpha.tss' mv 'gfxconfig/mtline_4.tss' 'gfxconfig/mtlinearblendalpha2stage.tss' mv 'gfxconfig/mtoff2_1.tss' 'gfxconfig/mtoff2stage.tss' mv 'gfxconfig/mtoffn_1.tss' 'gfxconfig/mtoffnotx.tss' mv 'gfxconfig/mtoffn_2.tss' 'gfxconfig/mtoffnotx2stage.tss' mv 'gfxconfig/mtoffn_3.tss' 'gfxconfig/mtoffnovtxalpha.tss' mv 'gfxconfig/mtoffn_4.tss' 'gfxconfig/mtoffnovtxalpha2stage.tss' mv 'gfxconfig/mtoffo_1.tss' 'gfxconfig/mtoffonlyalpha.tss' mv 'gfxconfig/mtoffo_2.tss' 'gfxconfig/mtoffonlyalpha2stage.tss' mv 'gfxconfig/mtsepa_1.tss' 'gfxconfig/mtseparatealpha.tss' mv 'gfxconfig/mtspec_1.tss' 'gfxconfig/mtspecularbump.tss' mv 'gfxconfig/mtspec_2.tss' 'gfxconfig/mtspecularbump2stage.tss' mv 'gfxconfig/permed_1.gfx' 'gfxconfig/permedia2.gfx' mv 'gfxconfig/permed_2.gfx' 'gfxconfig/permedia3.gfx' mv 'gfxconfig/radeon_1.gfx' 'gfxconfig/radeon7500.gfx' mv 'gfxconfig/radeon_2.gfx' 'gfxconfig/radeon8500.gfx' mv 'gfxconfig/ragelt_1.gfx' 'gfxconfig/rageltpro.gfx' mv 'gfxconfig/refere_1.gfx' 'gfxconfig/reference.gfx' mv 'gfxconfig/savage_1.gfx' 'gfxconfig/savage2000.gfx' mv 'god powers/godpow_1.bar' 'god powers/godpowers.bar' mv 'history/arrows_1.txt' 'history/arrow ships.txt' mv 'history/blackm_1.txt' 'history/black map.txt' mv 'history/buildi_1.txt' 'history/buildings.txt' mv 'history/fogofw_1.txt' 'history/fog of war.txt' mv 'history/godpow_1.txt' 'history/god powers.txt' mv 'history/herode_1.txt' 'history/hero death model.txt' mv 'history/hippop_1.txt' 'history/hippopotamus.txt' mv 'history/humans_1.txt' 'history/human soldiers.txt' mv 'history/lineof_1.txt' 'history/line of sight.txt' mv 'history/mythun_1.txt' 'history/myth units.txt' mv 'history/popula_1.txt' 'history/population.txt' mv 'history/rammin_1.txt' 'history/ramming ships.txt' mv 'history/rammmi_1.txt' 'history/rammming ships.txt' mv 'history/sieges_1.txt' 'history/siege ships.txt' mv 'history/siegew_1.txt' 'history/siege weapons.txt' mv 'history/tableo_1.xmb' 'history/table of contents.xmb' mv 'history/techs/adzeof_1.txt' 'history/techs/adze of wepwawet.txt' mv 'history/techs/aegiss_1.txt' 'history/techs/aegis shield.txt' mv 'history/techs/age1ha_1.txt' 'history/techs/age 1 hades.txt' mv 'history/techs/age1is_1.txt' 'history/techs/age 1 isis.txt' mv 'history/techs/age1lo_1.txt' 'history/techs/age 1 loki.txt' mv 'history/techs/age1od_1.txt' 'history/techs/age 1 odin.txt' mv 'history/techs/age1po_1.txt' 'history/techs/age 1 poseidon.txt' mv 'history/techs/age1ra_1.txt' 'history/techs/age 1 ra.txt' mv 'history/techs/age1se_1.txt' 'history/techs/age 1 set.txt' mv 'history/techs/age1th_1.txt' 'history/techs/age 1 thor.txt' mv 'history/techs/age1ze_1.txt' 'history/techs/age 1 zeus.txt' mv 'history/techs/age2an_1.txt' 'history/techs/age 2 anubis.txt' mv 'history/techs/age2ar_1.txt' 'history/techs/age 2 ares.txt' mv 'history/techs/age2at_1.txt' 'history/techs/age 2 athena.txt' mv 'history/techs/age2ba_1.txt' 'history/techs/age 2 bast.txt' mv 'history/techs/age2fo_1.txt' 'history/techs/age 2 forseti.txt' mv 'history/techs/age2fr_1.txt' 'history/techs/age 2 freyja.txt' mv 'history/techs/age2he_1.txt' 'history/techs/age 2 heimdall.txt' mv 'history/techs/age2he_2.txt' 'history/techs/age 2 hermes.txt' mv 'history/techs/age2pt_1.txt' 'history/techs/age 2 ptah.txt' mv 'history/techs/age3ap_1.txt' 'history/techs/age 3 aphrodite.txt' mv 'history/techs/age3ap_2.txt' 'history/techs/age 3 apollo.txt' mv 'history/techs/age3br_1.txt' 'history/techs/age 3 bragi.txt' mv 'history/techs/age3di_1.txt' 'history/techs/age 3 dionysos.txt' mv 'history/techs/age3ha_1.txt' 'history/techs/age 3 hathor.txt' mv 'history/techs/age3ne_1.txt' 'history/techs/age 3 nephthys.txt' mv 'history/techs/age3nj_1.txt' 'history/techs/age 3 njord.txt' mv 'history/techs/age3se_1.txt' 'history/techs/age 3 sekhmet.txt' mv 'history/techs/age3sk_1.txt' 'history/techs/age 3 skadi.txt' mv 'history/techs/age4ar_1.txt' 'history/techs/age 4 artemis.txt' mv 'history/techs/age4ba_1.txt' 'history/techs/age 4 baldr.txt' mv 'history/techs/age4he_1.txt' 'history/techs/age 4 hel.txt' mv 'history/techs/age4he_2.txt' 'history/techs/age 4 hephaestus.txt' mv 'history/techs/age4he_3.txt' 'history/techs/age 4 hera.txt' mv 'history/techs/age4ho_1.txt' 'history/techs/age 4 horus.txt' mv 'history/techs/age4os_1.txt' 'history/techs/age 4 osiris.txt' mv 'history/techs/age4th_1.txt' 'history/techs/age 4 thoth.txt' mv 'history/techs/age4ty_1.txt' 'history/techs/age 4 tyr.txt' mv 'history/techs/ambass_1.txt' 'history/techs/ambassadors.txt' mv 'history/techs/anastr_1.txt' 'history/techs/anastrophe.txt' mv 'history/techs/ancest_1.txt' 'history/techs/ancestors.txt' mv 'history/techs/animal_1.txt' 'history/techs/animal magnetism.txt' mv 'history/techs/archit_1.txt' 'history/techs/architects.txt' mv 'history/techs/arctic_1.txt' 'history/techs/arctic gale.txt' mv 'history/techs/arctic_2.txt' 'history/techs/arctic winds.txt' mv 'history/techs/atefcr_1.txt' 'history/techs/atef crown.txt' mv 'history/techs/atheni_1.txt' 'history/techs/athenian wall.txt' mv 'history/techs/aurora_1.txt' 'history/techs/aurora borealis.txt' mv 'history/techs/axeofv_1.txt' 'history/techs/axe of vengeance.txt' mv 'history/techs/baccha_1.txt' 'history/techs/bacchanalia.txt' mv 'history/techs/ballis_1.txt' 'history/techs/ballista tower.txt' mv 'history/techs/berser_1.txt' 'history/techs/berserkergang.txt' mv 'history/techs/boilin_1.txt' 'history/techs/boiling oil.txt' mv 'history/techs/bonebo_1.txt' 'history/techs/bone bow.txt' mv 'history/techs/bookof_1.txt' 'history/techs/book of thoth.txt' mv 'history/techs/bowsaw_1.txt' 'history/techs/bow saw.txt' mv 'history/techs/br2276_1.txt' 'history/techs/bronze weapons.txt' mv 'history/techs/brdd97_1.txt' 'history/techs/bronze weapons thor.txt' mv 'history/techs/bronze_1.txt' 'history/techs/bronze mail.txt' mv 'history/techs/bronze_2.txt' 'history/techs/bronze mail thor.txt' mv 'history/techs/bronze_3.txt' 'history/techs/bronze shields.txt' mv 'history/techs/bronze_4.txt' 'history/techs/bronze shields thor.txt' mv 'history/techs/burnin_1.txt' 'history/techs/burning pitch.txt' mv 'history/techs/burnin_2.txt' 'history/techs/burning pitch thor.txt' mv 'history/techs/callof_1.txt' 'history/techs/call of valhalla.txt' mv 'history/techs/carpen_1.txt' 'history/techs/carpenters.txt' mv 'history/techs/carrie_1.txt' 'history/techs/carrier pigeons.txt' mv 'history/techs/ceasef_1.txt' 'history/techs/cease fire.txt' mv 'history/techs/ch5cf5_1.txt' 'history/techs/heavy chariots.txt' mv 'history/techs/ch9a9d_1.txt' 'history/techs/champion slingers.txt' mv 'history/techs/ch9fb2_1.txt' 'history/techs/medium archers.txt' mv 'history/techs/cha3d9_1.txt' 'history/techs/champion archers.txt' mv 'history/techs/cha9ae_1.txt' 'history/techs/heavy axemen.txt' mv 'history/techs/champi_1.txt' 'history/techs/champion camelry.txt' mv 'history/techs/champi_2.txt' 'history/techs/heavy camels.txt' mv 'history/techs/champi_3.txt' 'history/techs/medium cavalry.txt' mv 'history/techs/champi_4.txt' 'history/techs/heavy camelry.txt' mv 'history/techs/chcf33_1.txt' 'history/techs/medium infantry.txt' mv 'history/techs/citade_1.txt' 'history/techs/citadel wall.txt' mv 'history/techs/cityof_1.txt' 'history/techs/city of the dead.txt' mv 'history/techs/co3e7a_1.txt' 'history/techs/conscript archers.txt' mv 'history/techs/co3f35_1.txt' 'history/techs/conscript migdol soldiers.txt' mv 'history/techs/co73d0_1.txt' 'history/techs/conscript barracks soldiers.txt' mv 'history/techs/co8f28_1.txt' 'history/techs/copper weapons.txt' mv 'history/techs/coc88d_1.txt' 'history/techs/copper weapons thor.txt' mv 'history/techs/coe3f7_1.txt' 'history/techs/conscript sailors.txt' mv 'history/techs/conscr_1.txt' 'history/techs/conscript cavalry.txt' mv 'history/techs/conscr_2.txt' 'history/techs/conscript longhouse soldiers.txt' mv 'history/techs/conscr_3.txt' 'history/techs/conscript hill fort soldiers.txt' mv 'history/techs/conscr_4.txt' 'history/techs/conscript infantry.txt' mv 'history/techs/copper_1.txt' 'history/techs/copper mail.txt' mv 'history/techs/copper_2.txt' 'history/techs/copper mail thor.txt' mv 'history/techs/copper_3.txt' 'history/techs/copper shields.txt' mv 'history/techs/copper_4.txt' 'history/techs/copper shields thor.txt' mv 'history/techs/create_1.txt' 'history/techs/create gold.txt' mv 'history/techs/crenel_1.txt' 'history/techs/crenellations.txt' mv 'history/techs/criosp_1.txt' 'history/techs/criosphinx.txt' mv 'history/techs/crocod_1.txt' 'history/techs/crocodopolis.txt' mv 'history/techs/deimos_1.txt' 'history/techs/deimos sword of dread.txt' mv 'history/techs/desert_1.txt' 'history/techs/desert wind.txt' mv 'history/techs/divine_1.txt' 'history/techs/divine blood.txt' mv 'history/techs/drafth_1.txt' 'history/techs/draft horses.txt' mv 'history/techs/dragon_1.txt' 'history/techs/dragonscale shields.txt' mv 'history/techs/dwarve_1.txt' 'history/techs/dwarven auger.txt' mv 'history/techs/dwarve_2.txt' 'history/techs/dwarven mail.txt' mv 'history/techs/dwarve_3.txt' 'history/techs/dwarven shields.txt' mv 'history/techs/dwarve_4.txt' 'history/techs/dwarven weapons.txt' mv 'history/techs/earthq_1.txt' 'history/techs/earthquake.txt' mv 'history/techs/eldhri_1.txt' 'history/techs/eldhrimnir kettle.txt' mv 'history/techs/electr_1.txt' 'history/techs/electrum bullets.txt' mv 'history/techs/enclos_1.txt' 'history/techs/enclosed deck.txt' mv 'history/techs/engine_1.txt' 'history/techs/engineers.txt' mv 'history/techs/enyosb_1.txt' 'history/techs/enyos bow of horror.txt' mv 'history/techs/eyesin_1.txt' 'history/techs/eyes in the forest.txt' mv 'history/techs/faceof_1.txt' 'history/techs/face of the gorgon.txt' mv 'history/techs/feetof_1.txt' 'history/techs/feet of the jackal.txt' mv 'history/techs/flames_1.txt' 'history/techs/flames of typhon.txt' mv 'history/techs/flamin_1.txt' 'history/techs/flaming weapons.txt' mv 'history/techs/floodc_1.txt' 'history/techs/flood control.txt' mv 'history/techs/floodo_1.txt' 'history/techs/flood of the nile.txt' mv 'history/techs/forest_1.txt' 'history/techs/forest fire.txt' mv 'history/techs/forgeo_1.txt' 'history/techs/forge of olympus.txt' mv 'history/techs/fortif_1.txt' 'history/techs/fortified wall.txt' mv 'history/techs/fortif_2.txt' 'history/techs/fortify town center.txt' mv 'history/techs/funera_1.txt' 'history/techs/funeral barge.txt' mv 'history/techs/funera_2.txt' 'history/techs/funeral rites.txt' mv 'history/techs/golden_1.txt' 'history/techs/golden apples.txt' mv 'history/techs/granit_1.txt' 'history/techs/granite blood.txt' mv 'history/techs/greate_1.txt' 'history/techs/greatest of fifty.txt' mv 'history/techs/greath_1.txt' 'history/techs/great hunt.txt' mv 'history/techs/guardt_1.txt' 'history/techs/guard tower.txt' mv 'history/techs/hallof_1.txt' 'history/techs/hall of thanes.txt' mv 'history/techs/hamarr_1.txt' 'history/techs/hamarrtroll.txt' mv 'history/techs/hammer_1.txt' 'history/techs/hammer of the gods.txt' mv 'history/techs/handax_1.txt' 'history/techs/hand axe.txt' mv 'history/techs/handof_1.txt' 'history/techs/hand of talos.txt' mv 'history/techs/healin_1.txt' 'history/techs/healing spring.txt' mv 'history/techs/heavya_1.txt' 'history/techs/champion axemen.txt' mv 'history/techs/heavya_2.txt' 'history/techs/heavy spearmen.txt' mv 'history/techs/heavyc_1.txt' 'history/techs/champion camels.txt' mv 'history/techs/heavyc_2.txt' 'history/techs/medium axemen.txt' mv 'history/techs/heavyc_3.txt' 'history/techs/heavy archers.txt' mv 'history/techs/heavyc_4.txt' 'history/techs/medium slingers.txt' mv 'history/techs/heavye_1.txt' 'history/techs/heavy infantry.txt' mv 'history/techs/heavyi_1.txt' 'history/techs/champion chariots.txt' mv 'history/techs/heavys_1.txt' 'history/techs/heavy elephants.txt' mv 'history/techs/heavys_2.txt' 'history/techs/champion cavalry.txt' mv 'history/techs/hierac_1.txt' 'history/techs/hieracosphinx.txt' mv 'history/techs/huntin_1.txt' 'history/techs/hunting dogs.txt' mv 'history/techs/huntre_1.txt' 'history/techs/huntress axe.txt' mv 'history/techs/husban_1.txt' 'history/techs/husbandry.txt' mv 'history/techs/ironma_1.txt' 'history/techs/iron mail.txt' mv 'history/techs/ironma_2.txt' 'history/techs/iron mail thor.txt' mv 'history/techs/ironsh_1.txt' 'history/techs/iron shields.txt' mv 'history/techs/ironsh_2.txt' 'history/techs/iron shields thor.txt' mv 'history/techs/ironwe_1.txt' 'history/techs/iron weapons.txt' mv 'history/techs/ironwe_2.txt' 'history/techs/iron weapons thor.txt' mv 'history/techs/irriga_1.txt' 'history/techs/irrigation.txt' mv 'history/techs/labyri_1.txt' 'history/techs/labyrinth of minos.txt' mv 'history/techs/leathe_1.txt' 'history/techs/leather frame shield.txt' mv 'history/techs/levyar_1.txt' 'history/techs/levy cavalry.txt' mv 'history/techs/levyba_1.txt' 'history/techs/levy hill fort soldiers.txt' mv 'history/techs/levyca_1.txt' 'history/techs/levy longhouse soldiers.txt' mv 'history/techs/levyhi_1.txt' 'history/techs/levy migdol soldiers.txt' mv 'history/techs/levyin_1.txt' 'history/techs/levy barracks soldiers.txt' mv 'history/techs/levylo_1.txt' 'history/techs/levy archers.txt' mv 'history/techs/levymi_1.txt' 'history/techs/levy infantry.txt' mv 'history/techs/lightn_1.txt' 'history/techs/lightning storm.txt' mv 'history/techs/locust_1.txt' 'history/techs/locust swarm.txt' mv 'history/techs/lonewa_1.txt' 'history/techs/lone wanderer.txt' mv 'history/techs/longse_1.txt' 'history/techs/long serpent.txt' mv 'history/techs/lordof_1.txt' 'history/techs/lord of horses.txt' mv 'history/techs/me699b_1.txt' 'history/techs/champion spearmen.txt' mv 'history/techs/me78ac_1.txt' 'history/techs/champion infantry.txt' mv 'history/techs/medium_1.txt' 'history/techs/heavy cavalry.txt' mv 'history/techs/medium_2.txt' 'history/techs/champion elephants.txt' mv 'history/techs/medium_3.txt' 'history/techs/heavy slingers.txt' mv 'history/techs/medium_4.txt' 'history/techs/medium spearmen.txt' mv 'history/techs/meteor_1.txt' 'history/techs/meteoric iron mail.txt' mv 'history/techs/mithri_1.txt' 'history/techs/mithril breastplate.txt' mv 'history/techs/monstr_1.txt' 'history/techs/monstrous rage.txt' mv 'history/techs/navalo_1.txt' 'history/techs/naval oxybeles.txt' mv 'history/techs/necrop_1.txt' 'history/techs/necropolis.txt' mv 'history/techs/newkin_1.txt' 'history/techs/new kingdom.txt' mv 'history/techs/olympi_1.txt' 'history/techs/olympic parentage.txt' mv 'history/techs/omnisc_1.txt' 'history/techs/omniscience.txt' mv 'history/techs/pestil_1.txt' 'history/techs/pestilence.txt' mv 'history/techs/phobos_1.txt' 'history/techs/phobos spear of panic.txt' mv 'history/techs/pigsti_1.txt' 'history/techs/pig sticker.txt' mv 'history/techs/prospe_1.txt' 'history/techs/prosperity.txt' mv 'history/techs/purses_1.txt' 'history/techs/purse seine.txt' mv 'history/techs/ramoft_1.txt' 'history/techs/ram of the west wind.txt' mv 'history/techs/rebell_1.txt' 'history/techs/rebellion.txt' mv 'history/techs/reinfo_1.txt' 'history/techs/reinforced hull.txt' mv 'history/techs/restor_1.txt' 'history/techs/restoration.txt' mv 'history/techs/ringgi_1.txt' 'history/techs/ring giver.txt' mv 'history/techs/roarof_1.txt' 'history/techs/roar of orthus.txt' mv 'history/techs/sacred_1.txt' 'history/techs/sacred cats.txt' mv 'history/techs/safegu_1.txt' 'history/techs/safeguard.txt' mv 'history/techs/saltam_1.txt' 'history/techs/salt amphora.txt' mv 'history/techs/sandst_1.txt' 'history/techs/sandstorm.txt' mv 'history/techs/scallo_1.txt' 'history/techs/scalloped axe.txt' mv 'history/techs/serpen_1.txt' 'history/techs/serpent spear.txt' mv 'history/techs/shaftm_1.txt' 'history/techs/shaft mine.txt' mv 'history/techs/shafts_1.txt' 'history/techs/shafts of plague.txt' mv 'history/techs/should_1.txt' 'history/techs/shoulder of talos.txt' mv 'history/techs/signal_1.txt' 'history/techs/signal fires.txt' mv 'history/techs/skelet_1.txt' 'history/techs/skeleton power.txt' mv 'history/techs/skinof_1.txt' 'history/techs/skin of the rhino.txt' mv 'history/techs/slings_1.txt' 'history/techs/slings of the sun.txt' mv 'history/techs/snowst_1.txt' 'history/techs/snow storm.txt' mv 'history/techs/sonofo_1.txt' 'history/techs/son of osiris.txt' mv 'history/techs/sonsof_1.txt' 'history/techs/sons of sleipnir.txt' mv 'history/techs/spearo_1.txt' 'history/techs/spear on the horizon.txt' mv 'history/techs/spirit_1.txt' 'history/techs/spirit of maat.txt' mv 'history/techs/spirit_2.txt' 'history/techs/spirited charge.txt' mv 'history/techs/stones_1.txt' 'history/techs/stones of red linen.txt' mv 'history/techs/stonew_1.txt' 'history/techs/stone wall.txt' mv 'history/techs/sundri_1.txt' 'history/techs/sundried mud brick.txt' mv 'history/techs/sunray_1.txt' 'history/techs/sun ray.txt' mv 'history/techs/swinea_1.txt' 'history/techs/swine array.txt' mv 'history/techs/sylvan_1.txt' 'history/techs/sylvan lore.txt' mv 'history/techs/taxcol_1.txt' 'history/techs/tax collectors.txt' mv 'history/techs/temple_1.txt' 'history/techs/temple of healing.txt' mv 'history/techs/thraci_1.txt' 'history/techs/thracian horses.txt' mv 'history/techs/thunde_1.txt' 'history/techs/thundering hooves.txt' mv 'history/techs/thuris_1.txt' 'history/techs/thurisaz rune.txt' mv 'history/techs/triera_1.txt' 'history/techs/trierarch.txt' mv 'history/techs/tuskso_1.txt' 'history/techs/tusks of apedemak.txt' mv 'history/techs/underm_1.txt' 'history/techs/undermine.txt' mv 'history/techs/underw_1.txt' 'history/techs/underworld passage.txt' mv 'history/techs/valley_1.txt' 'history/techs/valley of the kings.txt' mv 'history/techs/vaults_1.txt' 'history/techs/vaults of erebus.txt' mv 'history/techs/walkin_1.txt' 'history/techs/walking woods.txt' mv 'history/techs/watcht_1.txt' 'history/techs/watch tower.txt' mv 'history/techs/weapon_1.txt' 'history/techs/weapon of the titans.txt' mv 'history/techs/willof_1.txt' 'history/techs/will of kronos.txt' mv 'history/techs/winged_1.txt' 'history/techs/winged messenger.txt' mv 'history/techs/winter_1.txt' 'history/techs/winter harvest.txt' mv 'history/techs/wratho_1.txt' 'history/techs/wrath of the deep.txt' mv 'history/units/agamem_1.txt' 'history/units/agamemnon.txt' mv 'history/units/anim0000.txt' 'history/units/animal attractor.txt' mv 'history/units/apeofs_1.txt' 'history/units/ape of set.txt' mv 'history/units/archer_1.txt' 'history/units/archery range.txt' mv 'history/units/arkant_1.txt' 'history/units/arkantos.txt' mv 'history/units/arkantos.txt' 'history/units/arkantosman.txt' mv 'history/units/atlant_1.txt' 'history/units/atlantis wall connector.txt' mv 'history/units/atlant_2.txt' 'history/units/atlantis wall long.txt' mv 'history/units/bandit_1.txt' 'history/units/bandit migdol.txt' mv 'history/units/battle_1.txt' 'history/units/battle boar.txt' mv 'history/units/berryb_1.txt' 'history/units/berry bush.txt' mv 'history/units/bolder_1.txt' 'history/units/bolder rolling.txt' mv 'history/units/bolder_2.txt' 'history/units/bolder rolling dead.txt' mv 'history/units/bolder_3.txt' 'history/units/bolder rolling 2.txt' mv 'history/units/bolder_4.txt' 'history/units/bolder wall.txt' mv 'history/units/broken_1.txt' 'history/units/broken column.txt' mv 'history/units/carava_1.txt' 'history/units/caravan egyptian.txt' mv 'history/units/carava_2.txt' 'history/units/caravan greek.txt' mv 'history/units/carava_3.txt' 'history/units/caravan norse.txt' mv 'history/units/cataph_1.txt' 'history/units/cataphract.txt' mv 'history/units/chario_1.txt' 'history/units/chariot archer.txt' mv 'history/units/charon_1.txt' 'history/units/charon ferry.txt' mv 'history/units/cita0000.txt' 'history/units/citadel center.txt' mv 'history/units/column_1.txt' 'history/units/columns broken.txt' mv 'history/units/column_2.txt' 'history/units/columns fallen.txt' mv 'history/units/constr_1.txt' 'history/units/construction extra large.txt' mv 'history/units/constr_2.txt' 'history/units/construction large.txt' mv 'history/units/constr_3.txt' 'history/units/construction medium.txt' mv 'history/units/constr_4.txt' 'history/units/construction small.txt' mv 'history/units/croc0000.txt' 'history/units/crocodile.txt' mv 'history/units/crocod_2.txt' 'history/units/crocodile of set.txt' mv 'history/units/crossb_1.txt' 'history/units/crossbowman.txt' mv 'history/units/crowne_1.txt' 'history/units/crowned crane.txt' mv 'history/units/digpil_1.txt' 'history/units/dig pile.txt' mv 'history/units/dwar0000.txt' 'history/units/dwarven forge.txt' mv 'history/units/dwarff_1.txt' 'history/units/dwarf foundry.txt' mv 'history/units/einher_1.txt' 'history/units/einheriar.txt' mv 'history/units/excava_1.txt' 'history/units/excavation.txt' mv 'history/units/fallen_1.txt' 'history/units/fallen columns.txt' mv 'history/units/fencei_1.txt' 'history/units/fence iron.txt' mv 'history/units/fences_1.txt' 'history/units/fence stone.txt' mv 'history/units/fencew_1.txt' 'history/units/fence wood.txt' mv 'history/units/fenris_1.txt' 'history/units/fenris wolf.txt' mv 'history/units/fimbul_1.txt' 'history/units/fimbulwinter wolf.txt' mv 'history/units/firegi_1.txt' 'history/units/fire giant.txt' mv 'history/units/fishin_1.txt' 'history/units/fishing ship egyptian.txt' mv 'history/units/fishin_2.txt' 'history/units/fishing ship greek.txt' mv 'history/units/fishin_3.txt' 'history/units/fishing ship norse.txt' mv 'history/units/fish_m_1.txt' 'history/units/fish - mahi.txt' mv 'history/units/fish_p_1.txt' 'history/units/fish - perch.txt' mv 'history/units/fish_s_1.txt' 'history/units/fish - salmon.txt' mv 'history/units/flying_1.txt' 'history/units/flying purple hippo.txt' mv 'history/units/folsta_1.txt' 'history/units/folstag flag bearer.txt' mv 'history/units/frostg_1.txt' 'history/units/frost giant.txt' mv 'history/units/gargar_1.txt' 'history/units/gargarensis.txt' mv 'history/units/gatera_1.txt' 'history/units/gate ram.txt' mv 'history/units/gatera_2.txt' 'history/units/gate ram 2.txt' mv 'history/units/gazell_1.txt' 'history/units/gazelle of set.txt' mv 'history/units/ghosts_1.txt' 'history/units/ghost ship.txt' mv 'history/units/giantg_1.txt' 'history/units/giant gate ram 2.txt' mv 'history/units/giantg_2.txt' 'history/units/giant gate ram.txt' mv 'history/units/giraff_1.txt' 'history/units/giraffe.txt' mv 'history/units/giraffe.txt' 'history/units/giraffe of set.txt' mv 'history/units/gold0000.txt' 'history/units/golden lion.txt' mv 'history/units/goldmi_1.txt' 'history/units/gold mine.txt' mv 'history/units/goldmi_2.txt' 'history/units/gold mine dwarven.txt' mv 'history/units/goldmi_3.txt' 'history/units/gold mine small.txt' mv 'history/units/goldmi_4.txt' 'history/units/gold mine tiny.txt' mv 'history/units/greatb_1.txt' 'history/units/great box.txt' mv 'history/units/greatb_2.txt' 'history/units/great box cart.txt' mv 'history/units/greatb_3.txt' 'history/units/great box cart 2.txt' mv 'history/units/guardi_1.txt' 'history/units/guardian sleeping.txt' mv 'history/units/hadesd_1.txt' 'history/units/hades door.txt' mv 'history/units/hadess_1.txt' 'history/units/hades shade.txt' mv 'history/units/he001a_1.txt' 'history/units/hero greek perseus.txt' mv 'history/units/he0444_1.txt' 'history/units/hero greek hippolyta.txt' mv 'history/units/he2813_1.txt' 'history/units/hero greek bellerophon.txt' mv 'history/units/he29cd_1.txt' 'history/units/hero greek polyphemus.txt' mv 'history/units/he9adf_1.txt' 'history/units/hero greek odysseus.txt' mv 'history/units/hea167_1.txt' 'history/units/hero greek jason.txt' mv 'history/units/heal0000.txt' 'history/units/healing spring object.txt' mv 'history/units/hedc5b_1.txt' 'history/units/hero greek chiron.txt' mv 'history/units/hee615_1.txt' 'history/units/hero greek heracles.txt' mv 'history/units/hef21d_1.txt' 'history/units/hero greek theseus.txt' mv 'history/units/helepo_1.txt' 'history/units/helepolis.txt' mv 'history/units/herobo_1.txt' 'history/units/hero boar 2.txt' mv 'history/units/herobo_2.txt' 'history/units/hero boar.txt' mv 'history/units/herogr_1.txt' 'history/units/hero greek achilles.txt' mv 'history/units/herogr_2.txt' 'history/units/hero greek ajax.txt' mv 'history/units/herogr_3.txt' 'history/units/hero greek argo.txt' mv 'history/units/herogr_4.txt' 'history/units/hero greek atalanta.txt' mv 'history/units/herono_1.txt' 'history/units/hero norse.txt' mv 'history/units/herora_1.txt' 'history/units/hero ragnorok.txt' mv 'history/units/hillfo_1.txt' 'history/units/hill fort.txt' mv 'history/units/hipp0000.txt' 'history/units/hippopotamus.txt' mv 'history/units/hippoc_1.txt' 'history/units/hippocampus.txt' mv 'history/units/hippoo_1.txt' 'history/units/hippo of set.txt' mv 'history/units/hyenao_1.txt' 'history/units/hyena of set.txt' mv 'history/units/hypasp_1.txt' 'history/units/hypaspist.txt' mv 'history/units/jailwa_1.txt' 'history/units/jail wall.txt' mv 'history/units/jormun_1.txt' 'history/units/jormund elver.txt' mv 'history/units/kraken_1.txt' 'history/units/kraken.txt' mv 'history/units/kraken.txt' 'history/units/kraken spc.txt' mv 'history/units/lazerb_1.txt' 'history/units/lazer bear.txt' mv 'history/units/leviat_1.txt' 'history/units/leviathan.txt' mv 'history/units/lighth_1.txt' 'history/units/lighthouse.txt' mv 'history/units/longho_1.txt' 'history/units/longhouse.txt' mv 'history/units/lumber_1.txt' 'history/units/lumber camp.txt' mv 'history/units/mantic_1.txt' 'history/units/manticore.txt' mv 'history/units/mercen_1.txt' 'history/units/mercenary cavalry.txt' mv 'history/units/mercen_2.txt' 'history/units/mercenary.txt' mv 'history/units/migdol_1.txt' 'history/units/migdol stronghold.txt' mv 'history/units/mining_1.txt' 'history/units/mining camp.txt' mv 'history/units/monkey_1.txt' 'history/units/monkey raft.txt' mv 'history/units/monkey_2.txt' 'history/units/monkey relic.txt' mv 'history/units/monume_1.txt' 'history/units/monument 2.txt' mv 'history/units/monume_2.txt' 'history/units/monument 3.txt' mv 'history/units/monume_3.txt' 'history/units/monument 4.txt' mv 'history/units/monume_4.txt' 'history/units/monument 5.txt' mv 'history/units/mounta_1.txt' 'history/units/mountain giant.txt' mv 'history/units/navals_1.txt' 'history/units/naval shipyard.txt' mv 'history/units/nemean_1.txt' 'history/units/nemean lion.txt' mv 'history/units/nidh0000.txt' 'history/units/nidhogg.txt' mv 'history/units/oakaut_1.txt' 'history/units/oak autumn.txt' mv 'history/units/oaktre_1.txt' 'history/units/oak tree.txt' mv 'history/units/oldman_1.txt' 'history/units/old man.txt' mv 'history/units/oxcart_1.txt' 'history/units/ox cart.txt' mv 'history/units/petrob_1.txt' 'history/units/petrobolos.txt' mv 'history/units/petsuc_1.txt' 'history/units/petsuchos.txt' mv 'history/units/pharao_1.txt' 'history/units/pharaoh of osiris.txt' mv 'history/units/pharao_2.txt' 'history/units/pharaoh secondary.txt' mv 'history/units/phoeni_1.txt' 'history/units/phoenix egg.txt' mv 'history/units/pigspe_1.txt' 'history/units/pig special.txt' mv 'history/units/pinede_1.txt' 'history/units/pine dead.txt' mv 'history/units/pinesn_1.txt' 'history/units/pine snow.txt' mv 'history/units/pirate_1.txt' 'history/units/pirate ship.txt' mv 'history/units/plenty_1.txt' 'history/units/plenty vault koth.txt' mv 'history/units/plenty_2.txt' 'history/units/plenty vault.txt' mv 'history/units/polarb_1.txt' 'history/units/polar bear.txt' mv 'history/units/portab_1.txt' 'history/units/portable ram.txt' mv 'history/units/poseid_1.txt' 'history/units/poseidon statue.txt' mv 'history/units/prodro_1.txt' 'history/units/prodromos.txt' mv 'history/units/pyrami_1.txt' 'history/units/pyramid large.txt' mv 'history/units/raidin_1.txt' 'history/units/raiding cavalry.txt' mv 'history/units/ramm0000.txt' 'history/units/ramming ship egyptian.txt' mv 'history/units/rammin_2.txt' 'history/units/ramming ship greek.txt' mv 'history/units/rammin_3.txt' 'history/units/ramming ship norse.txt' mv 'history/units/reginl_1.txt' 'history/units/reginleif.txt' mv 'history/units/rhinoc_1.txt' 'history/units/rhinoceros of set.txt' mv 'history/units/rhinoc_2.txt' 'history/units/rhinocerous.txt' mv 'history/units/savann_1.txt' 'history/units/savannah tree.txt' mv 'history/units/scaffo_1.txt' 'history/units/scaffolding.txt' mv 'history/units/scorpi_1.txt' 'history/units/scorpion man.txt' mv 'history/units/seasna_1.txt' 'history/units/sea snake.txt' mv 'history/units/seatur_1.txt' 'history/units/sea turtle.txt' mv 'history/units/sentin_1.txt' 'history/units/sentinel main.txt' mv 'history/units/settle_1.txt' 'history/units/settlement level 1.txt' mv 'history/units/settle_2.txt' 'history/units/settlement.txt' mv 'history/units/shabak_1.txt' 'history/units/shaba ka.txt' mv 'history/units/shadeo_1.txt' 'history/units/shade of erebus.txt' mv 'history/units/shadeo_2.txt' 'history/units/shade of hades.txt' mv 'history/units/shipwr_1.txt' 'history/units/shipwreck.txt' mv 'history/units/sieg0000.txt' 'history/units/siege ship egyptian.txt' mv 'history/units/siegec_1.txt' 'history/units/siege camp.txt' mv 'history/units/sieges_2.txt' 'history/units/siege ship greek.txt' mv 'history/units/sieges_3.txt' 'history/units/siege ship norse.txt' mv 'history/units/sieget_1.txt' 'history/units/siege tower.txt' mv 'history/units/skrael_1.txt' 'history/units/skraeling.txt' mv 'history/units/sleepi_1.txt' 'history/units/sleeping guardian.txt' mv 'history/units/st9642_1.txt' 'history/units/statue pharaoh.txt' mv 'history/units/statue_1.txt' 'history/units/statue lion left.txt' mv 'history/units/statue_2.txt' 'history/units/statue lion right.txt' mv 'history/units/statue_3.txt' 'history/units/statue of lightning.txt' mv 'history/units/statue_4.txt' 'history/units/statue of major god.txt' mv 'history/units/storeh_1.txt' 'history/units/storehouse.txt' mv 'history/units/swordb_1.txt' 'history/units/sword bearers.txt' mv 'history/units/tamari_1.txt' 'history/units/tamarisk tree.txt' mv 'history/units/taproo_1.txt' 'history/units/taproot large.txt' mv 'history/units/temp0000.txt' 'history/units/temple underworld.txt' mv 'history/units/thorha_1.txt' 'history/units/thor hammer haft.txt' mv 'history/units/thorha_2.txt' 'history/units/thor hammer head.txt' mv 'history/units/throwi_1.txt' 'history/units/throwing axeman.txt' mv 'history/units/titanb_1.txt' 'history/units/titan bad.txt' mv 'history/units/transp_1.txt' 'history/units/transport ship egyptian.txt' mv 'history/units/transp_2.txt' 'history/units/transport ship greek.txt' mv 'history/units/transp_3.txt' 'history/units/transport ship norse.txt' mv 'history/units/trojan_1.txt' 'history/units/trojan horse.txt' mv 'history/units/troyga_1.txt' 'history/units/troy gate.txt' mv 'history/units/troywa_1.txt' 'history/units/troy wall connector.txt' mv 'history/units/troywa_2.txt' 'history/units/troy wall long.txt' mv 'history/units/troywa_3.txt' 'history/units/troy wall short.txt' mv 'history/units/unde0000.txt' 'history/units/underworld passage spc.txt' mv 'history/units/villag_1.txt' 'history/units/villager egyptian.txt' mv 'history/units/villag_2.txt' 'history/units/villager greek.txt' mv 'history/units/villag_3.txt' 'history/units/villager norse.txt' mv 'history/units/waaa05_1.txt' 'history/units/walking woods pine.txt' mv 'history/units/waca6e_1.txt' 'history/units/walking woods savannah.txt' mv 'history/units/walk0000.txt' 'history/units/walking woods oak.txt' mv 'history/units/walkin_2.txt' 'history/units/walking woods palm.txt' mv 'history/units/walkin_3.txt' 'history/units/walking woods pine dead.txt' mv 'history/units/walkin_4.txt' 'history/units/walking woods pine snow.txt' mv 'history/units/wallat_1.txt' 'history/units/wall atlantis connector.txt' mv 'history/units/wallat_2.txt' 'history/units/wall atlantis long.txt' mv 'history/units/wallco_1.txt' 'history/units/wall connector.txt' mv 'history/units/walllo_1.txt' 'history/units/wall long.txt' mv 'history/units/wallme_1.txt' 'history/units/wall medium.txt' mv 'history/units/wallsh_1.txt' 'history/units/wall short.txt' mv 'history/units/warele_1.txt' 'history/units/war elephant.txt' mv 'history/units/waterb_1.txt' 'history/units/water buffalo.txt' mv 'history/units/wellof_1.txt' 'history/units/well of urd.txt' mv 'history/units/wonder_1.txt' 'history/units/wonder spc.txt' mv 'loadin_1.bmp' 'loading1024.bmp' mv 'loadin_2.bmp' 'loading1280.bmp' mv 'loadin_3.bmp' 'loading640.bmp' mv 'loadin_4.bmp' 'loading800.bmp' mv 'models/sfxabo_1.lng' 'models/sfx a bolt.lng' mv 'models/sfxaos_1.lng' 'models/sfx a osiris.lng' mv 'models/sfxape_1.lng' 'models/sfx a petosuchus.lng' mv 'models/sfxgli_1.lng' 'models/sfx g lightning bolt large.lng' mv 'models/sfxgli_2.lng' 'models/sfx g lightning bolt medium.lng' mv 'models/sfxgli_3.lng' 'models/sfx g lightning bolt small.lng' mv 'moviep_1.exe' 'movieplayer.exe' mv 'rm/acropo_1.xml' 'rm/acropolis.xml' mv 'rm/acropo_1.xs' 'rm/acropolis.xs' mv 'rm/archip_1.xml' 'rm/archipelago.xml' mv 'rm/archip_1.xs' 'rm/archipelago.xs' mv 'rm/fastra_1.set' 'rm/fastrandom.set' mv 'rm/ghostl_1.xml' 'rm/ghost lake.xml' mv 'rm/ghostl_1.xs' 'rm/ghost lake.xs' mv 'rm/jotunh_1.xml' 'rm/jotunheim.xml' mv 'rm/jotunh_1.xs' 'rm/jotunheim.xs' mv 'rm/kingof_1.xml' 'rm/king of the hill.xml' mv 'rm/kingof_1.xs' 'rm/king of the hill.xs' mv 'rm/medite_1.xml' 'rm/mediterranean.xml' mv 'rm/medite_1.xs' 'rm/mediterranean.xs' mv 'rm/random_1.set' 'rm/randommaps.set' mv 'rm/rivern_1.xml' 'rm/river nile.xml' mv 'rm/rivern_1.xs' 'rm/river nile.xs' mv 'rm/seaofw_1.xml' 'rm/sea of worms.xml' mv 'rm/seaofw_1.xs' 'rm/sea of worms.xs' mv 'rm/sudden_1.xml' 'rm/sudden death.xml' mv 'rm/sudden_1.xs' 'rm/sudden death.xs' mv 'rm/teammi_1.xml' 'rm/team migration.xml' mv 'rm/teammi_1.xs' 'rm/team migration.xs' mv 'rm/theunk_1.xml' 'rm/the unknown.xml' mv 'rm/theunk_1.xs' 'rm/the unknown.xs' mv 'rm/valley_1.xml' 'rm/valley of kings.xml' mv 'rm/valley_1.xs' 'rm/valley of kings.xs' mv 'rm/vinlan_1.xml' 'rm/vinlandsaga.xml' mv 'rm/vinlan_1.xs' 'rm/vinlandsaga.xs' mv 'rm/wateri_1.xml' 'rm/watering hole.xml' mv 'rm/wateri_1.xs' 'rm/watering hole.xs' mv 'rockal_1.dll' 'rockalldll.dll' mv 'rts3ba_1.txt' 'rts3banglog.txt' mv 'scenario/scenar_1.bar' 'scenario/scenarios.bar' mv 'sound/aheroh_1.wav' 'sound/aherohasfallen.wav' mv 'sound/cinematics/04_in/armyar_1.wav' 'sound/cinematics/04_in/armyarrive.wav' mv 'sound/cinematics/04_in/music1_1.mp3' 'sound/cinematics/04_in/music 1.mp3' mv 'sound/cinematics/04_in/music2_1.mp3' 'sound/cinematics/04_in/music 2.mp3' mv 'sound/cinematics/04_in/wavesb_1.mp3' 'sound/cinematics/04_in/wavesbirdsmix.mp3' mv 'sound/cinematics/04_out/wave0000.mp3' 'sound/cinematics/04_out/wavesbirds.mp3' mv 'sound/cinematics/05_out/boatsp_1.mp3' 'sound/cinematics/05_out/boatspass.mp3' mv 'sound/cinematics/05_out/kamosl_1.mp3' 'sound/cinematics/05_out/kamosleap.mp3' mv 'sound/cinematics/05_out/leviat_1.mp3' 'sound/cinematics/05_out/leviathangrunt.mp3' mv 'sound/cinematics/05_out/musi0000.mp3' 'sound/cinematics/05_out/music.mp3' mv 'sound/cinematics/1/wave0001.mp3' 'sound/cinematics/1/waves.mp3' mv 'sound/cinematics/3/ambi0000.mp3' 'sound/cinematics/3/ambience.mp3' mv 'sound/cinematics/3/boat0000.mp3' 'sound/cinematics/3/boatpass.mp3' mv 'sound/cinematics/3/wave0002.mp3' 'sound/cinematics/3/waves.mp3' mv 'sound/cinematics/a/dreamt_1.mp3' 'sound/cinematics/a/dreamthing.mp3' mv 'sound/cinematics/a/lostso_1.mp3' 'sound/cinematics/a/lostsouls.mp3' mv 'sound/cinematics/a/wave0003.mp3' 'sound/cinematics/a/waves.mp3' mv 'sound/dialog/kastor_1.mp3' 'sound/dialog/kastor061.mp3' mv 'sound/dialog/kastor_2.mp3' 'sound/dialog/kastor062.mp3' mv 'sound/music/culture/greekt_1.mp3' 'sound/music/culture/greek to me.mp3' mv 'sound/music/culture/ndnile_1.mp3' 'sound/music/culture/n. d. nile.mp3' mv 'sound/music/culture/ofnors_1.mp3' 'sound/music/culture/of norse not!.mp3' mv 'sound/music/fight/iwishi_1.mp3' 'sound/music/fight/i wish i could throw shapes.mp3' mv 'sound/music/fight/oi_tha_1.mp3' 'sound/music/fight/oi, that pops!!!.mp3' mv 'sound/music/fight/rotloa_1.mp3' 'sound/music/fight/rot loaf.mp3' mv 'sound/music/fight/thefir_1.mp3' 'sound/music/fight/the fire brigade.mp3' mv 'sound/music/interface/acatna_1.mp3' 'sound/music/interface/a cat named mittens.mp3' mv 'sound/music/interface/ganksn_1.mp3' "sound/music/interface/gank sneakin'.mp3" mv 'sound/music/interface/ifyouc_1.mp3' 'sound/music/interface/if you can use a doorknob.mp3' mv 'sound/music/interface/ma_ams_1.mp3' "sound/music/interface/ma'am...some other sunset.mp3" mv 'sound/music/quiet/behold_1.mp3' 'sound/music/quiet/behold the great science fi (mellow mix).mp3' mv 'sound/music/quiet/eatyou_1.mp3' 'sound/music/quiet/eat your potatoes (mellow mix).mp3' mv 'sound/music/quiet/_finel_1.mp3' 'sound/music/quiet/(fine layers of) slaysenflite (mellow mix).mp3' mv 'sound/music/quiet/flavor_1.mp3' 'sound/music/quiet/flavor cats (in the comfort zone) (mellow mix).mp3' mv 'sound/music/quiet/neverm_1.mp3' 'sound/music/quiet/never mind the slacks and bashers (mellow mix).mp3' mv 'sound/music/quiet/thebal_1.mp3' 'sound/music/quiet/the ballad of ace lebaron (mellow mix).mp3' mv 'sound/music/standard/beho0000.mp3' 'sound/music/standard/behold the great science fi.mp3' mv 'sound/music/standard/eaty0000.mp3' 'sound/music/standard/eat your potatoes.mp3' mv 'sound/music/standard/_fin0000.mp3' 'sound/music/standard/(fine layers of) slaysenflite.mp3' mv 'sound/music/standard/flav0000.mp3' 'sound/music/standard/flavor cats (in the comfort zone).mp3' mv 'sound/music/standard/neve0000.mp3' 'sound/music/standard/never mind the slacks and bashers.mp3' mv 'sound/music/standard/theb0000.mp3' 'sound/music/standard/the ballad of ace lebaron.mp3' mv 'startup/gamese_1.bar' 'startup/gamesettings.bar' mv 'textures/cursors/co0576_1.cur' 'textures/cursors/command god no isis mono icon.cur' mv 'textures/cursors/co06af_1.cur' 'textures/cursors/command no god power mono icon.cur' mv 'textures/cursors/co085a_1.cur' 'textures/cursors/cursor_hyperlink.cur' mv 'textures/cursors/co0d51_1.cur' 'textures/cursors/command gather fish mono icon.cur' mv 'textures/cursors/co0ddb_1.cur' 'textures/cursors/command guard icon.cur' mv 'textures/cursors/co17c2_1.cur' 'textures/cursors/command resource drop off gold mono icon.cur' mv 'textures/cursors/co1b52_1.cur' 'textures/cursors/cursor_ankh.cur' mv 'textures/cursors/co1ec7_1.cur' 'textures/cursors/command gather berries icon.cur' mv 'textures/cursors/co36e9_1.cur' 'textures/cursors/command cursor icon.cur' mv 'textures/cursors/co3d45_1.cur' 'textures/cursors/command no god power icon.cur' mv 'textures/cursors/co3e43_1.cur' 'textures/cursors/command herdable gaia mono icon.cur' mv 'textures/cursors/co4014_1.cur' 'textures/cursors/command gather gold icon.cur' mv 'textures/cursors/co4096_1.cur' 'textures/cursors/command gather wood icon.cur' mv 'textures/cursors/co40d2_1.cur' 'textures/cursors/command gather food icon.cur' mv 'textures/cursors/co41d0_1.cur' 'textures/cursors/command gather fish icon.cur' mv 'textures/cursors/co4648_1.cur' 'textures/cursors/command gather berries mono icon.cur' mv 'textures/cursors/co48a6_1.cur' 'textures/cursors/command patrol icon.cur' mv 'textures/cursors/co4c41_1.cur' 'textures/cursors/command cursor mono icon.cur' mv 'textures/cursors/co4e87_1.cur' 'textures/cursors/command empower mono icon.cur' mv 'textures/cursors/co5d3d_1.cur' 'textures/cursors/command convert mono icon.cur' mv 'textures/cursors/co6199_1.cur' 'textures/cursors/command god no isis icon.cur' mv 'textures/cursors/co61d1_1.cur' 'textures/cursors/command resource drop off gold icon.cur' mv 'textures/cursors/co63d7_1.cur' 'textures/cursors/command convert icon.cur' mv 'textures/cursors/co67c2_1.cur' 'textures/cursors/command resource drop off food mono icon.cur' mv 'textures/cursors/co7449_1.cur' 'textures/cursors/command god power mono icon.cur' mv 'textures/cursors/co7874_1.cur' 'textures/cursors/command resource drop off wood mono icon.cur' mv 'textures/cursors/co7886_1.cur' 'textures/cursors/cursor_gather.cur' mv 'textures/cursors/co846f_1.cur' 'textures/cursors/command repair icon.cur' mv 'textures/cursors/co8c08_1.cur' 'textures/cursors/command god power icon.cur' mv 'textures/cursors/co8ebb_1.cur' 'textures/cursors/command guard mono icon.cur' mv 'textures/cursors/co8ff0_1.cur' 'textures/cursors/command help icon.cur' mv 'textures/cursors/co9852_1.cur' 'textures/cursors/command gather favor icon.cur' mv 'textures/cursors/coa0a9_1.cur' 'textures/cursors/command unboard icon.cur' mv 'textures/cursors/coa29a_1.cur' 'textures/cursors/command help mono icon.cur' mv 'textures/cursors/coa2d1_1.cur' 'textures/cursors/command resource drop off food icon.cur' mv 'textures/cursors/cob08a_1.cur' 'textures/cursors/command dangerous gaia mono icon.cur' mv 'textures/cursors/coba58_1.cur' 'textures/cursors/command herdable gaia icon.cur' mv 'textures/cursors/cobfd6_1.cur' 'textures/cursors/command build icon.cur' mv 'textures/cursors/cod7b8_1.cur' 'textures/cursors/command dangerous gaia icon.cur' mv 'textures/cursors/codcf9_1.cur' 'textures/cursors/command patrol mono icon.cur' mv 'textures/cursors/code16_1.cur' 'textures/cursors/command build mono icon.cur' mv 'textures/cursors/coe410_1.cur' 'textures/cursors/command gather wood mono icon.cur' mv 'textures/cursors/coe4c0_1.cur' 'textures/cursors/command gather gold mono icon.cur' mv 'textures/cursors/coe690_1.cur' 'textures/cursors/command resource drop off wood icon.cur' mv 'textures/cursors/coe8ee_1.cur' 'textures/cursors/command gather favor mono icon.cur' mv 'textures/cursors/coeb2a_1.cur' 'textures/cursors/command repair mono icon.cur' mv 'textures/cursors/coec91_1.cur' 'textures/cursors/command gather food mono icon.cur' mv 'textures/cursors/coed8a_1.cur' 'textures/cursors/command gather resource mono icon.cur' mv 'textures/cursors/cof31e_1.cur' 'textures/cursors/command resource drop off mono icon.cur' mv 'textures/cursors/cof67e_1.cur' 'textures/cursors/command unboard mono icon.cur' mv 'textures/cursors/comman_1.cur' 'textures/cursors/cursor_attack.cur' mv 'textures/cursors/comman_2.cur' 'textures/cursors/command attack mono icon.cur' mv 'textures/cursors/comman_3.cur' 'textures/cursors/command board icon.cur' mv 'textures/cursors/comman_4.cur' 'textures/cursors/command board mono icon.cur' mv 'textures/cursors/cu29a0_1.cur' 'textures/cursors/cursor_pray mono.cur' mv 'textures/cursors/cu3102_1.cur' 'textures/cursors/cursor_hyperlink mono.cur' mv 'textures/cursors/cu3753_1.cur' 'textures/cursors/cursor_build mono.cur' mv 'textures/cursors/cu5567_1.cur' 'textures/cursors/cursor_pray.cur' mv 'textures/cursors/cu6cd0_1.cur' 'textures/cursors/cursor_workon.cur' mv 'textures/cursors/cu89cd_1.cur' 'textures/cursors/cursor_gather mono.cur' mv 'textures/cursors/cu8a47_1.cur' 'textures/cursors/cursor_workon mono.cur' mv 'textures/cursors/cub6eb_1.cur' 'textures/cursors/command resource drop off icon.cur' mv 'textures/cursors/cuc6cb_1.cur' 'textures/cursors/cursor_build.cur' mv 'textures/cursors/cucae1_1.cur' 'textures/cursors/command gather resource icon.cur' mv 'textures/cursors/cue611_1.cur' 'textures/cursors/cursor_pointer.cur' mv 'textures/cursors/cue9f1_1.cur' 'textures/cursors/cursor_pointer mono.cur' mv 'textures/cursors/cursor_1.cur' 'textures/cursors/cursor_ankh mono.cur' mv 'textures/cursors/cursor_2.cur' 'textures/cursors/command empower icon.cur' mv 'textures/cursors/cursor_3.cur' 'textures/cursors/cursor_attack mono.cur' mv 'textures/cursors/cursor_4.cur' 'textures/cursors/command attack icon.cur' mv 'textures/cursors/sc7b34_1.cur' 'textures/cursors/scale_vert cursor.cur' mv 'textures/cursors/scale__1.cur' 'textures/cursors/scale_both cursor mono.cur' mv 'textures/cursors/scale__2.cur' 'textures/cursors/scale_both cursor.cur' mv 'textures/cursors/scale__3.cur' 'textures/cursors/scale_horiz cursor mono.cur' mv 'textures/cursors/scale__4.cur' 'textures/cursors/scale_horiz cursor.cur' mv 'textures/cursors/scbed3_1.cur' 'textures/cursors/scale_vert cursor mono.cur' mv 'trigger/basicv_1.xs' 'trigger/basicvcnomain.xs' mv 'trigger/rmsudd_1.xs' 'trigger/rmsuddendeathvc.xs' mv 'zoneac_1.dll' 'zoneaccessapi.dll' ) # 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-alpha-centauri.sh0000755000000000000000000002040014471751340015051 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Alpha Centauri ### script_version=20240710.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='alpha-centauri' GAME_NAME='Alpha Centauri' ## gog.com Windows installer ARCHIVE_BASE_0_NAME='setup_sid_meiers_alpha_centauri_2.0.2.23.exe' ARCHIVE_BASE_0_MD5='6c9bd7e1cf88fdbfa0e75f694bf8b0e5' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_VERSION='6.0b-gog2.0.2.23' ARCHIVE_BASE_0_SIZE='609309' ARCHIVE_BASE_0_URL='https://www.gog.com/game/sid_meiers_alpha_centauri' ## Loki native Linux engine ARCHIVE_REQUIRED_ENGINE_NAME='alpha-centauri-linux.tar.xz' ARCHIVE_REQUIRED_ENGINE_MD5='a13676f2bdf1d3570ebb1835c2e4b2e8' ARCHIVE_REQUIRED_ENGINE_URL='https://downloads.dotslashplay.it/games/alpha-centauri/' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='alpha-centauri-icons.2022-10-04.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='9293b41c5b0ab978ff007f78d29fbbcf' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/alpha-centauri/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_PATH='.' CONTENT_GAME_BIN_FILES=' smac smac.dynamic smacx smacx.dynamic smacpack' CONTENT_GAME_MOVIES_FILES=' data/movies' CONTENT_FONTS_DATA_FILES=' alphc___.ttf arialnbi.ttf arialnb.ttf arialni.ttf arialn.ttf' CONTENT_FONTS0_DATA_PATH='data/fonts' CONTENT_FONTS0_DATA_FILES=' arialb.ttf ariali.ttf arialr.ttf loki_times.ttf' CONTENT_GAME_DATA_FILES=' data/facs data/fx data/maps data/projs data/scenarios data/techs data/voices data/alieniscript.txt data/alienuscript.txt data/alpha.txt data/alphax.txt data/angels.txt data/basename.txt data/believe.txt data/blurbs.txt data/blurbsx.txt data/brian.txt data/caretake.txt data/concepts.txt data/conceptsx.txt data/credits.txt data/cyborg.txt data/drone.txt data/facedit.txt data/faction.txt data/flavor.txt data/fungboy.txt data/gaians.txt data/help.txt data/helpx.txt data/hive.txt data/holobook.txt data/humanludes.txt data/interludea.txt data/interlude.txt data/interludex.txt data/jackal.txt data/labels.txt data/logfile.txt data/menu.txt data/monument.txt data/morgan.txt data/movlist.txt data/peace.txt data/pirates.txt data/planets.txt data/scenario.txt data/script.txt data/sid.txt data/spartans.txt data/system.txt data/techlongs.txt data/techshorts.txt data/tutor.txt data/univ.txt data/usurper.txt data/xscript.txt data/*.cfg data/*.cvr data/*.flc data/*.pcx data/*.sys' CONTENT_GAME0_DATA_PATH='.' CONTENT_GAME0_DATA_FILES=' data' CONTENT_DOC_DATA_FILES=' manual.pdf' CONTENT_DOC0_DATA_PATH="${CONTENT_PATH_DEFAULT}/data" CONTENT_DOC0_DATA_FILES=' readme.txt readme_ac.txt smac_xp2000_readme.txt' APP_MAIN_EXE='smac.dynamic' APP_MAIN_ICON='terran.exe' ## Work around font rendering issues. APP_MAIN_PRERUN=' # Work around font rendering issues export FREETYPE_PROPERTIES="truetype:interpreter-version=35" ' APP_SMACX_ID="${GAME_ID}-alien-crossfire" APP_SMACX_NAME="$GAME_NAME - Alien Crossfire" APP_SMACX_EXE='smacx.dynamic' APP_SMACX_ICON='terranx.exe' ## Work around font rendering issues. APP_SMACX_PRERUN="$APP_MAIN_PRERUN" PACKAGES_LIST=' PKG_BIN PKG_MOVIES PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_MOVIES PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libEGL.so.1 libfreetype.so.6 libm.so.6 libpthread.so.0 libSDL-1.2.so.0 libSDL_mixer-1.2.so.0 libSDL_ttf-2.0.so.0 libsmpeg-0.4.so.0 libz.so.1' PKG_MOVIES_ID="${GAME_ID}-movies" PKG_MOVIES_DESCRIPTION='movies' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PRELOAD_HACKS_LIST=' HACK_SDL1COMPAT' # LD_PRELOAD shim allowing the old engine to run on top of latest SDL1 library # cf. https://github.com/ZeroPointEnergy/smacshim HACK_SDL1COMPAT_NAME='smacshim' HACK_SDL1COMPAT_DESCRIPTION='LD_PRELOAD shim allowing the old engine to run on top of latest SDL1 library cf. https://github.com/ZeroPointEnergy/smacshim' HACK_SDL1COMPAT_PACKAGE='PKG_BIN' HACK_SDL1COMPAT_SOURCE=' #define _GNU_SOURCE #include #include void *__builtin_new(size_t size) { return malloc(size); } void __builtin_delete(void *ptr) { free(ptr); } void *__builtin_vec_new(size_t size) { return malloc(size); } void __builtin_vec_delete(void *ptr) { free(ptr); } ' # Convert text files to UNIX-style line breaks SCRIPT_DEPS="${SCRIPT_DEPS:-} dos2unix" # Convert movies from the original format SCRIPT_DEPS="${SCRIPT_DEPS:-} ffmpeg mplex" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Check for the presence of the archive providing the native Linux engine archive_initialize_required \ 'ARCHIVE_ENGINE' \ 'ARCHIVE_REQUIRED_ENGINE' # Check that the "rename" command is available unset RENAME_CMD ## On Arch Linux is is provided under the name "perl-rename". for rename_cmd in 'perl-rename' 'rename'; do if command -v "$rename_cmd" >/dev/null 2>&1; then RENAME_CMD="$rename_cmd" break fi done if [ -z "${RENAME_CMD:-}" ]; then error_dependency_not_found 'rename' exit 1 fi # Build and include the LD_PRELOAD shim required for the old engine to run on top of modern libraries hacks_inclusion_default # Extract game data archive_extraction_default archive_extraction 'ARCHIVE_ENGINE' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Drop unused alternative art assets. rm --force --recursive \ 'alternative art' \ 'color blind palette' ## Replace spaces in file paths by underscores. find . -depth -name '* *' -execdir \ "$RENAME_CMD" 's/ /_/g' {} + ## Convert text files to UNIX-style line breaks. find . -type f -name '*.txt' -exec \ dos2unix --quiet {} + ## Move data files into the expected paths. mkdir 'data' mv --target-directory='data' \ 'facs' \ 'fx' \ 'maps' \ 'projs' \ 'techs' \ 'voices' \ *.cfg \ *.cvr \ *.flc \ *.pcx \ *.sys \ *.txt mv 'scenarios/alpha_centauri_scenarios' 'data/scenarios' ## Convert movies from the original format. FFMPEG_OPTIONS_COMMON='-loglevel quiet' FFMPEG_OPTIONS_VIDEO='-codec:v mpeg1video -b:v 1727k -minrate 1727k -maxrate 1727k -r 29.97' FFMPEG_OPTIONS_AUDIO='-codec:a mp2 -ar 44100' MPLEX_OPTIONS='--verbose 0 --video-buffer 500' case "$(messages_language)" in ('fr') message_begin='Conversion des fichiers vidéo, cette étape peut prendre plusieurs minutes…\n' message_file='Conversion de %s…\n' message_done='Conversion terminée\n' ;; ('en'|*) message_begin='Converting video files, this will take several minutes…\n' message_file='Converting %s…\n' message_done='Converting done\n' ;; esac printf "$message_begin" mkdir 'data/movies' for source_file in movies/*.wve; do stream_video="${source_file%.wve}.m1v" stream_audio="${source_file%.wve}.mp2" destination_file="data/movies/$(basename "$source_file" .wve).mpg" printf "$message_file" "$source_file" ffmpeg -i "$source_file" $FFMPEG_OPTIONS_COMMON -map v $FFMPEG_OPTIONS_VIDEO "$stream_video" ffmpeg -i "$source_file" $FFMPEG_OPTIONS_COMMON -map a $FFMPEG_OPTIONS_AUDIO "$stream_audio" rm "$source_file" mplex $MPLEX_OPTIONS --output "$destination_file" "$stream_video" "$stream_audio" rm "$stream_video" "$stream_audio" done printf "$message_done" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Link the fonts in the hardcoded path the game engine expects. fonts_source=$(path_fonts_ttf) fonts_destination="$(package_path 'PKG_DATA')$(path_game_data)/data/fonts" mkdir --parents "$fonts_destination" for font_file in \ 'alphc___.ttf' \ 'arialr.ttf' \ 'arialb.ttf' \ 'ariali.ttf' \ 'arialn.ttf' \ 'arialnb.ttf' \ 'arialni.ttf' \ 'arialnbi.ttf' \ 'loki_times.ttf' do ln --symbolic "${fonts_source}/${font_file}" "$fonts_destination" done # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-anachronox.sh0000755000000000000000000000461714471751340014330 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2016 Mopi set -o errexit ### # Anachronox ### script_version=20240710.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='anachronox' GAME_NAME='Anachronox' ARCHIVE_BASE_1_NAME='setup_anachronox_1.02_(22258).exe' ARCHIVE_BASE_1_MD5='4e23d4f7637f6914a7cd6c13feb7ad7d' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='1074901' ARCHIVE_BASE_1_VERSION='1.02-gog22258' ARCHIVE_BASE_1_URL='https://www.gog.com/game/anachronox' ARCHIVE_BASE_0_NAME='setup_anachronox_2.0.0.28.exe' ARCHIVE_BASE_0_MD5='a9e148972e51a4980a2531d12a85dfc0' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1100000' ARCHIVE_BASE_0_VERSION='1.02-gog2.0.0.28' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' anoxdata/miles anoxdata/plugins anoxaux.dll anoxgfx.dll gamex86.dll ijl15.dll libpng13a.dll metagl.dll mss32.dll msvcp60.dll msvcrt.dll patch.dll ref_gl.dll zlib.dll afscmd.exe anox.exe autorun.exe dparse.exe gct setup.exe particleman.exe setupanox.exe autorun.inf gct setup.ini mscomctl.ocx' CONTENT_GAME_DATA_FILES=' anoxdata anox.ico anachronox_word.jpg' CONTENT_DOC_DATA_FILES=' manual.pdf readme.htm anachronox patch 1_02.rtf *readme.txt' USER_PERSISTENT_DIRECTORIES=' anoxdata/save' USER_PERSISTENT_FILES=' *.ini anoxdata/nokill.*' APP_MAIN_EXE='anox.exe' APP_MAIN_ICON='anox.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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-baba-is-you.sh0000755000000000000000000000605114471751340014272 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Erwann Duclos # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2023 HS-157 set -o errexit ### # Baba Is You ### script_version=20240531.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='baba-is-you' GAME_NAME='Baba Is You' ARCHIVE_BASE_1_NAME='BIY_linux.tar.gz' ARCHIVE_BASE_1_MD5='d32487c5a6789c6c6b24064088708cab' ARCHIVE_BASE_1_SIZE='121230' ARCHIVE_BASE_1_VERSION='478f-itch.2024.02.24' ARCHIVE_BASE_1_URL='https://hempuli.itch.io/baba' ## Support for this archive is disabled until ./play.it can handle name collisions, ## cf. https://forge.dotslashplay.it/play.it/scripts/-/issues/355 #ARCHIVE_BASE_0_NAME='BIY_linux.tar.gz' #ARCHIVE_BASE_0_MD5='555d408a45b47d68042bb82e9a2ebcfc' #ARCHIVE_BASE_0_SIZE='150000' #ARCHIVE_BASE_0_VERSION='477-itch.2023.03.07' CONTENT_PATH_DEFAULT='Baba Is You' CONTENT_GAME_BIN64_PATH="${CONTENT_PATH_DEFAULT}/bin64" CONTENT_GAME_BIN64_FILES=' Chowdren' CONTENT_GAME_BIN32_PATH="${CONTENT_PATH_DEFAULT}/bin32" CONTENT_GAME_BIN32_FILES=' Chowdren' CONTENT_GAME_DATA_FILES=' Data icon.bmp Assets.dat gamecontrollerdb.txt' APP_MAIN_EXE_BIN64='Chowdren' APP_MAIN_EXE_BIN32='Chowdren' APP_MAIN_ICON='icon.bmp' ## Work around the shipped SDL lack of support for Wayland. ## Using system-provided SDL is not an option because with it the game fails to render anything, with the following error: ## Could not create OpenGL context: Could not create EGL context (call to eglCreateContext failed, reporting an error of EGL_BAD_ATTRIBUTE) APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # Work around the shipped SDL lack of support for Wayland if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' 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 . "$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-baldurs-gate-3.sh0000755000000000000000000020310014471751340014666 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Baldur's Gate 3 ### script_version=20240703.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='baldurs-gate-3' GAME_NAME='Baldurʼs Gate Ⅲ' ARCHIVE_BASE_PATCH6_1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479).exe' ARCHIVE_BASE_PATCH6_1_MD5='a68f1a0edcf026a1095c20efe1fa6edc' ARCHIVE_BASE_PATCH6_1_TYPE='innosetup' ARCHIVE_BASE_PATCH6_1_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-1.bin' ARCHIVE_BASE_PATCH6_1_PART1_MD5='c479abb170e4741bf731d5c89cb985c5' ARCHIVE_BASE_PATCH6_1_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-2.bin' ARCHIVE_BASE_PATCH6_1_PART2_MD5='4d3c3d90c5b70abf10502b2eac7e7b91' ARCHIVE_BASE_PATCH6_1_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-3.bin' ARCHIVE_BASE_PATCH6_1_PART3_MD5='34e7830447cfe59b71a6d3cdc627d473' ARCHIVE_BASE_PATCH6_1_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-4.bin' ARCHIVE_BASE_PATCH6_1_PART4_MD5='7700f5bd163051ad3b544920267158a5' ARCHIVE_BASE_PATCH6_1_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-5.bin' ARCHIVE_BASE_PATCH6_1_PART5_MD5='f7e89a93a24a921c71ed7d9efdb2cc52' ARCHIVE_BASE_PATCH6_1_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-6.bin' ARCHIVE_BASE_PATCH6_1_PART6_MD5='cf6044ced2436c68fa644b16c43bd486' ARCHIVE_BASE_PATCH6_1_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-7.bin' ARCHIVE_BASE_PATCH6_1_PART7_MD5='91bb08a6576f56dc7eecdfc8475cbbea' ARCHIVE_BASE_PATCH6_1_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-8.bin' ARCHIVE_BASE_PATCH6_1_PART8_MD5='735d68133f1ad45d43b67a19bdcaf6b7' ARCHIVE_BASE_PATCH6_1_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-9.bin' ARCHIVE_BASE_PATCH6_1_PART9_MD5='76334ea7438e73cb4ff83f03b9aa4f0b' ARCHIVE_BASE_PATCH6_1_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-10.bin' ARCHIVE_BASE_PATCH6_1_PART10_MD5='d9ee57b1a0fa335c9ddbf8857cdf83b6' ARCHIVE_BASE_PATCH6_1_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-11.bin' ARCHIVE_BASE_PATCH6_1_PART11_MD5='eae123041bbf9f775b285da32ffa234c' ARCHIVE_BASE_PATCH6_1_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-12.bin' ARCHIVE_BASE_PATCH6_1_PART12_MD5='ccd6d28381f5e375aec2768714b8f825' ARCHIVE_BASE_PATCH6_1_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-13.bin' ARCHIVE_BASE_PATCH6_1_PART13_MD5='8042f5a7280456fe309dd7840c04125f' ARCHIVE_BASE_PATCH6_1_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-14.bin' ARCHIVE_BASE_PATCH6_1_PART14_MD5='71899991f13404154119dc4eb88ee68d' ARCHIVE_BASE_PATCH6_1_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-15.bin' ARCHIVE_BASE_PATCH6_1_PART15_MD5='23f96cb8a4c49d99935805a9b7c531e1' ARCHIVE_BASE_PATCH6_1_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-16.bin' ARCHIVE_BASE_PATCH6_1_PART16_MD5='2adbe0b025aacbd2a24d8f91caed65c6' ARCHIVE_BASE_PATCH6_1_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-17.bin' ARCHIVE_BASE_PATCH6_1_PART17_MD5='518e9ea117e9bab82e3ba3ff12ee99a3' ARCHIVE_BASE_PATCH6_1_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-18.bin' ARCHIVE_BASE_PATCH6_1_PART18_MD5='d1c1b477754b7f2661b0669c8b3eebd4' ARCHIVE_BASE_PATCH6_1_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-19.bin' ARCHIVE_BASE_PATCH6_1_PART19_MD5='0b93534901cbfb0c523c690181cc4bde' ARCHIVE_BASE_PATCH6_1_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-20.bin' ARCHIVE_BASE_PATCH6_1_PART20_MD5='d8efb4ef169d590c89f884c240a0bf72' ARCHIVE_BASE_PATCH6_1_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-21.bin' ARCHIVE_BASE_PATCH6_1_PART21_MD5='b5babfb43c75a5b919e497d7d54c86bd' ARCHIVE_BASE_PATCH6_1_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-22.bin' ARCHIVE_BASE_PATCH6_1_PART22_MD5='bb9419ce976980f86df35a21646da355' ARCHIVE_BASE_PATCH6_1_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-23.bin' ARCHIVE_BASE_PATCH6_1_PART23_MD5='a2cb3ae76774d36ce04346510dd019b0' ARCHIVE_BASE_PATCH6_1_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-24.bin' ARCHIVE_BASE_PATCH6_1_PART24_MD5='a33ab802e04f0c4d4f17f1e7e9e8b94a' ARCHIVE_BASE_PATCH6_1_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-25.bin' ARCHIVE_BASE_PATCH6_1_PART25_MD5='9bdfa763b6832aff6dc023a2d8d340c9' ARCHIVE_BASE_PATCH6_1_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-26.bin' ARCHIVE_BASE_PATCH6_1_PART26_MD5='c852917906a08488e823e60500cfc175' ARCHIVE_BASE_PATCH6_1_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-27.bin' ARCHIVE_BASE_PATCH6_1_PART27_MD5='608cf14bb3839e87e755683ee22059bb' ARCHIVE_BASE_PATCH6_1_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-28.bin' ARCHIVE_BASE_PATCH6_1_PART28_MD5='f5b16334779fbb662323966ed4735f61' ARCHIVE_BASE_PATCH6_1_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-29.bin' ARCHIVE_BASE_PATCH6_1_PART29_MD5='441e05f65ad6f0cb2642c29468302385' ARCHIVE_BASE_PATCH6_1_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-30.bin' ARCHIVE_BASE_PATCH6_1_PART30_MD5='5565eb0a62b83e3ab2eab663f1ad802e' ARCHIVE_BASE_PATCH6_1_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-31.bin' ARCHIVE_BASE_PATCH6_1_PART31_MD5='b73f8e36b290be55b5aec3ba5aaf197e' ARCHIVE_BASE_PATCH6_1_PART32_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-32.bin' ARCHIVE_BASE_PATCH6_1_PART32_MD5='181d4fc84ee71980b1dce7d04003f5bf' ARCHIVE_BASE_PATCH6_1_SIZE='149637909' ARCHIVE_BASE_PATCH6_1_VERSION='4.1.1.5022896-gog72479' ARCHIVE_BASE_PATCH6_1_URL='https://www.gog.com/game/baldurs_gate_iii' ARCHIVE_BASE_PATCH6_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689).exe' ARCHIVE_BASE_PATCH6_0_MD5='1adeda86e51f6dd711059c27e8d5224f' ARCHIVE_BASE_PATCH6_0_TYPE='innosetup' ARCHIVE_BASE_PATCH6_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-1.bin' ARCHIVE_BASE_PATCH6_0_PART1_MD5='c4274fcae2412d61045b986fa1368ed4' ARCHIVE_BASE_PATCH6_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-2.bin' ARCHIVE_BASE_PATCH6_0_PART2_MD5='d69c73883f75b5e40888b6bb218fb5fd' ARCHIVE_BASE_PATCH6_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-3.bin' ARCHIVE_BASE_PATCH6_0_PART3_MD5='fb8254fc7e30d46c6150dcf065651a1e' ARCHIVE_BASE_PATCH6_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-4.bin' ARCHIVE_BASE_PATCH6_0_PART4_MD5='304db0f5a987953c987eca014544fd56' ARCHIVE_BASE_PATCH6_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-5.bin' ARCHIVE_BASE_PATCH6_0_PART5_MD5='417ef6d694d4247f6d71e60ee0e90a65' ARCHIVE_BASE_PATCH6_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-6.bin' ARCHIVE_BASE_PATCH6_0_PART6_MD5='8c8a6f514debdd9088fe303c1297ab06' ARCHIVE_BASE_PATCH6_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-7.bin' ARCHIVE_BASE_PATCH6_0_PART7_MD5='7eeebee2ce06232bd75370172bdbb3ec' ARCHIVE_BASE_PATCH6_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-8.bin' ARCHIVE_BASE_PATCH6_0_PART8_MD5='70b3c3910424e753c49effc573fb52cd' ARCHIVE_BASE_PATCH6_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-9.bin' ARCHIVE_BASE_PATCH6_0_PART9_MD5='4ee21874b53da4039d946b2c8dcde9ea' ARCHIVE_BASE_PATCH6_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-10.bin' ARCHIVE_BASE_PATCH6_0_PART10_MD5='2f0403a69a7e968ab52c89aca56ffee7' ARCHIVE_BASE_PATCH6_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-11.bin' ARCHIVE_BASE_PATCH6_0_PART11_MD5='8168954995979ba3259ef515ac1399e6' ARCHIVE_BASE_PATCH6_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-12.bin' ARCHIVE_BASE_PATCH6_0_PART12_MD5='b1ed340641bb988cfe412c9c1f729f12' ARCHIVE_BASE_PATCH6_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-13.bin' ARCHIVE_BASE_PATCH6_0_PART13_MD5='831e762e66bcf2cf20a8434f35d1cc27' ARCHIVE_BASE_PATCH6_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-14.bin' ARCHIVE_BASE_PATCH6_0_PART14_MD5='be44bad0b9eb5cf649e3568f473b1331' ARCHIVE_BASE_PATCH6_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-15.bin' ARCHIVE_BASE_PATCH6_0_PART15_MD5='2140db0a5068b86d329bc55c26d4e822' ARCHIVE_BASE_PATCH6_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-16.bin' ARCHIVE_BASE_PATCH6_0_PART16_MD5='ed03595ca67160d089c305fb4c9bde3d' ARCHIVE_BASE_PATCH6_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-17.bin' ARCHIVE_BASE_PATCH6_0_PART17_MD5='0a0b02e5ba1a6079a038e0437afd1f2f' ARCHIVE_BASE_PATCH6_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-18.bin' ARCHIVE_BASE_PATCH6_0_PART18_MD5='aeb62197de4f69c0a019c391f3a7e3c3' ARCHIVE_BASE_PATCH6_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-19.bin' ARCHIVE_BASE_PATCH6_0_PART19_MD5='7fcf7864a1118e818c7de8362a88e5d2' ARCHIVE_BASE_PATCH6_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-20.bin' ARCHIVE_BASE_PATCH6_0_PART20_MD5='08cb9545c8f7e032a3dbabb6a24a363c' ARCHIVE_BASE_PATCH6_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-21.bin' ARCHIVE_BASE_PATCH6_0_PART21_MD5='fb6376493dba115a7c674899fddf28ce' ARCHIVE_BASE_PATCH6_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-22.bin' ARCHIVE_BASE_PATCH6_0_PART22_MD5='c4e8ac5364bc37eba2df4915439085f8' ARCHIVE_BASE_PATCH6_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-23.bin' ARCHIVE_BASE_PATCH6_0_PART23_MD5='a894d6a54bdc26ca8bcefd2554dedec9' ARCHIVE_BASE_PATCH6_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-24.bin' ARCHIVE_BASE_PATCH6_0_PART24_MD5='b422de0996ffb51c75ff00cf167c79cd' ARCHIVE_BASE_PATCH6_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-25.bin' ARCHIVE_BASE_PATCH6_0_PART25_MD5='4149e5c36d40b7bb0d00a1e99990ae2f' ARCHIVE_BASE_PATCH6_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-26.bin' ARCHIVE_BASE_PATCH6_0_PART26_MD5='da645662e22d6a56408c002c1a21d80e' ARCHIVE_BASE_PATCH6_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-27.bin' ARCHIVE_BASE_PATCH6_0_PART27_MD5='2e9e7ad933f31a6932a03cc96683996e' ARCHIVE_BASE_PATCH6_0_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-28.bin' ARCHIVE_BASE_PATCH6_0_PART28_MD5='534def45ff6461622c6ad00b1896064c' ARCHIVE_BASE_PATCH6_0_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-29.bin' ARCHIVE_BASE_PATCH6_0_PART29_MD5='969580653831dd9300a0140f956ba075' ARCHIVE_BASE_PATCH6_0_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-30.bin' ARCHIVE_BASE_PATCH6_0_PART30_MD5='bd384da9ed9589b42afe2bafdf16f84d' ARCHIVE_BASE_PATCH6_0_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-31.bin' ARCHIVE_BASE_PATCH6_0_PART31_MD5='6947e03d8f686bdde5e384b7b3443a30' ARCHIVE_BASE_PATCH6_0_PART32_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4890942_-_patch_patch6_hotfix4__(64bit)_(71689)-32.bin' ARCHIVE_BASE_PATCH6_0_PART32_MD5='c47aeb4934f076c85240bc5e1d42a59c' ARCHIVE_BASE_PATCH6_0_SIZE='149344069' ARCHIVE_BASE_PATCH6_0_VERSION='4.1.1.4890942-gog71689' ARCHIVE_BASE_PATCH5_1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408).exe' ARCHIVE_BASE_PATCH5_1_MD5='41d296389ec755596846312c290188ba' ARCHIVE_BASE_PATCH5_1_TYPE='innosetup' ARCHIVE_BASE_PATCH5_1_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-1.bin' ARCHIVE_BASE_PATCH5_1_PART1_MD5='ebbff6fbb2a38f555a30fe8e5c1a8b31' ARCHIVE_BASE_PATCH5_1_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-2.bin' ARCHIVE_BASE_PATCH5_1_PART2_MD5='a6577500e4ae2df79027a3aab47180ce' ARCHIVE_BASE_PATCH5_1_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-3.bin' ARCHIVE_BASE_PATCH5_1_PART3_MD5='413949288793c7ef6e7576cb573e6561' ARCHIVE_BASE_PATCH5_1_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-4.bin' ARCHIVE_BASE_PATCH5_1_PART4_MD5='ba3b2132916fb1a9924668e9c121eacd' ARCHIVE_BASE_PATCH5_1_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-5.bin' ARCHIVE_BASE_PATCH5_1_PART5_MD5='2833f2573f0c231eace28e5d55cdf760' ARCHIVE_BASE_PATCH5_1_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-6.bin' ARCHIVE_BASE_PATCH5_1_PART6_MD5='a14412e73266f5284fe3512f8531d5d6' ARCHIVE_BASE_PATCH5_1_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-7.bin' ARCHIVE_BASE_PATCH5_1_PART7_MD5='598fb783c55f0e750ce0dc9ff33d4e91' ARCHIVE_BASE_PATCH5_1_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-8.bin' ARCHIVE_BASE_PATCH5_1_PART8_MD5='4f15395994841e57ab238a417ad19f76' ARCHIVE_BASE_PATCH5_1_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-9.bin' ARCHIVE_BASE_PATCH5_1_PART9_MD5='3e0aeed6e2f499b74889600415bbbee8' ARCHIVE_BASE_PATCH5_1_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-10.bin' ARCHIVE_BASE_PATCH5_1_PART10_MD5='bf3b28a6d1c8210cff15a0a49d4c3773' ARCHIVE_BASE_PATCH5_1_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-11.bin' ARCHIVE_BASE_PATCH5_1_PART11_MD5='fa4fd60332c20e30217197f58e4bbf1b' ARCHIVE_BASE_PATCH5_1_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-12.bin' ARCHIVE_BASE_PATCH5_1_PART12_MD5='d00c210e621ab8163a36ca5973d3b8af' ARCHIVE_BASE_PATCH5_1_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-13.bin' ARCHIVE_BASE_PATCH5_1_PART13_MD5='80208dd51f3b41543b34b8a08c611bd8' ARCHIVE_BASE_PATCH5_1_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-14.bin' ARCHIVE_BASE_PATCH5_1_PART14_MD5='130710e4e6c422769453b7949a783f85' ARCHIVE_BASE_PATCH5_1_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-15.bin' ARCHIVE_BASE_PATCH5_1_PART15_MD5='bfc6635ab6f90b5168f67b88d3f7b57a' ARCHIVE_BASE_PATCH5_1_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-16.bin' ARCHIVE_BASE_PATCH5_1_PART16_MD5='84f39956129ff4e43c5dbe61a316315a' ARCHIVE_BASE_PATCH5_1_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-17.bin' ARCHIVE_BASE_PATCH5_1_PART17_MD5='fb05f610719dfed7278af617d70093e0' ARCHIVE_BASE_PATCH5_1_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-18.bin' ARCHIVE_BASE_PATCH5_1_PART18_MD5='40495dfc26875491f29eadeabeb77308' ARCHIVE_BASE_PATCH5_1_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-19.bin' ARCHIVE_BASE_PATCH5_1_PART19_MD5='d428eecb383c1317570ef4f9663045c8' ARCHIVE_BASE_PATCH5_1_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-20.bin' ARCHIVE_BASE_PATCH5_1_PART20_MD5='cdb6f938deb3ce2bc122f9effcc489b7' ARCHIVE_BASE_PATCH5_1_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-21.bin' ARCHIVE_BASE_PATCH5_1_PART21_MD5='6cbcaa9b7c412231b592b436f4e5b77a' ARCHIVE_BASE_PATCH5_1_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-22.bin' ARCHIVE_BASE_PATCH5_1_PART22_MD5='a68accd6f697dc9c7542441ce4373c5f' ARCHIVE_BASE_PATCH5_1_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-23.bin' ARCHIVE_BASE_PATCH5_1_PART23_MD5='67045ba580bfe38320d046caebf82799' ARCHIVE_BASE_PATCH5_1_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-24.bin' ARCHIVE_BASE_PATCH5_1_PART24_MD5='77d5c61d647007d6c2ee522d82354c10' ARCHIVE_BASE_PATCH5_1_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-25.bin' ARCHIVE_BASE_PATCH5_1_PART25_MD5='17db3c1c0706d86d074bad776401dfae' ARCHIVE_BASE_PATCH5_1_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-26.bin' ARCHIVE_BASE_PATCH5_1_PART26_MD5='6dc6d4ef5c7b3c6fdef926c1dbb79abe' ARCHIVE_BASE_PATCH5_1_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-27.bin' ARCHIVE_BASE_PATCH5_1_PART27_MD5='15d16729ba8fd25eaf3fe95bcfd89863' ARCHIVE_BASE_PATCH5_1_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-28.bin' ARCHIVE_BASE_PATCH5_1_PART28_MD5='51458a5835f079f452fbb32e57fe29d3' ARCHIVE_BASE_PATCH5_1_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-29.bin' ARCHIVE_BASE_PATCH5_1_PART29_MD5='771fe718c64fa6bfd9ac57cba1c18d4e' ARCHIVE_BASE_PATCH5_1_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-30.bin' ARCHIVE_BASE_PATCH5_1_PART30_MD5='9d1e8c2dde7c7e8d7be9684a1d2936dc' ARCHIVE_BASE_PATCH5_1_SIZE='144316256' ARCHIVE_BASE_PATCH5_1_VERSION='4.1.1.4494476-gog70408' ARCHIVE_BASE_PATCH5_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888).exe' ARCHIVE_BASE_PATCH5_0_MD5='6862e7a492de45b737d78e08c281a511' ARCHIVE_BASE_PATCH5_0_TYPE='innosetup' ARCHIVE_BASE_PATCH5_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-1.bin' ARCHIVE_BASE_PATCH5_0_PART1_MD5='186c358ea2dc870e028ec0673a6365e3' ARCHIVE_BASE_PATCH5_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-2.bin' ARCHIVE_BASE_PATCH5_0_PART2_MD5='5cce05c8723bed050cda429c0f6c04e1' ARCHIVE_BASE_PATCH5_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-3.bin' ARCHIVE_BASE_PATCH5_0_PART3_MD5='d83a39fcd16e69d1279f265b4f01f9b5' ARCHIVE_BASE_PATCH5_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-4.bin' ARCHIVE_BASE_PATCH5_0_PART4_MD5='66d9b2aebad820e832e831634c0a7330' ARCHIVE_BASE_PATCH5_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-5.bin' ARCHIVE_BASE_PATCH5_0_PART5_MD5='68c8cdafb45c97a0cd1690d168862100' ARCHIVE_BASE_PATCH5_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-6.bin' ARCHIVE_BASE_PATCH5_0_PART6_MD5='1f70e6253abca8e03b16e9249ce4debd' ARCHIVE_BASE_PATCH5_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-7.bin' ARCHIVE_BASE_PATCH5_0_PART7_MD5='46af9f6c04b624c5049beee3dffc9696' ARCHIVE_BASE_PATCH5_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-8.bin' ARCHIVE_BASE_PATCH5_0_PART8_MD5='8f746939ff4e6407b78aa2f43dfc6392' ARCHIVE_BASE_PATCH5_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-9.bin' ARCHIVE_BASE_PATCH5_0_PART9_MD5='758b43451029e2f63ed1dbb9c987461b' ARCHIVE_BASE_PATCH5_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-10.bin' ARCHIVE_BASE_PATCH5_0_PART10_MD5='5d19fc102d11834f08cf6c1f0b925ea0' ARCHIVE_BASE_PATCH5_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-11.bin' ARCHIVE_BASE_PATCH5_0_PART11_MD5='a34ccbb9196795da458df88d16f29001' ARCHIVE_BASE_PATCH5_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-12.bin' ARCHIVE_BASE_PATCH5_0_PART12_MD5='4a0b02ed0fe0e213050ba36ca2c1e9bf' ARCHIVE_BASE_PATCH5_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-13.bin' ARCHIVE_BASE_PATCH5_0_PART13_MD5='4bba114b9fd38dc3b0c15aee4a7badc7' ARCHIVE_BASE_PATCH5_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-14.bin' ARCHIVE_BASE_PATCH5_0_PART14_MD5='26fab2816e6a90c46b26666a6c9825cc' ARCHIVE_BASE_PATCH5_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-15.bin' ARCHIVE_BASE_PATCH5_0_PART15_MD5='0c2e8f809fce1dc30d003512eeb9bdf5' ARCHIVE_BASE_PATCH5_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-16.bin' ARCHIVE_BASE_PATCH5_0_PART16_MD5='eb11c87799b0870c09dff97cd7d5d721' ARCHIVE_BASE_PATCH5_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-17.bin' ARCHIVE_BASE_PATCH5_0_PART17_MD5='679670d1c9e4b80cc4b7e1e8cd46b24a' ARCHIVE_BASE_PATCH5_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-18.bin' ARCHIVE_BASE_PATCH5_0_PART18_MD5='c01feb0bdf8b7677af42575c16cea2b3' ARCHIVE_BASE_PATCH5_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-19.bin' ARCHIVE_BASE_PATCH5_0_PART19_MD5='7f9b210f8afc3320bead9637edb882ac' ARCHIVE_BASE_PATCH5_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-20.bin' ARCHIVE_BASE_PATCH5_0_PART20_MD5='b4bc49e1a36c10cf1ad64665300f3d3a' ARCHIVE_BASE_PATCH5_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-21.bin' ARCHIVE_BASE_PATCH5_0_PART21_MD5='aa7c335e7ffc0bcda16d19817e7d2e32' ARCHIVE_BASE_PATCH5_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-22.bin' ARCHIVE_BASE_PATCH5_0_PART22_MD5='5d6cef68c2e0067d2aac4b891ddc15fe' ARCHIVE_BASE_PATCH5_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-23.bin' ARCHIVE_BASE_PATCH5_0_PART23_MD5='b7596a74a8d17ba53041f4cb65e7c275' ARCHIVE_BASE_PATCH5_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-24.bin' ARCHIVE_BASE_PATCH5_0_PART24_MD5='ee7278a6d7ddc74f9e84350c007d83f4' ARCHIVE_BASE_PATCH5_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-25.bin' ARCHIVE_BASE_PATCH5_0_PART25_MD5='5f53ee4b9c609e0e2033c24349c7c08f' ARCHIVE_BASE_PATCH5_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-26.bin' ARCHIVE_BASE_PATCH5_0_PART26_MD5='8bcc1faddcc9dbaea2181d6407944e91' ARCHIVE_BASE_PATCH5_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-27.bin' ARCHIVE_BASE_PATCH5_0_PART27_MD5='4be5806c0d26719004cf3c7f447a9adb' ARCHIVE_BASE_PATCH5_0_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-28.bin' ARCHIVE_BASE_PATCH5_0_PART28_MD5='2acf6acde88c6c7e38d2d018b9777321' ARCHIVE_BASE_PATCH5_0_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-29.bin' ARCHIVE_BASE_PATCH5_0_PART29_MD5='c02adb5c2f3492580e4b2264d678bbec' ARCHIVE_BASE_PATCH5_0_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4251417_patch5_hotfix4__japanese_(64bit)_(69888)-30.bin' ARCHIVE_BASE_PATCH5_0_PART30_MD5='9d686af3f1622d30a4636d97614a0e12' ARCHIVE_BASE_PATCH5_0_SIZE='144082412' ARCHIVE_BASE_PATCH5_0_VERSION='4.1.1.4251417-gog69888' ARCHIVE_BASE_PATCH4_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995).exe' ARCHIVE_BASE_PATCH4_0_MD5='ab6267432b272ff880127131e7b2f5f3' ARCHIVE_BASE_PATCH4_0_TYPE='innosetup' ARCHIVE_BASE_PATCH4_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-1.bin' ARCHIVE_BASE_PATCH4_0_PART1_MD5='df12c48514a6e053123b993536984db1' ARCHIVE_BASE_PATCH4_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-2.bin' ARCHIVE_BASE_PATCH4_0_PART2_MD5='7624eae52e3ba390cc451c92eb22971e' ARCHIVE_BASE_PATCH4_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-3.bin' ARCHIVE_BASE_PATCH4_0_PART3_MD5='55926fedfbe8bfc55259f43e279506c2' ARCHIVE_BASE_PATCH4_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-4.bin' ARCHIVE_BASE_PATCH4_0_PART4_MD5='6521b33ac90d7da85737fd789a035a4b' ARCHIVE_BASE_PATCH4_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-5.bin' ARCHIVE_BASE_PATCH4_0_PART5_MD5='9cab7eb4d37f6970d7c75620604f6260' ARCHIVE_BASE_PATCH4_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-6.bin' ARCHIVE_BASE_PATCH4_0_PART6_MD5='d6c465c93781fe3ff757c6c20a2ff373' ARCHIVE_BASE_PATCH4_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-7.bin' ARCHIVE_BASE_PATCH4_0_PART7_MD5='75a4703c4ab50e922f35c37dc0b2f91c' ARCHIVE_BASE_PATCH4_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-8.bin' ARCHIVE_BASE_PATCH4_0_PART8_MD5='2abf5bf419d07af67fa89ab9cf782401' ARCHIVE_BASE_PATCH4_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-9.bin' ARCHIVE_BASE_PATCH4_0_PART9_MD5='156c9711f63b8db03f31e41fd22e59af' ARCHIVE_BASE_PATCH4_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-10.bin' ARCHIVE_BASE_PATCH4_0_PART10_MD5='32430ec83c9b780c637c1d6b2de9ce68' ARCHIVE_BASE_PATCH4_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-11.bin' ARCHIVE_BASE_PATCH4_0_PART11_MD5='d0ae7f626c2f163f7192f2e6d10f09db' ARCHIVE_BASE_PATCH4_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-12.bin' ARCHIVE_BASE_PATCH4_0_PART12_MD5='5378372fae1cf46669db85f60091e77c' ARCHIVE_BASE_PATCH4_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-13.bin' ARCHIVE_BASE_PATCH4_0_PART13_MD5='f0e0d239c05867ceddd2f630794db82f' ARCHIVE_BASE_PATCH4_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-14.bin' ARCHIVE_BASE_PATCH4_0_PART14_MD5='49324f1d65939e8e41ea5530f369d5cd' ARCHIVE_BASE_PATCH4_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-15.bin' ARCHIVE_BASE_PATCH4_0_PART15_MD5='a6547b00be69663430c8c72bfa4a9f85' ARCHIVE_BASE_PATCH4_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-16.bin' ARCHIVE_BASE_PATCH4_0_PART16_MD5='c285e952585a260478c2d31f29448745' ARCHIVE_BASE_PATCH4_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-17.bin' ARCHIVE_BASE_PATCH4_0_PART17_MD5='d6fb24e9f9781f4f72c5435634ac6ac7' ARCHIVE_BASE_PATCH4_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-18.bin' ARCHIVE_BASE_PATCH4_0_PART18_MD5='c05f0ef6d178843fb0da80753752b5b5' ARCHIVE_BASE_PATCH4_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-19.bin' ARCHIVE_BASE_PATCH4_0_PART19_MD5='626615ae36a91d6f06b66f82090725e7' ARCHIVE_BASE_PATCH4_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-20.bin' ARCHIVE_BASE_PATCH4_0_PART20_MD5='e41563ed5af9e65893968dc4f3a3a11f' ARCHIVE_BASE_PATCH4_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-21.bin' ARCHIVE_BASE_PATCH4_0_PART21_MD5='f8c9ca01fa54f40c6720907a6754497c' ARCHIVE_BASE_PATCH4_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-22.bin' ARCHIVE_BASE_PATCH4_0_PART22_MD5='6c73b251f90ccdfc3478e36dd5c10ba2' ARCHIVE_BASE_PATCH4_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-23.bin' ARCHIVE_BASE_PATCH4_0_PART23_MD5='1b3b77c0ec4d9d0355964662ff82c9eb' ARCHIVE_BASE_PATCH4_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-24.bin' ARCHIVE_BASE_PATCH4_0_PART24_MD5='49538632c8eb659f017c3ae1a1698a1f' ARCHIVE_BASE_PATCH4_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-25.bin' ARCHIVE_BASE_PATCH4_0_PART25_MD5='6ee062ce652cb6606b9747f3ace8706e' ARCHIVE_BASE_PATCH4_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-26.bin' ARCHIVE_BASE_PATCH4_0_PART26_MD5='97fda2b27e9bf32387e17294f2dd05ed' ARCHIVE_BASE_PATCH4_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-27.bin' ARCHIVE_BASE_PATCH4_0_PART27_MD5='c4e2eee7ea51aa41ba1fcd2544a7423c' ARCHIVE_BASE_PATCH4_0_SIZE='126864164' ARCHIVE_BASE_PATCH4_0_VERSION='4.1.1.3956130-gog68995' ARCHIVE_BASE_PATCH3_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008).exe' ARCHIVE_BASE_PATCH3_0_MD5='e2da307eb714d2e746048e8fb7d646a4' ARCHIVE_BASE_PATCH3_0_TYPE='innosetup' ARCHIVE_BASE_PATCH3_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-1.bin' ARCHIVE_BASE_PATCH3_0_PART1_MD5='c1f97403bf1b7aef31aac7ac8a05c52c' ARCHIVE_BASE_PATCH3_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-2.bin' ARCHIVE_BASE_PATCH3_0_PART2_MD5='f758ba3cb8c8b92ec3f87d1b923b7c11' ARCHIVE_BASE_PATCH3_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-3.bin' ARCHIVE_BASE_PATCH3_0_PART3_MD5='0a74176898bbe90ba6df280d002c608f' ARCHIVE_BASE_PATCH3_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-4.bin' ARCHIVE_BASE_PATCH3_0_PART4_MD5='2839a599a52492bf7fc7e21a0f948792' ARCHIVE_BASE_PATCH3_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-5.bin' ARCHIVE_BASE_PATCH3_0_PART5_MD5='e6662560a171acf293da789ba73e66a5' ARCHIVE_BASE_PATCH3_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-6.bin' ARCHIVE_BASE_PATCH3_0_PART6_MD5='3fa48d0c2cbdb8d2bed0d7b1120e4807' ARCHIVE_BASE_PATCH3_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-7.bin' ARCHIVE_BASE_PATCH3_0_PART7_MD5='435d3b387cbd7f77149f4fd48e97172e' ARCHIVE_BASE_PATCH3_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-8.bin' ARCHIVE_BASE_PATCH3_0_PART8_MD5='3e6a2f03e58ec7067c9cebffc913144d' ARCHIVE_BASE_PATCH3_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-9.bin' ARCHIVE_BASE_PATCH3_0_PART9_MD5='9560938b6aa92559096c7db471c437fa' ARCHIVE_BASE_PATCH3_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-10.bin' ARCHIVE_BASE_PATCH3_0_PART10_MD5='42e9165bd6665754052936cf5949269a' ARCHIVE_BASE_PATCH3_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-11.bin' ARCHIVE_BASE_PATCH3_0_PART11_MD5='b536ed99f08843c8bb6c7af50f3a14b9' ARCHIVE_BASE_PATCH3_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-12.bin' ARCHIVE_BASE_PATCH3_0_PART12_MD5='86a43810f51761fd09a653f1b89e9936' ARCHIVE_BASE_PATCH3_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-13.bin' ARCHIVE_BASE_PATCH3_0_PART13_MD5='83d3432202ca5a775952afc001086a03' ARCHIVE_BASE_PATCH3_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-14.bin' ARCHIVE_BASE_PATCH3_0_PART14_MD5='db7dcdd36279cf06e014b3d51d06e978' ARCHIVE_BASE_PATCH3_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-15.bin' ARCHIVE_BASE_PATCH3_0_PART15_MD5='9e472641d3c34199dfeba8851f7bdcf5' ARCHIVE_BASE_PATCH3_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-16.bin' ARCHIVE_BASE_PATCH3_0_PART16_MD5='1f7d14f63ecafdbbcd727de7ac38223c' ARCHIVE_BASE_PATCH3_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-17.bin' ARCHIVE_BASE_PATCH3_0_PART17_MD5='f1359a59c61a955f0620febc487a1269' ARCHIVE_BASE_PATCH3_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-18.bin' ARCHIVE_BASE_PATCH3_0_PART18_MD5='bfd969ab39637c49b64f7cfaa1f20804' ARCHIVE_BASE_PATCH3_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-19.bin' ARCHIVE_BASE_PATCH3_0_PART19_MD5='e8eae4f90a2cea5bcbdee08a1b712aef' ARCHIVE_BASE_PATCH3_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-20.bin' ARCHIVE_BASE_PATCH3_0_PART20_MD5='b88525457e4b590b78c34f40e1ba60f0' ARCHIVE_BASE_PATCH3_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-21.bin' ARCHIVE_BASE_PATCH3_0_PART21_MD5='d74266b799d4d911838cf9173c87fda6' ARCHIVE_BASE_PATCH3_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-22.bin' ARCHIVE_BASE_PATCH3_0_PART22_MD5='75b917c7abbf4483a82b56b5395e39c0' ARCHIVE_BASE_PATCH3_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-23.bin' ARCHIVE_BASE_PATCH3_0_PART23_MD5='bd518745958733216fb50f9fce5cb494' ARCHIVE_BASE_PATCH3_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-24.bin' ARCHIVE_BASE_PATCH3_0_PART24_MD5='404946034a46864f9172c7b9cf13002b' ARCHIVE_BASE_PATCH3_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-25.bin' ARCHIVE_BASE_PATCH3_0_PART25_MD5='f6255a2a3130642c3f96fd43252e9dec' ARCHIVE_BASE_PATCH3_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-26.bin' ARCHIVE_BASE_PATCH3_0_PART26_MD5='d2bbcc99329999915b2b478e9d9218e4' ARCHIVE_BASE_PATCH3_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-27.bin' ARCHIVE_BASE_PATCH3_0_PART27_MD5='3e8cc3d3b3028f065e73296dcc714712' ARCHIVE_BASE_PATCH3_0_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-28.bin' ARCHIVE_BASE_PATCH3_0_PART28_MD5='1ad835b73e36f5fd9706f5a3e3ccd276' ARCHIVE_BASE_PATCH3_0_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-29.bin' ARCHIVE_BASE_PATCH3_0_PART29_MD5='27564ccea2ef5b369feee3b246631060' ARCHIVE_BASE_PATCH3_0_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-30.bin' ARCHIVE_BASE_PATCH3_0_PART30_MD5='c3729516a6fb77dad2f760ef9d21bb9a' ARCHIVE_BASE_PATCH3_0_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-31.bin' ARCHIVE_BASE_PATCH3_0_PART31_MD5='5fb4854aaac674f56a563dc4616b8792' ARCHIVE_BASE_PATCH3_0_SIZE='156835644' ARCHIVE_BASE_PATCH3_0_VERSION='4.1.1.3767641-gog68008' ARCHIVE_BASE_PATCH2_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336).exe' ARCHIVE_BASE_PATCH2_0_MD5='6eeac06fdc264d09052dd52a5d8f85fb' ARCHIVE_BASE_PATCH2_0_TYPE='innosetup' ARCHIVE_BASE_PATCH2_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-1.bin' ARCHIVE_BASE_PATCH2_0_PART1_MD5='a8ac39fc4ddd9dc8c8b451ddceb2bed7' ARCHIVE_BASE_PATCH2_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-2.bin' ARCHIVE_BASE_PATCH2_0_PART2_MD5='1e1806b014056b87e1d8d38310d27843' ARCHIVE_BASE_PATCH2_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-3.bin' ARCHIVE_BASE_PATCH2_0_PART3_MD5='3caaa1250e79563a94689b6cc7777226' ARCHIVE_BASE_PATCH2_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-4.bin' ARCHIVE_BASE_PATCH2_0_PART4_MD5='c73405adb39664c2580444be4d8f1e77' ARCHIVE_BASE_PATCH2_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-5.bin' ARCHIVE_BASE_PATCH2_0_PART5_MD5='d380505dfa53dfda7cfd446781cadc1e' ARCHIVE_BASE_PATCH2_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-6.bin' ARCHIVE_BASE_PATCH2_0_PART6_MD5='bbd932a09811206b178cbaaa3e1961f4' ARCHIVE_BASE_PATCH2_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-7.bin' ARCHIVE_BASE_PATCH2_0_PART7_MD5='9096d0e0d58509b010366140d74d0387' ARCHIVE_BASE_PATCH2_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-8.bin' ARCHIVE_BASE_PATCH2_0_PART8_MD5='bbfceef39180a8066727f23c9e494f9a' ARCHIVE_BASE_PATCH2_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-9.bin' ARCHIVE_BASE_PATCH2_0_PART9_MD5='5a118078fc27f3aa102023ef6f0f8b38' ARCHIVE_BASE_PATCH2_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-10.bin' ARCHIVE_BASE_PATCH2_0_PART10_MD5='0f221f4cb8c70bec4a76f605842e4b5a' ARCHIVE_BASE_PATCH2_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-11.bin' ARCHIVE_BASE_PATCH2_0_PART11_MD5='03bb396186275434f3630dcaea22f847' ARCHIVE_BASE_PATCH2_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-12.bin' ARCHIVE_BASE_PATCH2_0_PART12_MD5='94e6c7a3957f0692587dd1e17e57bd6b' ARCHIVE_BASE_PATCH2_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-13.bin' ARCHIVE_BASE_PATCH2_0_PART13_MD5='0e492c7302256ec45e5f01cb6d86f194' ARCHIVE_BASE_PATCH2_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-14.bin' ARCHIVE_BASE_PATCH2_0_PART14_MD5='2d476b947cd51d52d5406eb22772b370' ARCHIVE_BASE_PATCH2_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-15.bin' ARCHIVE_BASE_PATCH2_0_PART15_MD5='932de8332ecef4512f15942f306e35d9' ARCHIVE_BASE_PATCH2_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-16.bin' ARCHIVE_BASE_PATCH2_0_PART16_MD5='e7fd6a1d8b1191726d29beeb671db49a' ARCHIVE_BASE_PATCH2_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-17.bin' ARCHIVE_BASE_PATCH2_0_PART17_MD5='586951c282b7937106f303a80911245b' ARCHIVE_BASE_PATCH2_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-18.bin' ARCHIVE_BASE_PATCH2_0_PART18_MD5='f9a7d5f8dacd3469bdb79126bd4838e7' ARCHIVE_BASE_PATCH2_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-19.bin' ARCHIVE_BASE_PATCH2_0_PART19_MD5='9099f94ffe643239596ce857c1720e08' ARCHIVE_BASE_PATCH2_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-20.bin' ARCHIVE_BASE_PATCH2_0_PART20_MD5='9e20afbabdaea6d69bc51045da768f69' ARCHIVE_BASE_PATCH2_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-21.bin' ARCHIVE_BASE_PATCH2_0_PART21_MD5='4230156c15022f0634edd98542020683' ARCHIVE_BASE_PATCH2_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-22.bin' ARCHIVE_BASE_PATCH2_0_PART22_MD5='0471d8d45cd5eb7accdd16c563c1e972' ARCHIVE_BASE_PATCH2_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-23.bin' ARCHIVE_BASE_PATCH2_0_PART23_MD5='50d0b713eaa36adaf530f9bf87600baa' ARCHIVE_BASE_PATCH2_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-24.bin' ARCHIVE_BASE_PATCH2_0_PART24_MD5='05c0bdfd7c1b01083d511054f6a9f23a' ARCHIVE_BASE_PATCH2_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-25.bin' ARCHIVE_BASE_PATCH2_0_PART25_MD5='96141571c42a53a9bf78960e4c7d83ab' ARCHIVE_BASE_PATCH2_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-26.bin' ARCHIVE_BASE_PATCH2_0_PART26_MD5='3e23b9e016c006fae2c3c60a5af44a47' ARCHIVE_BASE_PATCH2_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-27.bin' ARCHIVE_BASE_PATCH2_0_PART27_MD5='b50cb9a55312f948909ee57c6ed09469' ARCHIVE_BASE_PATCH2_0_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-28.bin' ARCHIVE_BASE_PATCH2_0_PART28_MD5='24910c2975faf1762a177df3cb95c593' ARCHIVE_BASE_PATCH2_0_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-29.bin' ARCHIVE_BASE_PATCH2_0_PART29_MD5='2e4c222aabc70fd6068ad8834aaa7b2c' ARCHIVE_BASE_PATCH2_0_SIZE='145464212' ARCHIVE_BASE_PATCH2_0_VERSION='4.1.1.3700362-gog67336' ARCHIVE_BASE_PATCH2_0_URL='https://www.gog.com/game/baldurs_gate_iii' ARCHIVE_BASE_PATCH1_0_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052).exe' ARCHIVE_BASE_PATCH1_0_MD5='09401cf3b960c56032b9c8d5492d2316' ARCHIVE_BASE_PATCH1_0_TYPE='innosetup' ARCHIVE_BASE_PATCH1_0_PART1_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-1.bin' ARCHIVE_BASE_PATCH1_0_PART1_MD5='f3a8409e3f4dd3db98bc5df6ce0742f5' ARCHIVE_BASE_PATCH1_0_PART2_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-2.bin' ARCHIVE_BASE_PATCH1_0_PART2_MD5='9135194fb160d8d8fb35aac207b668b3' ARCHIVE_BASE_PATCH1_0_PART3_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-3.bin' ARCHIVE_BASE_PATCH1_0_PART3_MD5='489c13ad3282beb71aa3de4db880fade' ARCHIVE_BASE_PATCH1_0_PART4_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-4.bin' ARCHIVE_BASE_PATCH1_0_PART4_MD5='24caf894181a2d7be008bfd6bce865a6' ARCHIVE_BASE_PATCH1_0_PART5_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-5.bin' ARCHIVE_BASE_PATCH1_0_PART5_MD5='17a4f372bd3d56a3b531eb2bf1c9f14d' ARCHIVE_BASE_PATCH1_0_PART6_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-6.bin' ARCHIVE_BASE_PATCH1_0_PART6_MD5='5897dad5e3de1419b13ea78ffb200510' ARCHIVE_BASE_PATCH1_0_PART7_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-7.bin' ARCHIVE_BASE_PATCH1_0_PART7_MD5='f652711efa1f8328d097be81527260f4' ARCHIVE_BASE_PATCH1_0_PART8_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-8.bin' ARCHIVE_BASE_PATCH1_0_PART8_MD5='748370642aefced9eb5647cc4e431828' ARCHIVE_BASE_PATCH1_0_PART9_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-9.bin' ARCHIVE_BASE_PATCH1_0_PART9_MD5='01e5e27b88c2d9a610136fafdb4b8f02' ARCHIVE_BASE_PATCH1_0_PART10_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-10.bin' ARCHIVE_BASE_PATCH1_0_PART10_MD5='084d3daf2161b8054e5a4d58fd859e80' ARCHIVE_BASE_PATCH1_0_PART11_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-11.bin' ARCHIVE_BASE_PATCH1_0_PART11_MD5='6a2e64ba408cfacc1cf4d4c87ef0ef7b' ARCHIVE_BASE_PATCH1_0_PART12_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-12.bin' ARCHIVE_BASE_PATCH1_0_PART12_MD5='c7936ac74791438308efb79b748a1a9e' ARCHIVE_BASE_PATCH1_0_PART13_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-13.bin' ARCHIVE_BASE_PATCH1_0_PART13_MD5='262a4d8e4c34d382a6220acf44205b84' ARCHIVE_BASE_PATCH1_0_PART14_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-14.bin' ARCHIVE_BASE_PATCH1_0_PART14_MD5='ccf42f75bdd18740ddc3680ece6c06b2' ARCHIVE_BASE_PATCH1_0_PART15_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-15.bin' ARCHIVE_BASE_PATCH1_0_PART15_MD5='2e2558d1b7c1d5252afcb6a0542b3848' ARCHIVE_BASE_PATCH1_0_PART16_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-16.bin' ARCHIVE_BASE_PATCH1_0_PART16_MD5='a7d40cc96e64cdb85aeccc2471900acc' ARCHIVE_BASE_PATCH1_0_PART17_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-17.bin' ARCHIVE_BASE_PATCH1_0_PART17_MD5='53b77f130bc641baf7e26007f9fc3849' ARCHIVE_BASE_PATCH1_0_PART18_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-18.bin' ARCHIVE_BASE_PATCH1_0_PART18_MD5='26ecb989f6d025bb4ab5ea726cacb496' ARCHIVE_BASE_PATCH1_0_PART19_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-19.bin' ARCHIVE_BASE_PATCH1_0_PART19_MD5='8f507b0da3729dba21989460f96d3781' ARCHIVE_BASE_PATCH1_0_PART20_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-20.bin' ARCHIVE_BASE_PATCH1_0_PART20_MD5='40493a3fb33da7202533823f1444b526' ARCHIVE_BASE_PATCH1_0_PART21_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-21.bin' ARCHIVE_BASE_PATCH1_0_PART21_MD5='8f2abd65aaaae133ac4e6233efda0654' ARCHIVE_BASE_PATCH1_0_PART22_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-22.bin' ARCHIVE_BASE_PATCH1_0_PART22_MD5='f5a21a6a93328adb55459b28d7096608' ARCHIVE_BASE_PATCH1_0_PART23_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-23.bin' ARCHIVE_BASE_PATCH1_0_PART23_MD5='0f2f3783421bbf5c7c714b0d99dc0bc2' ARCHIVE_BASE_PATCH1_0_PART24_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-24.bin' ARCHIVE_BASE_PATCH1_0_PART24_MD5='11ee20ad29f1dfa7ba9618664c974fa9' ARCHIVE_BASE_PATCH1_0_PART25_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-25.bin' ARCHIVE_BASE_PATCH1_0_PART25_MD5='4c93abd831b0469f2061f27b6ecaebe0' ARCHIVE_BASE_PATCH1_0_PART26_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-26.bin' ARCHIVE_BASE_PATCH1_0_PART26_MD5='610b63465163f61c5e645092800bc3d9' ARCHIVE_BASE_PATCH1_0_PART27_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-27.bin' ARCHIVE_BASE_PATCH1_0_PART27_MD5='9e81fa436fb596f0ae071ae1d7d660d6' ARCHIVE_BASE_PATCH1_0_PART28_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-28.bin' ARCHIVE_BASE_PATCH1_0_PART28_MD5='8581ed928d138c89a05d68a116684d7a' ARCHIVE_BASE_PATCH1_0_SIZE='140000000' ARCHIVE_BASE_PATCH1_0_VERSION='4.1.1.3669438-gog67052' ARCHIVE_BASE_PATCH0_0_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683).exe' ARCHIVE_BASE_PATCH0_0_MD5='986cbd346ca2444eba5ca65921557abc' ARCHIVE_BASE_PATCH0_0_TYPE='innosetup' ARCHIVE_BASE_PATCH0_0_PART1_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-1.bin' ARCHIVE_BASE_PATCH0_0_PART1_MD5='14c9146c4ef5c86dae1edcc4ffcf5953' ARCHIVE_BASE_PATCH0_0_PART2_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-2.bin' ARCHIVE_BASE_PATCH0_0_PART2_MD5='2768930a5a1f20998c087c483c298d4e' ARCHIVE_BASE_PATCH0_0_PART3_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-3.bin' ARCHIVE_BASE_PATCH0_0_PART3_MD5='f6de17882cf9c14bf4d9c35d1408b370' ARCHIVE_BASE_PATCH0_0_PART4_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-4.bin' ARCHIVE_BASE_PATCH0_0_PART4_MD5='57821851b52dbc96735e19ed4cea4412' ARCHIVE_BASE_PATCH0_0_PART5_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-5.bin' ARCHIVE_BASE_PATCH0_0_PART5_MD5='2699c17f29e4385685fedf8f4c722942' ARCHIVE_BASE_PATCH0_0_PART6_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-6.bin' ARCHIVE_BASE_PATCH0_0_PART6_MD5='dfda5cb12822ab47d0fbec331a3bf4e9' ARCHIVE_BASE_PATCH0_0_PART7_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-7.bin' ARCHIVE_BASE_PATCH0_0_PART7_MD5='a9c6c86ba6b752fdfe3b17e2bb671da9' ARCHIVE_BASE_PATCH0_0_PART8_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-8.bin' ARCHIVE_BASE_PATCH0_0_PART8_MD5='6b8124c98e89a4476fd5ebc5fb6eac4e' ARCHIVE_BASE_PATCH0_0_PART9_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-9.bin' ARCHIVE_BASE_PATCH0_0_PART9_MD5='0b40958f3d74bc799e39c0b6757dd210' ARCHIVE_BASE_PATCH0_0_PART10_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-10.bin' ARCHIVE_BASE_PATCH0_0_PART10_MD5='274034a44d58e127f845664c7ba290ee' ARCHIVE_BASE_PATCH0_0_PART11_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-11.bin' ARCHIVE_BASE_PATCH0_0_PART11_MD5='2f4d7c82fb650731a2e215d28b4aefc8' ARCHIVE_BASE_PATCH0_0_PART12_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-12.bin' ARCHIVE_BASE_PATCH0_0_PART12_MD5='bd3a022fe59b2089d97e5f3905bc3962' ARCHIVE_BASE_PATCH0_0_PART13_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-13.bin' ARCHIVE_BASE_PATCH0_0_PART13_MD5='712abe64604b05e2fbbc7bd9aacb1413' ARCHIVE_BASE_PATCH0_0_PART14_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-14.bin' ARCHIVE_BASE_PATCH0_0_PART14_MD5='4dfd9e4a56ce1d63293a0e7bcc66e7a4' ARCHIVE_BASE_PATCH0_0_PART15_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-15.bin' ARCHIVE_BASE_PATCH0_0_PART15_MD5='512fa657892ca991d3f626e21f2d6821' ARCHIVE_BASE_PATCH0_0_PART16_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-16.bin' ARCHIVE_BASE_PATCH0_0_PART16_MD5='e364b2302d2e23e79478eceda835b95f' ARCHIVE_BASE_PATCH0_0_PART17_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-17.bin' ARCHIVE_BASE_PATCH0_0_PART17_MD5='0623bd7550eb187d569ee66cf2bad6c1' ARCHIVE_BASE_PATCH0_0_PART18_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-18.bin' ARCHIVE_BASE_PATCH0_0_PART18_MD5='886a04f956eb69f6a644dd9faff319d0' ARCHIVE_BASE_PATCH0_0_PART19_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-19.bin' ARCHIVE_BASE_PATCH0_0_PART19_MD5='c6d3c5c670066872c7e0cf78162d96ad' ARCHIVE_BASE_PATCH0_0_PART20_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-20.bin' ARCHIVE_BASE_PATCH0_0_PART20_MD5='6517b23d62e752d5f28e607157690f9b' ARCHIVE_BASE_PATCH0_0_PART21_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-21.bin' ARCHIVE_BASE_PATCH0_0_PART21_MD5='e80bbbd92fa5992792679bf0f46d32ad' ARCHIVE_BASE_PATCH0_0_PART22_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-22.bin' ARCHIVE_BASE_PATCH0_0_PART22_MD5='16c82788a087f3ad44939854aed5b812' ARCHIVE_BASE_PATCH0_0_PART23_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-23.bin' ARCHIVE_BASE_PATCH0_0_PART23_MD5='ee096b68eb210b732348d31e940702ea' ARCHIVE_BASE_PATCH0_0_PART24_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-24.bin' ARCHIVE_BASE_PATCH0_0_PART24_MD5='df2a50351cc593ebaf7316afe7a0ae72' ARCHIVE_BASE_PATCH0_0_PART25_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-25.bin' ARCHIVE_BASE_PATCH0_0_PART25_MD5='1db116cd2f589addfa9cf258429c085b' ARCHIVE_BASE_PATCH0_0_PART26_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-26.bin' ARCHIVE_BASE_PATCH0_0_PART26_MD5='f937efd190dc0a93b918061f97d24ba9' ARCHIVE_BASE_PATCH0_0_PART27_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-27.bin' ARCHIVE_BASE_PATCH0_0_PART27_MD5='2c61a47bea3ed93960382139ba15c6b7' ARCHIVE_BASE_PATCH0_0_SIZE='131000000' ARCHIVE_BASE_PATCH0_0_VERSION='4.1.1.3635601-gog66683' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bin' CONTENT_GAME_L10N_VOICES_FILES=' data/localization/voicemeta.pak' CONTENT_GAME_L10N_COMMON_FILES=' data/localization/english.pak data/localization/english_animations.pak' CONTENT_GAME_L10N_FR_FILES=' data/localization/french' CONTENT_GAME_DATA_MODELS_FILES=' data/models.pak' CONTENT_GAME_DATA_SOUNDS_FILES=' data/sharedsoundbanks.pak' CONTENT_GAME_DATA_TEXTURES_1_FILES=' data/gustav_textures.pak data/textures.pak data/textures_1.pak' CONTENT_GAME_DATA_TEXTURES_2_FILES=' data/textures_2.pak data/textures_3.pak data/virtualtextures.pak' CONTENT_GAME_DATA_TEXTURES_3_FILES=' data/virtualtextures_1.pak data/virtualtextures_2.pak' CONTENT_GAME_DATA_TEXTURES_4_FILES=' data/virtualtextures_3.pak data/virtualtextures_4.pak' CONTENT_GAME_DATA_TEXTURES_5_FILES=' data/virtualtextures_5.pak data/virtualtextures_6.pak' CONTENT_GAME_DATA_TEXTURES_6_FILES=' data/virtualtextures_7.pak data/virtualtextures_8.pak' CONTENT_GAME_DATA_TEXTURES_7_FILES=' data/virtualtextures_9.pak data/virtualtextures_10.pak' CONTENT_GAME_DATA_TEXTURES_8_FILES=' data/virtualtextures_11.pak data/virtualtextures_12.pak' CONTENT_GAME_DATA_TEXTURES_9_FILES=' data/virtualtextures_13.pak data/virtualtextures_14.pak' CONTENT_GAME_DATA_TEXTURES_10_FILES=' data/virtualtextures_15.pak data/virtualtextures_16.pak' CONTENT_GAME_DATA_TEXTURES_11_FILES=' data/virtualtextures_17.pak data/virtualtextures_18.pak' CONTENT_GAME_DATA_TEXTURES_12_FILES=' data/virtualtextures_*.pak' CONTENT_GAME_DATA_PATCH0_FILES=' data/patch0_hotfix*.pak' CONTENT_GAME_DATA_PATCH1_FILES=' data/patch1.pak' CONTENT_GAME_DATA_PATCH2_FILES=' data/patch2.pak data/patch2_hotfix*.pak' CONTENT_GAME_DATA_PATCH3_FILES=' data/patch3_hotfix*.pak' CONTENT_GAME_DATA_PATCH4_FILES=' data/patch4_hotfix*.pak' CONTENT_GAME_DATA_PATCH5_FILES=' data/patch5_hotfix*.pak' CONTENT_GAME_DATA_PATCH6_FILES=' data/patch6_hotfix*.pak' CONTENT_GAME_DATA_FILES=' data/assets.pak data/day0.pak data/diceset??.pak data/effects.pak data/engine.pak data/engineshaders.pak data/game.pak data/gameplatform.pak data/gustav_navcloud.pak data/gustav_video.pak data/icons.pak data/lowtex.pak data/materials.pak data/shared.pak' HUGE_FILES_L10N_VOICES=' data/localization/voice.pak' HUGE_FILES_DATA=' data/gustav.pak' ## The size of sharedsounds.pak goes over the .deb size limit only with patch 5, ## but ./play.it has no problem "splitting" a file into a single chunk, ## at the cost of more time spent in post-install scripts. ## TODO: The library-side implementation of huge files should probably skip files under the size limit, ## putting the whole file into a dedicated package without "splitting" it into a single chunk first. HUGE_FILES_DATA_SOUNDS=' data/sharedsounds.pak' ## The _PATCH3 suffix is doubled so this matches: ## PKG_DATA_PATCH3 in the context of ARCHIVE_BASE_PATCH3 ## but does not match: ## PKG_DATA in the context of ARCHIVE_BASE_PATCH3. HUGE_FILES_DATA_PATCH3_PATCH3=' data/patch3.pak' WINE_PERSISTENT_DIRECTORIES=" users/\${USER}/AppData/Local/Larian Studios/Baldur's Gate 3" ## mfc140u.dll is required. WINE_WINETRICKS_VERBS='mfc140' APP_MAIN_EXE='bin/bg3.exe' ## Run the game binary from its parent directory. APP_MAIN_PRERUN='# Run the game binary from its parent directory cd "$(dirname "$APP_EXE")" APP_EXE=$(basename "$APP_EXE") ' PACKAGES_LIST_BASE=' PKG_BIN PKG_L10N_VOICES PKG_L10N_COMMON PKG_L10N_EN PKG_L10N_FR PKG_DATA_MODELS PKG_DATA_SOUNDS PKG_DATA_TEXTURES_1 PKG_DATA_TEXTURES_2 PKG_DATA_TEXTURES_3 PKG_DATA_TEXTURES_4 PKG_DATA_TEXTURES_5 PKG_DATA_TEXTURES_6 PKG_DATA_TEXTURES_7 PKG_DATA_TEXTURES_8 PKG_DATA_TEXTURES_9 PKG_DATA_TEXTURES_10 PKG_DATA_TEXTURES_11 PKG_DATA_TEXTURES_12 PKG_DATA' PACKAGES_LIST_PATCH0="$PACKAGES_LIST_BASE PKG_DATA_PATCH0" PACKAGES_LIST_PATCH1="$PACKAGES_LIST_PATCH0 PKG_DATA_PATCH1" PACKAGES_LIST_PATCH2="$PACKAGES_LIST_PATCH1 PKG_DATA_PATCH2" PACKAGES_LIST_PATCH3="$PACKAGES_LIST_PATCH2 PKG_DATA_PATCH3" ## Archives patch0*.pak, patch1*.pak, patch2*.pak and patch3*.pak are dropped with the patch 4 release. PACKAGES_LIST_PATCH4="$PACKAGES_LIST_BASE PKG_DATA_PATCH4" ## Archives patch4*.pak are dropped with the patch 5 release. PACKAGES_LIST_PATCH5="$PACKAGES_LIST_BASE PKG_DATA_PATCH5" ## Archives patch5*.pak are dropped with the patch 6 release. PACKAGES_LIST_PATCH6="$PACKAGES_LIST_BASE PKG_DATA_PATCH6" PKG_L10N_COMMON_ID="${GAME_ID}-l10n-common" PKG_L10N_COMMON_DESCRIPTION='localizations - shared files' PKG_L10N_VOICES_ID="${GAME_ID}-l10n-voices" PKG_L10N_VOICES_DESCRIPTION="$PKG_L10N_DESCRIPTION - voices" PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_EN_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_FR_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_EN_DESCRIPTION='English localization' PKG_L10N_FR_DESCRIPTION='French localization' PKG_L10N_DEPS="$PKG_L10N_COMMON_ID $PKG_L10N_VOICES_ID" PKG_L10N_EN_DEPS="$PKG_L10N_DEPS" PKG_L10N_FR_DEPS="$PKG_L10N_DEPS" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_MODELS_ID="${PKG_DATA_ID}-models" PKG_DATA_MODELS_DESCRIPTION="$PKG_DATA_DESCRIPTION - models" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_MODELS_ID" PKG_DATA_SOUNDS_ID="${PKG_DATA_ID}-sounds" PKG_DATA_SOUNDS_DESCRIPTION="$PKG_DATA_DESCRIPTION - sounds" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_SOUNDS_ID" PKG_DATA_TEXTURES_ID="${PKG_DATA_ID}-textures" PKG_DATA_TEXTURES_1_ID="${PKG_DATA_TEXTURES_ID}-1" PKG_DATA_TEXTURES_2_ID="${PKG_DATA_TEXTURES_ID}-2" PKG_DATA_TEXTURES_3_ID="${PKG_DATA_TEXTURES_ID}-3" PKG_DATA_TEXTURES_4_ID="${PKG_DATA_TEXTURES_ID}-4" PKG_DATA_TEXTURES_5_ID="${PKG_DATA_TEXTURES_ID}-5" PKG_DATA_TEXTURES_6_ID="${PKG_DATA_TEXTURES_ID}-6" PKG_DATA_TEXTURES_7_ID="${PKG_DATA_TEXTURES_ID}-7" PKG_DATA_TEXTURES_8_ID="${PKG_DATA_TEXTURES_ID}-8" PKG_DATA_TEXTURES_9_ID="${PKG_DATA_TEXTURES_ID}-9" PKG_DATA_TEXTURES_10_ID="${PKG_DATA_TEXTURES_ID}-10" PKG_DATA_TEXTURES_11_ID="${PKG_DATA_TEXTURES_ID}-11" PKG_DATA_TEXTURES_12_ID="${PKG_DATA_TEXTURES_ID}-12" PKG_DATA_TEXTURES_DESCRIPTION="$PKG_DATA_DESCRIPTION - textures" PKG_DATA_TEXTURES_1_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 1" PKG_DATA_TEXTURES_2_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 2" PKG_DATA_TEXTURES_3_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 3" PKG_DATA_TEXTURES_4_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 4" PKG_DATA_TEXTURES_5_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 5" PKG_DATA_TEXTURES_6_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 6" PKG_DATA_TEXTURES_7_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 7" PKG_DATA_TEXTURES_8_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 8" PKG_DATA_TEXTURES_9_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 9" PKG_DATA_TEXTURES_10_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 10" PKG_DATA_TEXTURES_11_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 11" PKG_DATA_TEXTURES_12_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 12" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_TEXTURES_1_ID $PKG_DATA_TEXTURES_2_ID $PKG_DATA_TEXTURES_3_ID $PKG_DATA_TEXTURES_4_ID $PKG_DATA_TEXTURES_5_ID $PKG_DATA_TEXTURES_6_ID $PKG_DATA_TEXTURES_7_ID $PKG_DATA_TEXTURES_8_ID $PKG_DATA_TEXTURES_9_ID $PKG_DATA_TEXTURES_10_ID $PKG_DATA_TEXTURES_11_ID $PKG_DATA_TEXTURES_12_ID" ## Only 11 texture packages are required prior to patch 5. PACKAGES_LIST_PATCH4=$(printf '%s' "$PACKAGES_LIST_PATCH4" | grep --invert-match 'PKG_DATA_TEXTURES_12') PACKAGES_LIST_PATCH3="$PACKAGES_LIST_PATCH4" PACKAGES_LIST_PATCH2="$PACKAGES_LIST_PATCH4" PACKAGES_LIST_PATCH1="$PACKAGES_LIST_PATCH4" PACKAGES_LIST_PATCH0="$PACKAGES_LIST_PATCH4" PKG_DATA_TEXTURES_11_PROVIDES_PATCH4="${PKG_DATA_TEXTURES_11_PROVIDES:-} $PKG_DATA_TEXTURES_12_ID" PKG_DATA_TEXTURES_11_PROVIDES_PATCH3="$PKG_DATA_TEXTURES_11_PROVIDES_PATCH4" PKG_DATA_TEXTURES_11_PROVIDES_PATCH2="$PKG_DATA_TEXTURES_11_PROVIDES_PATCH4" PKG_DATA_TEXTURES_11_PROVIDES_PATCH1="$PKG_DATA_TEXTURES_11_PROVIDES_PATCH4" PKG_DATA_TEXTURES_11_PROVIDES_PATCH0="$PKG_DATA_TEXTURES_11_PROVIDES_PATCH4" PKG_DATA_PATCH0_ID="${PKG_DATA_ID}-patch0" PKG_DATA_PATCH1_ID="${PKG_DATA_ID}-patch1" PKG_DATA_PATCH2_ID="${PKG_DATA_ID}-patch2" PKG_DATA_PATCH3_ID="${PKG_DATA_ID}-patch3" PKG_DATA_PATCH4_ID="${PKG_DATA_ID}-patch4" PKG_DATA_PATCH5_ID="${PKG_DATA_ID}-patch5" PKG_DATA_PATCH6_ID="${PKG_DATA_ID}-patch6" PKG_DATA_PATCH0_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch0" PKG_DATA_PATCH1_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch1" PKG_DATA_PATCH2_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch2" PKG_DATA_PATCH3_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch3" PKG_DATA_PATCH4_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch4" PKG_DATA_PATCH5_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch5" PKG_DATA_PATCH6_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch6" PKG_DATA_DEPS_PATCH0="${PKG_DATA_DEPS:-} $PKG_DATA_PATCH0_ID" PKG_DATA_DEPS_PATCH1="$PKG_DATA_DEPS_PATCH0 $PKG_DATA_PATCH1_ID" PKG_DATA_DEPS_PATCH2="$PKG_DATA_DEPS_PATCH1 $PKG_DATA_PATCH2_ID" PKG_DATA_DEPS_PATCH3="$PKG_DATA_DEPS_PATCH2 $PKG_DATA_PATCH3_ID" PKG_DATA_DEPS_PATCH4="${PKG_DATA_DEPS:-} $PKG_DATA_PATCH4_ID" PKG_DATA_DEPS_PATCH5="${PKG_DATA_DEPS:-} $PKG_DATA_PATCH5_ID" PKG_DATA_DEPS_PATCH6="${PKG_DATA_DEPS:-} $PKG_DATA_PATCH6_ID" ## Archives patch0*.pak, patch1*.pak, patch2*.pak and patch3*.pak are dropped with the patch 4 release. PKG_DATA_PATCH4_PROVIDES=" $PKG_DATA_PATCH0_ID $PKG_DATA_PATCH1_ID $PKG_DATA_PATCH2_ID $PKG_DATA_PATCH3_ID ${PKG_DATA_PATCH3_ID}-chunk1 ${PKG_DATA_PATCH3_ID}-chunk2" ## Archives patch4*.pak are dropped with the patch 5 release. PKG_DATA_PATCH5_PROVIDES="$PKG_DATA_PATCH4_PROVIDES $PKG_DATA_PATCH4_ID" ## Archives patch5*.pak are dropped with the patch 6 release. PKG_DATA_PATCH6_PROVIDES="$PKG_DATA_PATCH5_PROVIDES $PKG_DATA_PATCH5_ID" PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_L10N_ID $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 . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Generate localizations configuration l10n_config_source="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/data/localization/language.lsx" l10n_config_pattern='' l10n_config_destination_en="$(package_path 'PKG_L10N_EN')$(path_game_data)/data/localization/language.lsx" l10n_config_replacement_en='' mkdir --parents "$(dirname "$l10n_config_destination_en")" sed --expression="s;${l10n_config_pattern};${l10n_config_replacement_en};" \ "$l10n_config_source" > "$l10n_config_destination_en" l10n_config_destination_fr="$(package_path 'PKG_L10N_FR')$(path_game_data)/data/localization/language.lsx" l10n_config_replacement_fr='' mkdir --parents "$(dirname "$l10n_config_destination_fr")" sed --expression="s;${l10n_config_pattern};${l10n_config_replacement_fr};" \ "$l10n_config_source" > "$l10n_config_destination_fr" # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation case "${LANG%_*}" in ('fr') message='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) message='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' ## English localization printf "$message" "$lang_en" print_instructions $(packages_list | sed 's/PKG_L10N_FR//') ## French localization printf "$message" "$lang_fr" print_instructions $(packages_list | sed 's/PKG_L10N_EN//') # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-ballisticng.sh0000755000000000000000000000556614471751340014467 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # BallisticNG ### script_version=20240721.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='ballisticng' GAME_NAME='BallisticNG' ARCHIVE_BASE_0_NAME='ballisticng_1_3_3_1_69502.sh' ARCHIVE_BASE_0_MD5='4fd3dd5695e9f94523bb699df024dbee' ARCHIVE_BASE_0_SIZE='2749158' ARCHIVE_BASE_0_VERSION='1.3.3.1-gog69502' ARCHIVE_BASE_0_URL='https://www.gog.com/game/ballisticng' UNITY3D_NAME='BallisticNG' UNITY3D_PLUGINS=' cimgui.so libaudioplugin_phonon.so libphonon.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_BIN_FILES=' DedicatedServerExample.cfg SvrScripts' CONTENT_GAME_EXPANSION_TRACKS_FILES=' DLC/free extra tracks.cpd DLC/free extra tracks.cps' CONTENT_GAME_EXPANSION_VOICES_FILES=' User/Mods/Sounds/Legacy System Voices' CONTENT_GAME_MODDING_FILES=' Modding' CONTENT_DOC_DATA_FILES=' Legacy Track Creator Commands.txt' USER_PERSISTENT_DIRECTORIES=' User' USER_PERSISTENT_FILES=' DedicatedServerExample.cfg' APPLICATIONS_LIST=' APP_MAIN APP_SERVER' APP_SERVER_ID="${GAME_ID}-server" APP_SERVER_NAME="$GAME_NAME - Server" APP_SERVER_OPTIONS='-batchmode -nographics -logfile -svrcfg DedicatedServerExample.cfg' PACKAGES_LIST=' PKG_BIN PKG_EXPANSION_TRACKS PKG_EXPANSION_VOICES PKG_MODDING PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_EXPANSION_TRACKS_ID="${GAME_ID}-expansion-free-extra-tracks" PKG_EXPANSION_TRACKS_DESCRIPTION='expansion - free extra tracks' PKG_EXPANSION_TRACKS_DEPENDENCIES_SIBLINGS=' PKG_BIN' PKG_EXPANSION_VOICES_ID="${GAME_ID}-expansion-legacy-system-voices" PKG_EXPANSION_VOICES_DESCRIPTION='expansion - legacy system voices' PKG_EXPANSION_VOICES_DEPENDENCIES_SIBLINGS=' PKG_BIN' PKG_MODDING_ID="${GAME_ID}-modding" PKG_MODDING_DESCRIPTION='modding' PKG_MODDING_DEPENDENCIES_SIBLINGS=' PKG_BIN' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-bastion.sh0000755000000000000000000001104614471751340013621 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2020 Hoël Bézier set -o errexit ### # Bastion ### script_version=20240710.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='bastion' GAME_NAME='Bastion' ARCHIVE_BASE_GOG_3_NAME='bastion_1_0_1747_initial_test_33876.sh' ARCHIVE_BASE_GOG_3_MD5='b4edf5e95e952a35bfde0c12959134ab' ARCHIVE_BASE_GOG_3_SIZE='1285709' ARCHIVE_BASE_GOG_3_VERSION='1.50436-gog33876' ARCHIVE_BASE_GOG_3_URL='https://www.gog.com/game/bastion' ARCHIVE_BASE_GOG_2_NAME='bastion_1_50436_29_08_2018_23317.sh' ARCHIVE_BASE_GOG_2_MD5='73c6b33c23232597bec30f211a46f73d' ARCHIVE_BASE_GOG_2_SIZE='1400000' ARCHIVE_BASE_GOG_2_VERSION='1.50436.20180829-gog23317' ARCHIVE_BASE_GOG_1_NAME='bastion_en_1_50436_23291.sh' ARCHIVE_BASE_GOG_1_MD5='59c2bbcf43cd9ba243d5fa1baa4a4b48' ARCHIVE_BASE_GOG_1_SIZE='1400000' ARCHIVE_BASE_GOG_1_VERSION='1.50436-gog23291' ARCHIVE_BASE_GOG_0_NAME='gog_bastion_2.0.0.1.sh' ARCHIVE_BASE_GOG_0_MD5='e5e6eefb4885b67abcfa201b1b3a9c48' ARCHIVE_BASE_GOG_0_SIZE='1300000' ARCHIVE_BASE_GOG_0_VERSION='1.2.20161020-gog2.0.0.1' ARCHIVE_BASE_HUMBLE_0_NAME='bastion-10162016-bin' ARCHIVE_BASE_HUMBLE_0_MD5='19fea173ff2da0f990f60bd5e7c3b237' ## This is a MojoSetup installer, not relying on Makeself. ARCHIVE_BASE_HUMBLE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_HUMBLE_0_SIZE='1253966' ARCHIVE_BASE_HUMBLE_0_VERSION='1.2.20161020-humble161019' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_GAME_MAIN_FILES=' Bastion.bmp Bastion.exe gamecontrollerdb.txt mono monomachineconfig monoconfig Content' CONTENT_DOC_MAIN_FILES=' Linux.README' ## Some Mono libraries are not provided by system packages. CONTENT_GAME0_MAIN_FILES=' FMOD.dll FNA.dll FNA.dll.config Lidgren.Network.dll MojoShader.dll MonoGame.Framework.Net.dll SDL2.dll' ## System-provided libmojoshader.so can not be used, as it triggers the following error: ## System.NullReferenceException: Object reference not set to an instance of an object ## cf. https://forge.dotslashplay.it/play.it/games/-/issues/653 CONTENT_LIBS_FILES=' libfmodex.so libmojoshader.so' CONTENT_LIBS_LIBS64_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib64" CONTENT_LIBS_LIBS64_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/lib64" CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_LIBS32_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib" CONTENT_LIBS_LIBS32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/lib" CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES" ## libSteamWrapper.so is required to prevent a crash of the Humble Bundle build, ## libsteam_api.so is required by libSteamWrapper.so. CONTENT_LIBS0_FILES=' libSteamWrapper.so libsteam_api.so' CONTENT_LIBS0_LIBS64_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib64" CONTENT_LIBS0_LIBS64_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/lib64" CONTENT_LIBS0_LIBS64_FILES_HUMBLE="$CONTENT_LIBS0_FILES" CONTENT_LIBS0_LIBS32_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib" CONTENT_LIBS0_LIBS32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/lib" CONTENT_LIBS0_LIBS32_FILES_HUMBLE="$CONTENT_LIBS0_FILES" APP_MAIN_EXE='Bastion.exe' APP_MAIN_ICON='Bastion.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS32 PKG_LIBS64' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libGL.so.1 libSDL2-2.0.so.0 libudev.so.1' 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.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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-beyond-good-and-evil.sh0000755000000000000000000000746714471751340016101 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Beyond Good and Evil ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='beyond-good-and-evil' GAME_NAME='Beyond Good and Evil' ARCHIVE_BASE_0_NAME='setup_beyond_good_and_evil_2.1.0.9.exe' ARCHIVE_BASE_0_MD5='fdfa4b94cf02e24523b01c9d54568482' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='2195754' ARCHIVE_BASE_0_VERSION='1.0-gog2.1.0.9' ARCHIVE_BASE_0_URL='https://www.gog.com/game/beyond_good_and_evil' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' binkw32.dll bge.exe checkapplication.exe run.exe settingsapplication.exe' CONTENT_GAME0_BIN_PATH='sys' CONTENT_GAME0_BIN_FILES=' eax.dll' CONTENT_GAME_DATA_FILES=' bgemakingof.bik jade.spe sally_clean.bf' CONTENT_DOC_DATA_FILES=' manual.pdf readme.txt' USER_PERSISTENT_FILES=' sally.idx *.sav' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Ubisoft\Beyond Good & Evil\settingsapplication.INI' APP_MAIN_EXE='run.exe' APP_MAIN_ICON='bge.exe' ## Hide EAX library from the game, this helps avoiding some sound issues. ## The library should still be available to the settings application. APP_MAIN_PRERUN=' # Hide EAX library from the game, this helps avoiding some sound issues. rm --force eax.dll ' APP_SETTINGS_ID="${GAME_ID}-settings" APP_SETTINGS_NAME="${GAME_NAME} - settings" APP_SETTINGS_CAT='Settings' APP_SETTINGS_EXE='settingsapplication.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Set install path in registry install_path="C:\\\\${GAME_ID}" registry_dump_install_file='registry-dumps/install-path.reg' registry_dump_install_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\Ubisoft\Beyond Good & Evil] "Install path"="'"${install_path}"'"' CONTENT_GAME_BIN_FILES="${CONTENT_GAME_BIN_FILES:-} $registry_dump_install_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_install_file" SCRIPT_DEPS="${SCRIPT_DEPS:-} iconv" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Automatically spawn game settings window on first launch ## Using desktop_field_exec here ensures that we get a path already escaped if required. settings_cmd=$(desktop_field_exec 'APP_SETTINGS') APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Automatically spawn game settings window on first launch settings_registry_key='\''HKEY_CURRENT_USER\Software\Ubisoft\Beyond Good & Evil\settingsapplication.INI'\'' settings_registry_dump="${REGEDIT_DUMPS_WINEPREFIX_PATH}/$(regedit_convert_key_to_path "$settings_registry_key")" if [ ! -e "$settings_registry_dump" ]; then '"${settings_cmd}"' exit 0 fi' # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Set install path in registry. mkdir --parents "$(dirname "$registry_dump_install_file")" printf '%s' "$registry_dump_install_content" | \ iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_install_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-blacksad-under-the-skin.sh0000755000000000000000000000654714471751340016573 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Blacksad: Under the Skin ### script_version=20240701.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='blacksad-under-the-skin' GAME_NAME='Blacksad: Under the Skin' ARCHIVE_BASE_1_NAME='setup_blacksad_under_the_skin_20240621_(74269).exe' ARCHIVE_BASE_1_MD5='9e1bafb70073291b5bbf554ba9f48cb7' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_blacksad_under_the_skin_20240621_(74269)-1.bin' ARCHIVE_BASE_1_PART1_MD5='19b038f25821bb10fe8439af45db294b' ARCHIVE_BASE_1_PART2_NAME='setup_blacksad_under_the_skin_20240621_(74269)-2.bin' ARCHIVE_BASE_1_PART2_MD5='9085f255243fd1eddc058ded6a69da97' ARCHIVE_BASE_1_PART3_NAME='setup_blacksad_under_the_skin_20240621_(74269)-3.bin' ARCHIVE_BASE_1_PART3_MD5='14e9c32b5fbb26a4c004cca8175dfd42' ARCHIVE_BASE_1_PART4_NAME='setup_blacksad_under_the_skin_20240621_(74269)-4.bin' ARCHIVE_BASE_1_PART4_MD5='b1f14b3ae72154f77f0905f1c51e5bcb' ARCHIVE_BASE_1_SIZE='15208271' ARCHIVE_BASE_1_VERSION='2024.06.21-gog74269' ARCHIVE_BASE_1_URL='https://www.gog.com/game/blacksad_under_the_skin' ARCHIVE_BASE_0_NAME='setup_blacksad_under_the_skin_1.0.5_12210.2935.2020040301_(37312).exe' ARCHIVE_BASE_0_MD5='9c9211aac30170bf4ac85950094f99a2' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_blacksad_under_the_skin_1.0.5_12210.2935.2020040301_(37312)-1.bin' ARCHIVE_BASE_0_PART1_MD5='0d21ed49ef3377b4816ae364cbb5eee1' ARCHIVE_BASE_0_PART2_NAME='setup_blacksad_under_the_skin_1.0.5_12210.2935.2020040301_(37312)-2.bin' ARCHIVE_BASE_0_PART2_MD5='58e82951055a5c863cd804f2421e729f' ARCHIVE_BASE_0_PART3_NAME='setup_blacksad_under_the_skin_1.0.5_12210.2935.2020040301_(37312)-3.bin' ARCHIVE_BASE_0_PART3_MD5='acf9dc21ffa4d483b124561e5b19633d' ARCHIVE_BASE_0_PART4_NAME='setup_blacksad_under_the_skin_1.0.5_12210.2935.2020040301_(37312)-4.bin' ARCHIVE_BASE_0_PART4_MD5='d1c80d50a67c2a4212e9898416193562' ARCHIVE_BASE_0_SIZE='16000000' ARCHIVE_BASE_0_VERSION='1.0.5-gog37312' UNITY3D_NAME='blacksad' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_ASSETS_FILES=" ${UNITY3D_NAME}_data/streamingassets" WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/PenduloStudios/Blacksad' PACKAGES_LIST=' PKG_BIN PKG_DATA_ASSETS PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_ASSETS_ID="${PKG_DATA_ID}-assets" PKG_DATA_ASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - assets" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_ASSETS_ID" 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 . "$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-blackwell.sh0000755000000000000000000002527014471751340014126 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Blackwell series: # - Blackwell 1 # - Blackwell 2 # - Blackwell 3 # - Blackwell 4 # - Blackwell 5 ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID_BLACKWELL1='blackwell-1' GAME_NAME_BLACKWELL1='Blackwell 1: The Blackwell Legacy' GAME_ID_BLACKWELL2='blackwell-2' GAME_NAME_BLACKWELL2='Blackwell 2: Blackwell Unbound' GAME_ID_BLACKWELL3='blackwell-3' GAME_NAME_BLACKWELL3='Blackwell 3: The Blackwell Convergence' GAME_ID_BLACKWELL4='blackwell-4' GAME_NAME_BLACKWELL4='Blackwell 4: The Blackwell Deception' GAME_ID_BLACKWELL5='blackwell-5' GAME_NAME_BLACKWELL5='Blackwell 5: The Blackwell Epiphany' # Game archives ## Blackwell 1 ARCHIVE_BASE_BLACKWELL1_5_NAME='blackwell_legacy_3_5_71786.sh' ARCHIVE_BASE_BLACKWELL1_5_MD5='3b1b569ec92ff53a8ad243627a13c6a2' ARCHIVE_BASE_BLACKWELL1_5_SIZE='312061' ARCHIVE_BASE_BLACKWELL1_5_VERSION='3.5-gog71786' ARCHIVE_BASE_BLACKWELL1_5_URL='https://www.gog.com/game/blackwell_bundle' ARCHIVE_BASE_BLACKWELL1_4_NAME='blackwell_legacy_3_1_67142.sh' ARCHIVE_BASE_BLACKWELL1_4_MD5='840ad19ae85cbfdcbc431e8333767f0d' ARCHIVE_BASE_BLACKWELL1_4_SIZE='312516' ARCHIVE_BASE_BLACKWELL1_4_VERSION='3.1-gog67142' ARCHIVE_BASE_BLACKWELL1_3_NAME='blackwell_legacy_3_0_66153.sh' ARCHIVE_BASE_BLACKWELL1_3_MD5='f21fa6de53dc115ccfb769ffe3ef9e70' ARCHIVE_BASE_BLACKWELL1_3_SIZE='320000' ARCHIVE_BASE_BLACKWELL1_3_VERSION='3.0-gog66153' ARCHIVE_BASE_BLACKWELL1_2_NAME='blackwell_legacy_2_4a_55329.sh' ARCHIVE_BASE_BLACKWELL1_2_MD5='4ac2a52315daa0ccde214adf68dadfc9' ARCHIVE_BASE_BLACKWELL1_2_SIZE='320000' ARCHIVE_BASE_BLACKWELL1_2_VERSION='2.4a-gog55329' ARCHIVE_BASE_BLACKWELL1_1_NAME='blackwell_legacy_2_2_3_53579.sh' ARCHIVE_BASE_BLACKWELL1_1_MD5='1649b8c1c430dd24b0bbe89f7ccb541b' ARCHIVE_BASE_BLACKWELL1_1_SIZE='320000' ARCHIVE_BASE_BLACKWELL1_1_VERSION='2.2.3-gog53579' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BLACKWELL1='blackwell-1_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5_BLACKWELL1='3352b2267c9200b1c06d21c5d65ddef8' ARCHIVE_OPTIONAL_ICONS_URL_BLACKWELL1='https://downloads.dotslashplay.it/games/blackwell/' CONTENT_ICONS_PATH_BLACKWELL1='.' CONTENT_ICONS_FILES_BLACKWELL1=' 16x16 24x24 32x32 48x48 256x256' ## Blackwell 2 ARCHIVE_BASE_BLACKWELL2_5_NAME='blackwell_unbound_3_1a_71097.sh' ARCHIVE_BASE_BLACKWELL2_5_MD5='9bcabf910cf4f719ecb2f4d8a8d033ad' ARCHIVE_BASE_BLACKWELL2_5_SIZE='263113' ARCHIVE_BASE_BLACKWELL2_5_VERSION='3.1a-gog71097' ARCHIVE_BASE_BLACKWELL2_5_URL='https://www.gog.com/game/blackwell_bundle' ARCHIVE_BASE_BLACKWELL2_4_NAME='blackwell_unbound_3_0_67142.sh' ARCHIVE_BASE_BLACKWELL2_4_MD5='8336d9714956fbe4b2a872afdabca960' ARCHIVE_BASE_BLACKWELL2_4_SIZE='263568' ARCHIVE_BASE_BLACKWELL2_4_VERSION='3.0-gog67142' ARCHIVE_BASE_BLACKWELL2_3_NAME='blackwell_unbound_3_0_66153.sh' ARCHIVE_BASE_BLACKWELL2_3_MD5='efcc0c8bb1643ca653b72a3675534dee' ARCHIVE_BASE_BLACKWELL2_3_SIZE='270000' ARCHIVE_BASE_BLACKWELL2_3_VERSION='3.0-gog66153' ARCHIVE_BASE_BLACKWELL2_2_NAME='blackwell_unbound_2_4_57370.sh' ARCHIVE_BASE_BLACKWELL2_2_MD5='3eaef9e29721384d1aec74fe0901f195' ARCHIVE_BASE_BLACKWELL2_2_SIZE='260000' ARCHIVE_BASE_BLACKWELL2_2_VERSION='2.4-gog57370' ARCHIVE_BASE_BLACKWELL2_1_NAME='blackwell_unbound_2_2_2_1_53176.sh' ARCHIVE_BASE_BLACKWELL2_1_MD5='026d7f9171819be7bd4d4bfe3b9e9f6e' ARCHIVE_BASE_BLACKWELL2_1_SIZE='260000' ARCHIVE_BASE_BLACKWELL2_1_VERSION='2.2.2.1-gog53176' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BLACKWELL2='blackwell-2_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5_BLACKWELL2='e7bef09076eaf830effc44d7fe6b8a9e' ARCHIVE_OPTIONAL_ICONS_URL_BLACKWELL2='https://downloads.dotslashplay.it/games/blackwell/' CONTENT_ICONS_PATH_BLACKWELL2='.' CONTENT_ICONS_FILES_BLACKWELL2=' 16x16 24x24 32x32 48x48 256x256' ## Blackwell 3 ARCHIVE_BASE_BLACKWELL3_4_NAME='blackwell_convergence_3_1a_71097.sh' ARCHIVE_BASE_BLACKWELL3_4_MD5='1ca9574462053e33555da972f02accbc' ARCHIVE_BASE_BLACKWELL3_4_SIZE='325125' ARCHIVE_BASE_BLACKWELL3_4_VERSION='3.1a-gog71097' ARCHIVE_BASE_BLACKWELL3_4_URL='https://www.gog.com/game/blackwell_bundle' ARCHIVE_BASE_BLACKWELL3_3_NAME='blackwell_convergence_3_0_67142.sh' ARCHIVE_BASE_BLACKWELL3_3_MD5='a0e8f8eb25df6e3aab086424c4e5c8e7' ARCHIVE_BASE_BLACKWELL3_3_SIZE='325592' ARCHIVE_BASE_BLACKWELL3_3_VERSION='3.0-gog67142' ARCHIVE_BASE_BLACKWELL3_2_NAME='blackwell_convergence_3_0_66153.sh' ARCHIVE_BASE_BLACKWELL3_2_MD5='2c074d610175629e72e1f7e4970e9342' ARCHIVE_BASE_BLACKWELL3_2_SIZE='330000' ARCHIVE_BASE_BLACKWELL3_2_VERSION='3.0-gog66153' ARCHIVE_BASE_BLACKWELL3_1_NAME='blackwell_convergence_2_2_2_53176.sh' ARCHIVE_BASE_BLACKWELL3_1_MD5='e0e6b8c425c35804f47aa0ffe41ff98d' ARCHIVE_BASE_BLACKWELL3_1_SIZE='380000' ARCHIVE_BASE_BLACKWELL3_1_VERSION='2.2.2-gog53176' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BLACKWELL3='blackwell-3_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5_BLACKWELL3='49cb2320d1a32788399493dd42e3d607' ARCHIVE_OPTIONAL_ICONS_URL_BLACKWELL3='https://downloads.dotslashplay.it/games/blackwell/' CONTENT_ICONS_PATH_BLACKWELL3='.' CONTENT_ICONS_FILES_BLACKWELL3=' 32x32 64x64 256x256' ## Blackwell 4 ARCHIVE_BASE_BLACKWELL4_4_NAME='blackwell_deception_3_2_72383.sh' ARCHIVE_BASE_BLACKWELL4_4_MD5='65531d5078cefc73589ddefcb4e10672' ARCHIVE_BASE_BLACKWELL4_4_SIZE='585481' ARCHIVE_BASE_BLACKWELL4_4_VERSION='3.2-gog72383' ARCHIVE_BASE_BLACKWELL4_4_URL='https://www.gog.com/game/blackwell_bundle' ARCHIVE_BASE_BLACKWELL4_3_NAME='blackwell_deception_3_0_67142.sh' ARCHIVE_BASE_BLACKWELL4_3_MD5='c4823fb1410fd412b6262323d9b05a19' ARCHIVE_BASE_BLACKWELL4_3_SIZE='585944' ARCHIVE_BASE_BLACKWELL4_3_VERSION='3.0-gog67142' ARCHIVE_BASE_BLACKWELL4_2_NAME='blackwell_deception_3_0_66153.sh' ARCHIVE_BASE_BLACKWELL4_2_MD5='c8839642e293df1a016db8ed6046dbee' ARCHIVE_BASE_BLACKWELL4_2_SIZE='590000' ARCHIVE_BASE_BLACKWELL4_2_VERSION='3.0-gog66153' ARCHIVE_BASE_BLACKWELL4_1_NAME='blackwell_deception_1_3_53244.sh' ARCHIVE_BASE_BLACKWELL4_1_MD5='61c144995e396515948fbb15c3467494' ARCHIVE_BASE_BLACKWELL4_1_SIZE='660000' ARCHIVE_BASE_BLACKWELL4_1_VERSION='1.3-gog53244' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BLACKWELL4='blackwell-4_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5_BLACKWELL4='d9dae751697727cb42e43221755f507a' ARCHIVE_OPTIONAL_ICONS_URL_BLACKWELL4='https://downloads.dotslashplay.it/games/blackwell/' CONTENT_ICONS_PATH_BLACKWELL4='.' CONTENT_ICONS_FILES_BLACKWELL4=' 16x16 24x24 32x32 48x48 256x256' ## Blackwell 5 ARCHIVE_BASE_BLACKWELL5_4_NAME='blackwell_epiphany_3_1a_71097.sh' ARCHIVE_BASE_BLACKWELL5_4_MD5='b313ed9ee4a8531a2205f3d9f1932f9d' ARCHIVE_BASE_BLACKWELL5_4_SIZE='864300' ARCHIVE_BASE_BLACKWELL5_4_VERSION='3.1a-gog71097' ARCHIVE_BASE_BLACKWELL5_4_URL='https://www.gog.com/game/blackwell_epiphany_the' ARCHIVE_BASE_BLACKWELL5_3_NAME='blackwell_epiphany_3_0_67142.sh' ARCHIVE_BASE_BLACKWELL5_3_MD5='bc979e295bee8e1e7e59299bea33080f' ARCHIVE_BASE_BLACKWELL5_3_SIZE='864772' ARCHIVE_BASE_BLACKWELL5_3_VERSION='3.0-gog67142' ARCHIVE_BASE_BLACKWELL5_2_NAME='blackwell_epiphany_3_0_66153.sh' ARCHIVE_BASE_BLACKWELL5_2_MD5='c0865ccac7ad31c7dc95a0b1a171e589' ARCHIVE_BASE_BLACKWELL5_2_SIZE='870000' ARCHIVE_BASE_BLACKWELL5_2_VERSION='3.0-gog66153' ARCHIVE_BASE_BLACKWELL5_1_NAME='blackwell_epiphany_2_2_53244.sh' ARCHIVE_BASE_BLACKWELL5_1_MD5='6ffbcfb56b62e476a0255eaa1a2aae6d' ARCHIVE_BASE_BLACKWELL5_1_SIZE='890000' ARCHIVE_BASE_BLACKWELL5_1_VERSION='2.2-gog53244' ### Optional icons pack ## FIXME: Despite its .tar.gz file extension, this is an uncompressed tar archive. ARCHIVE_OPTIONAL_ICONS_NAME_BLACKWELL5='blackwell-5_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_BLACKWELL5='cf27b6428d455ac9e6af2e5c8b065a43' ARCHIVE_OPTIONAL_ICONS_TYPE_BLACKWELL5='tar' ARCHIVE_OPTIONAL_ICONS_URL_BLACKWELL5='https://downloads.dotslashplay.it/games/blackwell/' CONTENT_ICONS_PATH_BLACKWELL5='.' CONTENT_ICONS_FILES_BLACKWELL5=' 16x16 24x24 32x32 48x48 256x256' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' *.ags *.cfg *.exe *.vox' CONTENT_DOC_MAIN_FILES=' licenses' APP_MAIN_SCUMMID_BLACKWELL1='ags:blackwell1' APP_MAIN_SCUMMID_BLACKWELL2='ags:blackwell2' APP_MAIN_SCUMMID_BLACKWELL3='ags:blackwell3' APP_MAIN_SCUMMID_BLACKWELL4='ags:blackwell4' APP_MAIN_SCUMMID_BLACKWELL5='ags:blackwell5' APP_MAIN_ICON='../support/icon.png' APP_MAIN_ICON_BLACKWELL1_1='Blackwell Legacy.exe' APP_MAIN_ICON_BLACKWELL1_2='Blackwell Legacy.exe' APP_MAIN_ICON_BLACKWELL2_1='Unbound.exe' APP_MAIN_ICON_BLACKWELL2_2='Unbound.exe' APP_MAIN_ICON_BLACKWELL3_1='Convergence.exe' APP_MAIN_ICON_BLACKWELL4_1='Deception.exe' APP_MAIN_ICON_BLACKWELL5_1='Epiphany.exe' ## Switch French keyboard layout to us-azerty to provide direct access to digits. ## TODO: Update this snippet to make it work on Wayland too. APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # Switch French keyboard layout to us-azerty to provide direct access to digits. # This is required to not get stuck when asked to type digits in-game. ## This works on X.org only, not on Wayland. if [ -z "${WAYLAND_DISPLAY:-}" ] && [ -n "${DISPLAY:-}" ] && command -v setxkbmap >/dev/null 2>&1; then KEYBOARD_RESTORE_VARIANT=0 KEYBOARD_LAYOUT=$(LANG=C setxkbmap -query | awk "/layout:/ {print \$2}") if [ "$KEYBOARD_LAYOUT" = "fr" ]; then KEYBOARD_VARIANT=$(LANG=C setxkbmap -query | awk "/variant:/ {print \$2}") if [ "$KEYBOARD_VARIANT" != "us-azerty" ]; then KEYBOARD_RESTORE_VARIANT=1 setxkbmap -variant us-azerty fi fi fi ' APP_MAIN_POSTRUN="${APP_MAIN_POSTRUN:-}"' # Restore the keyboard variant, if it has previously been switched to us-azerty. ## This works on X.org only, not on Wayland. if [ -z "${WAYLAND_DISPLAY:-}" ] && [ -n "${DISPLAY:-}" ] && command -v setxkbmap >/dev/null 2>&1; then if [ $KEYBOARD_RESTORE_VARIANT -eq 1 ]; then setxkbmap -variant "$KEYBOARD_VARIANT" fi fi ' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data ## FIXME: Blackwell 5 - Despite its .tar.gz file extension, the icons archive is an uncompressed tar archive. ARCHIVE_ICONS_TYPE=$(context_value 'ARCHIVE_OPTIONAL_ICONS_TYPE') 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-bleed-series.sh0000755000000000000000000000771714471751340014537 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Bleed series: # - Bleed 1 # - Bleed 2 ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' 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_PATH="${CONTENT_PATH_DEFAULT}/lib64" CONTENT_LIBS_LIBS32_PATH="${CONTENT_PATH_DEFAULT}/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_LIBS_ID_BLEED1="${GAME_ID_BLEED1}-libs" PKG_LIBS_ID_BLEED2="${GAME_ID_BLEED2}-libs" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' 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_MAIN_DEPS_BLEED1="$PKG_LIBS_ID_BLEED1" PKG_MAIN_DEPS_BLEED2="$PKG_LIBS_ID_BLEED2" 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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-book-of-hours-expansions.sh0000755000000000000000000000603614471751340017044 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Book of Hours expansions: # - Perpetual Edition ### script_version=20240531.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='book-of-hours' GAME_NAME='Book of Hours' EXPANSION_ID_PERPETUAL='perpetual-edition' EXPANSION_NAME_PERPETUAL='Perpetual Edition' # Archives ## Perpetual Edition ARCHIVE_BASE_PERPETUAL_8_NAME='book_of_hours_perpetual_edition_content_2024_3_e_15_72083.sh' ARCHIVE_BASE_PERPETUAL_8_MD5='2b21b55d6889a4c18ae57cbb1b22cb04' ARCHIVE_BASE_PERPETUAL_8_SIZE='75087' ARCHIVE_BASE_PERPETUAL_8_VERSION='2024.03.e.15-gog72083' ARCHIVE_BASE_PERPETUAL_7_NAME='book_of_hours_perpetual_edition_content_2024_2_e_11_71531.sh' ARCHIVE_BASE_PERPETUAL_7_MD5='a120f5371c1297a8ae13095b7ee3ccdb' ARCHIVE_BASE_PERPETUAL_7_SIZE='75087' ARCHIVE_BASE_PERPETUAL_7_VERSION='2024.02.e.11-gog71531' ARCHIVE_BASE_PERPETUAL_6_NAME='book_of_hours_perpetual_edition_content_2023_12_d_12_69519.sh' ARCHIVE_BASE_PERPETUAL_6_MD5='77796819b6f4a466fed0638fcb685412' ARCHIVE_BASE_PERPETUAL_6_SIZE='75408' ARCHIVE_BASE_PERPETUAL_6_VERSION='2023.12.d.12-gog69519' ARCHIVE_BASE_PERPETUAL_3_NAME='book_of_hours_perpetual_edition_content_2023_11_d_4_69228.sh' ARCHIVE_BASE_PERPETUAL_3_MD5='d5bb3e49df9b8c142ac25aed53c78d01' ARCHIVE_BASE_PERPETUAL_3_SIZE='75404' ARCHIVE_BASE_PERPETUAL_3_VERSION='2023.11.d.4-gog69228' ARCHIVE_BASE_PERPETUAL_2_NAME='book_of_hours_perpetual_edition_content_2023_10_c_11_68174.sh' ARCHIVE_BASE_PERPETUAL_2_MD5='0be5366899fdd4f209153a2671ca87ba' ARCHIVE_BASE_PERPETUAL_2_SIZE='75404' ARCHIVE_BASE_PERPETUAL_2_VERSION='2023.10.c.11-gog68174' ARCHIVE_BASE_PERPETUAL_1_NAME='book_of_hours_perpetual_edition_content_2023_9_b_12_67790.sh' ARCHIVE_BASE_PERPETUAL_1_MD5='a0eafa7c516ad47b0c58e9af037b99b1' ARCHIVE_BASE_PERPETUAL_1_SIZE='75408' ARCHIVE_BASE_PERPETUAL_1_VERSION='2023.09.b.12-gog67790' ARCHIVE_BASE_PERPETUAL_0_NAME='book_of_hours_perpetual_edition_content_2023_8_g_2_67165.sh' ARCHIVE_BASE_PERPETUAL_0_MD5='c426a4968539633c0d0959744ea3d671' ARCHIVE_BASE_PERPETUAL_0_SIZE='75408' ARCHIVE_BASE_PERPETUAL_0_VERSION='2023.08.g.2-gog67165' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES_PERPETUAL=' bh_Data/StreamingAssets/edition/semper.txt' PKG_MAIN_DEPS="$GAME_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-book-of-hours.sh0000755000000000000000000000627214471751340014661 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Book of Hours ### script_version=20240531.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='book-of-hours' GAME_NAME='Book of Hours' ARCHIVE_BASE_10_NAME='book_of_hours_2024_3_e_17_72226.sh' ARCHIVE_BASE_10_MD5='c4185397829ad4d98a7fa25eddd24235' ARCHIVE_BASE_10_SIZE='2028310' ARCHIVE_BASE_10_VERSION='2024.03.e.17-gog72226' ARCHIVE_BASE_10_URL='https://www.gog.com/game/book_of_hours' ARCHIVE_BASE_9_NAME='book_of_hours_2024_3_e_15_72083.sh' ARCHIVE_BASE_9_MD5='b0c6523f10007bfca845adf6d03000f7' ARCHIVE_BASE_9_SIZE='2024832' ARCHIVE_BASE_9_VERSION='2024.03.e.15-gog72083' ARCHIVE_BASE_8_NAME='book_of_hours_2024_2_e_11_71531.sh' ARCHIVE_BASE_8_MD5='253b536e020ae39d617cc0746be3d5ee' ARCHIVE_BASE_8_SIZE='1998185' ARCHIVE_BASE_8_VERSION='2024.02.e.11-gog71531' ARCHIVE_BASE_7_NAME='book_of_hours_2023_12_d_12_69519.sh' ARCHIVE_BASE_7_MD5='f99ac227e448683eb9cb9586e0d43cc8' ARCHIVE_BASE_7_SIZE='1938644' ARCHIVE_BASE_7_VERSION='2023.12.d.12-gog69519' ARCHIVE_BASE_4_NAME='book_of_hours_2023_11_d_4_69228.sh' ARCHIVE_BASE_4_MD5='f0dfed821caeb83d795a176dd9571281' ARCHIVE_BASE_4_SIZE='1934820' ARCHIVE_BASE_4_VERSION='2023.11.d.4-gog69228' ARCHIVE_BASE_3_NAME='book_of_hours_2023_10_c_11_68174.sh' ARCHIVE_BASE_3_MD5='958bd653dd8a2453c9920ab60fc96e29' ARCHIVE_BASE_3_SIZE='1932668' ARCHIVE_BASE_3_VERSION='2023.10.c.11-gog68174' ARCHIVE_BASE_2_NAME='book_of_hours_2023_9_b_12_67790.sh' ARCHIVE_BASE_2_MD5='2875c037ee2ff44b41191471449248a1' ARCHIVE_BASE_2_SIZE='1930344' ARCHIVE_BASE_2_VERSION='2023.09.b.12-gog67790' ARCHIVE_BASE_1_NAME='book_of_hours_2023_8_g_2_67165.sh' ARCHIVE_BASE_1_MD5='4d6c689f68c4debb4ad68a3dc1c018b5' ARCHIVE_BASE_1_SIZE='1927812' ARCHIVE_BASE_1_VERSION='2023.08.g.2-gog67165' ARCHIVE_BASE_0_NAME='book_of_hours_2023_8_a_7_2_66829.sh' ARCHIVE_BASE_0_MD5='7e8083b57019140127cb7bcffbccb737' ARCHIVE_BASE_0_SIZE='2900000' ARCHIVE_BASE_0_VERSION='2023.08.a.7.2-gog66829' UNITY3D_NAME='bh' ## Prevent inclusion of Steam libraries. UNITY3D_PLUGINS=' ' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-caesar-3.sh0000755000000000000000000000773714471751340013574 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Caesar 3 ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='caesar-3' GAME_NAME='Cæsar Ⅲ' # Archives ## Base game installer ARCHIVE_BASE_0_NAME='setup_caesar3_2.0.0.9.exe' ARCHIVE_BASE_0_MD5='2ee16fab54493e1c2a69122fd2e56635' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='550000' ARCHIVE_BASE_0_VERSION='1.1-gog2.0.0.9' ARCHIVE_BASE_0_URL='https://www.gog.com/game/caesar_3' ## Julius archives ARCHIVE_REQUIRED_JULIUS_5_NAME='julius-1.7.0-linux-x86_64.zip' ARCHIVE_REQUIRED_JULIUS_5_MD5='3678ed789e4fd822076fbc39b87268cb' ARCHIVE_REQUIRED_JULIUS_5_SIZE='2400' ARCHIVE_REQUIRED_JULIUS_5_URL='https://github.com/bvschaik/julius/releases/tag/v1.7.0' ARCHIVE_REQUIRED_JULIUS_4_NAME='julius-1.6.0-linux-x86_64.zip' ARCHIVE_REQUIRED_JULIUS_4_MD5='2ea82121f9752c0c7624b3a70bbf5bac' ARCHIVE_REQUIRED_JULIUS_4_SIZE='2400' ARCHIVE_REQUIRED_JULIUS_4_URL='https://github.com/bvschaik/julius/releases/tag/v1.6.0' ARCHIVE_REQUIRED_JULIUS_3_NAME='julius-1.5.1-linux-x86_64.zip' ARCHIVE_REQUIRED_JULIUS_3_MD5='ff01fea442f0d68de5f705411be84ae7' ARCHIVE_REQUIRED_JULIUS_3_SIZE='2300' ARCHIVE_REQUIRED_JULIUS_3_URL='https://github.com/bvschaik/julius/releases/tag/v1.5.1' ARCHIVE_REQUIRED_JULIUS_2_NAME='julius-1.5.0-linux-x86_64.zip' ARCHIVE_REQUIRED_JULIUS_2_MD5='57392aab52e820149a0416c31f02cd17' ARCHIVE_REQUIRED_JULIUS_2_SIZE='2300' ARCHIVE_REQUIRED_JULIUS_2_URL='https://github.com/bvschaik/julius/releases/tag/v1.5.0' ARCHIVE_REQUIRED_JULIUS_1_NAME='julius-1.4.1-linux-x86_64.zip' ARCHIVE_REQUIRED_JULIUS_1_MD5='6f09868205f502b8c006d88702d6455d' ARCHIVE_REQUIRED_JULIUS_1_SIZE='2300' ARCHIVE_REQUIRED_JULIUS_1_URL='https://github.com/bvschaik/julius/releases/tag/v1.4.1' ARCHIVE_REQUIRED_JULIUS_0_NAME='julius-1.4.0-linux-x86_64.zip' ARCHIVE_REQUIRED_JULIUS_0_MD5='a686cddb59e3b89d22baf3b73fdce9ef' ARCHIVE_REQUIRED_JULIUS_0_SIZE='2200' ARCHIVE_REQUIRED_JULIUS_0_URL='https://github.com/bvschaik/julius/releases/tag/v1.4.0' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_DATA_FILES=' 555 smk wavs mission1.pak c3_model.txt *.555 *.emp *.eng *.map *.sg2' CONTENT_GAME_BIN_PATH='.' CONTENT_GAME_BIN_FILES=' julius' CONTENT_DOC_DATA_FILES=' readme.txt *.pdf' USER_PERSISTENT_FILES=' c3_model.txt status.txt *.ini *.sav' APP_MAIN_EXE='julius' APP_MAIN_ICON='c3.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libm.so.6 libSDL2-2.0.so.0 libSDL2_mixer-2.0.so.0' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Check for the presence of the archive providing the Julius engine # cf. https://github.com/bvschaik/julius archive_initialize_required 'ARCHIVE_JULIUS' \ 'ARCHIVE_REQUIRED_JULIUS_5' \ 'ARCHIVE_REQUIRED_JULIUS_4' \ 'ARCHIVE_REQUIRED_JULIUS_3' \ 'ARCHIVE_REQUIRED_JULIUS_2' \ 'ARCHIVE_REQUIRED_JULIUS_1' \ 'ARCHIVE_REQUIRED_JULIUS_0' # Extract game data archive_extraction_default archive_extraction 'ARCHIVE_JULIUS' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN')" ## Enforce minimal permissions on the Julius binary. chmod 755 "$(application_exe 'APP_MAIN')" ) # 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-children-of-morta-expansions.sh0000755000000000000000000000400014471751340017651 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Children of Morta expansions: # - Ancient Spirits # - Paws and Claws ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='children-of-morta' GAME_NAME='Children of Morta' EXPANSION_ID_ANCIENT='ancient-spirits' EXPANSION_NAME_ANCIENT='Ancient Spirits' EXPANSION_ID_PAWS='paws-and-claws' EXPANSION_NAME_PAWS='Paws and Claws' # Archives ## Ancient Spirits ARCHIVE_BASE_ANCIENT_0_NAME='backers_dlc_1_2_63_48061.sh' ARCHIVE_BASE_ANCIENT_0_MD5='931cfdfd304b909efbe61ac4d6c10b34' ARCHIVE_BASE_ANCIENT_0_SIZE='1026' ARCHIVE_BASE_ANCIENT_0_VERSION='1.2.63-gog48061' ARCHIVE_BASE_ANCIENT_0_URL='https://www.gog.com/en/game/children_of_morta_ancient_spirits' ## Paws and Claws ARCHIVE_BASE_PAWS_0_NAME='children_of_morta_paws_and_claws_1_2_63_48061.sh' ARCHIVE_BASE_PAWS_0_MD5='09efef01a9bd0c1a5172e1fe7fd19530' ARCHIVE_BASE_PAWS_0_SIZE='1026' ARCHIVE_BASE_PAWS_0_VERSION='1.2.63-gog48061' ARCHIVE_BASE_PAWS_0_URL='https://www.gog.com/en/game/children_of_morta_paws_and_claws' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' goggame-*.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-children-of-morta.sh0000755000000000000000000000407114471751340015474 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Children of Morta ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='children-of-morta' GAME_NAME='Children of Morta' ARCHIVE_BASE_0_NAME='children_of_morta_1_2_63_48061.sh' ARCHIVE_BASE_0_MD5='3f70026a2f2adf1eff19c25041e94a3e' ARCHIVE_BASE_0_SIZE='1309191' ARCHIVE_BASE_0_VERSION='1.2.63-gog48061' ARCHIVE_BASE_0_URL='https://www.gog.com/game/children_of_morta' UNITY3D_NAME='ChildrenOfMorta' UNITY3D_PLUGINS=' libfmodL.so libfmod.so libfmodstudioL.so libfmodstudio.so libgvraudio.so libresonanceaudio.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' 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 . "$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-citizen-sleeper.sh0000755000000000000000000000357214471751340015271 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Citizen Sleeper ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='citizen-sleeper' GAME_NAME='Citizen Sleeper' ARCHIVE_BASE_1_NAME='setup_citizen_sleeper_1.4.6_(69854).exe' ARCHIVE_BASE_1_MD5='ac9b59f393ca34a89a42ba510bbba4ab' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='1170957' ARCHIVE_BASE_1_VERSION='1.4.6-gog69854' ARCHIVE_BASE_1_URL='https://www.gog.com/game/citizen_sleeper' ARCHIVE_BASE_0_NAME='setup_citizen_sleeper_1.3.9_(65533).exe' ARCHIVE_BASE_0_MD5='50b240a6cd4fb79096d6d5252daac6b7' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='973177' ARCHIVE_BASE_0_VERSION='1.3.9-gog65533' UNITY3D_NAME='citizen sleeper' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Jump Over the Age/Citizen Sleeper' 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 . "$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-cultist-simulator-expansions.sh0000755000000000000000000002577514471751340020071 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Cultist Simulator expansions: # - Perpetual Edition # - The Dancer # - The Ghoul # - The Priest # - The Exile ### script_version=20240531.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='cultist-simulator' GAME_NAME='Cultist Simulator' EXPANSION_ID_PERPETUAL='perpetual-edition' EXPANSION_NAME_PERPETUAL='Perpetual Edition' EXPANSION_ID_DANCER='the-dancer' EXPANSION_NAME_DANCER='The Dancer' EXPANSION_ID_GHOUL='the-ghoul' EXPANSION_NAME_GHOUL='The Ghoul' EXPANSION_ID_PRIEST='the-priest' EXPANSION_NAME_PRIEST='The Priest' EXPANSION_ID_EXILE='the-exile' EXPANSION_NAME_EXILE='The Exile' # Archives ## Perpetual Edition ARCHIVE_BASE_PERPETUAL_7_NAME='cultist_simulator_perpetual_edition_content_2023_12_s_5_71509.sh' ARCHIVE_BASE_PERPETUAL_7_MD5='ba64a839ed79df208e346e45705028c7' ARCHIVE_BASE_PERPETUAL_7_SIZE='897' ARCHIVE_BASE_PERPETUAL_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_PERPETUAL_6_NAME='cultist_simulator_perpetual_edition_content_2023_12_s_4_71175.sh' ARCHIVE_BASE_PERPETUAL_6_MD5='b06fb18d1183088111c459e4369823b0' ARCHIVE_BASE_PERPETUAL_6_SIZE='897' ARCHIVE_BASE_PERPETUAL_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_PERPETUAL_5_NAME='cultist_simulator_perpetual_edition_content_2023_10_r_10_68985.sh' ARCHIVE_BASE_PERPETUAL_5_MD5='d4b6b6332df5a68e0e819ecfde900ca8' ARCHIVE_BASE_PERPETUAL_5_SIZE='1212' ARCHIVE_BASE_PERPETUAL_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_PERPETUAL_4_NAME='cultist_simulator_perpetual_edition_content_2023_5_p_12_67501.sh' ARCHIVE_BASE_PERPETUAL_4_MD5='2a725b7b09eb2990bf5452b904575e0f' ARCHIVE_BASE_PERPETUAL_4_SIZE='1212' ARCHIVE_BASE_PERPETUAL_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_PERPETUAL_3_NAME='cultist_simulator_perpetual_edition_content_2023_4_o_4_64959.sh' ARCHIVE_BASE_PERPETUAL_3_MD5='4e753614162be0092276c2f79c6fa536' ARCHIVE_BASE_PERPETUAL_3_SIZE='1300' ARCHIVE_BASE_PERPETUAL_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_PERPETUAL_2_NAME='cultist_simulator_perpetual_edition_content_2022_12_n_2_61763.sh' ARCHIVE_BASE_PERPETUAL_2_MD5='d075fca6120b358a13349e0df210c80c' ARCHIVE_BASE_PERPETUAL_2_SIZE='1300' ARCHIVE_BASE_PERPETUAL_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_PERPETUAL_1_NAME='cultist_simulator_perpetual_edition_content_2022_3_p_1_54545.sh' ARCHIVE_BASE_PERPETUAL_1_MD5='b6523031eb075dab51ab73aaeefd8b8a' ARCHIVE_BASE_PERPETUAL_1_SIZE='1300' ARCHIVE_BASE_PERPETUAL_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_PERPETUAL_0_NAME='cultist_simulator_perpetual_edition_content_2022_3_n_1_54418.sh' ARCHIVE_BASE_PERPETUAL_0_MD5='76dd2895edb86c9e5086ff073b86bd41' ARCHIVE_BASE_PERPETUAL_0_SIZE='1300' ARCHIVE_BASE_PERPETUAL_0_VERSION='2022.03.n.1-gog54418' ## The Dancer ARCHIVE_BASE_DANCER_7_NAME='cultist_simulator_the_dancer_2023_12_s_5_71509.sh' ARCHIVE_BASE_DANCER_7_MD5='7411914a034e8f059f2f78b1476101d2' ARCHIVE_BASE_DANCER_7_SIZE='1178' ARCHIVE_BASE_DANCER_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_DANCER_7_URL='https://www.gog.com/game/cultist_simulator_the_dancer' ARCHIVE_BASE_DANCER_6_NAME='cultist_simulator_the_dancer_2023_12_s_4_71175.sh' ARCHIVE_BASE_DANCER_6_MD5='5a33ee82ccc822bc5a249288093e315a' ARCHIVE_BASE_DANCER_6_SIZE='1178' ARCHIVE_BASE_DANCER_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_DANCER_5_NAME='cultist_simulator_the_dancer_2023_10_r_10_68985.sh' ARCHIVE_BASE_DANCER_5_MD5='3202862234290566863abf42afe2e0eb' ARCHIVE_BASE_DANCER_5_SIZE='1580' ARCHIVE_BASE_DANCER_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_DANCER_4_NAME='cultist_simulator_the_dancer_2023_5_p_12_67501.sh' ARCHIVE_BASE_DANCER_4_MD5='1735b3ba59f8d72f04fac14fc0c7c58b' ARCHIVE_BASE_DANCER_4_SIZE='1580' ARCHIVE_BASE_DANCER_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_DANCER_3_NAME='cultist_simulator_the_dancer_2023_4_o_4_64959.sh' ARCHIVE_BASE_DANCER_3_MD5='3174e4feddd8c11acc39aa0cac8696de' ARCHIVE_BASE_DANCER_3_SIZE='1600' ARCHIVE_BASE_DANCER_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_DANCER_2_NAME='cultist_simulator_the_dancer_2022_12_n_2_61763.sh' ARCHIVE_BASE_DANCER_2_MD5='36fbfe3d25d28f0a465a72dc394eb6b7' ARCHIVE_BASE_DANCER_2_SIZE='1600' ARCHIVE_BASE_DANCER_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_DANCER_1_NAME='cultist_simulator_the_dancer_2022_3_p_1_54545.sh' ARCHIVE_BASE_DANCER_1_MD5='e8b5d104fd30e6e7566bc24fbca5d718' ARCHIVE_BASE_DANCER_1_SIZE='1600' ARCHIVE_BASE_DANCER_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_DANCER_0_NAME='cultist_simulator_the_dancer_2022_3_n_1_54418.sh' ARCHIVE_BASE_DANCER_0_MD5='8dbbb7e6121b9d62661837191f053405' ARCHIVE_BASE_DANCER_0_SIZE='1600' ARCHIVE_BASE_DANCER_0_VERSION='2022.03.n.1-gog54418' ## The Ghoul ARCHIVE_BASE_GHOUL_7_NAME='cultist_simulator_the_ghoul_2023_12_s_5_71509.sh' ARCHIVE_BASE_GHOUL_7_MD5='8185ddbb6681d90a233078d959188c2e' ARCHIVE_BASE_GHOUL_7_SIZE='1163' ARCHIVE_BASE_GHOUL_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_GHOUL_7_URL='https://www.gog.com/game/cultist_simulator_the_ghoul' ARCHIVE_BASE_GHOUL_6_NAME='cultist_simulator_the_ghoul_2023_12_s_4_71175.sh' ARCHIVE_BASE_GHOUL_6_MD5='ff6fdc10d98aea9e260522521112d176' ARCHIVE_BASE_GHOUL_6_SIZE='1163' ARCHIVE_BASE_GHOUL_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_GHOUL_5_NAME='cultist_simulator_the_ghoul_2023_10_r_10_68985.sh' ARCHIVE_BASE_GHOUL_5_MD5='7ee4993ad1e507cd48c705a6cbc0fe90' ARCHIVE_BASE_GHOUL_5_SIZE='1592' ARCHIVE_BASE_GHOUL_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_GHOUL_4_NAME='cultist_simulator_the_ghoul_2023_5_p_12_67501.sh' ARCHIVE_BASE_GHOUL_4_MD5='06c81c342ee8bcc81e298d5dd519d2e7' ARCHIVE_BASE_GHOUL_4_SIZE='1592' ARCHIVE_BASE_GHOUL_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_GHOUL_3_NAME='cultist_simulator_the_ghoul_2023_4_o_4_64959.sh' ARCHIVE_BASE_GHOUL_3_MD5='246f3518914281bca5d0647170e1c12f' ARCHIVE_BASE_GHOUL_3_SIZE='1600' ARCHIVE_BASE_GHOUL_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_GHOUL_2_NAME='cultist_simulator_the_ghoul_2022_12_n_2_61763.sh' ARCHIVE_BASE_GHOUL_2_MD5='53674742e8cb5a7570a6f5318a998261' ARCHIVE_BASE_GHOUL_2_SIZE='1600' ARCHIVE_BASE_GHOUL_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_GHOUL_1_NAME='cultist_simulator_the_ghoul_2022_3_p_1_54545.sh' ARCHIVE_BASE_GHOUL_1_MD5='c04cd53c229a5cb2d243a6c00e4e6847' ARCHIVE_BASE_GHOUL_1_SIZE='1600' ARCHIVE_BASE_GHOUL_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_GHOUL_0_NAME='cultist_simulator_the_ghoul_2022_3_n_1_54418.sh' ARCHIVE_BASE_GHOUL_0_MD5='d1b72e87563e87df340570dd91ec44a2' ARCHIVE_BASE_GHOUL_0_SIZE='1600' ARCHIVE_BASE_GHOUL_0_VERSION='2022.03.n.1-gog54418' ## The Priest ARCHIVE_BASE_PRIEST_7_NAME='cultist_simulator_the_priest_2023_12_s_5_71509.sh' ARCHIVE_BASE_PRIEST_7_MD5='0b5d5436b8853cfc3a100404070779c8' ARCHIVE_BASE_PRIEST_7_SIZE='1238' ARCHIVE_BASE_PRIEST_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_PRIEST_7_URL='https://www.gog.com/game/cultist_simulator_the_priest' ARCHIVE_BASE_PRIEST_6_NAME='cultist_simulator_the_priest_2023_12_s_4_71175.sh' ARCHIVE_BASE_PRIEST_6_MD5='84f26baca8a0219e3b11f6f91fca3bb9' ARCHIVE_BASE_PRIEST_6_SIZE='1238' ARCHIVE_BASE_PRIEST_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_PRIEST_5_NAME='cultist_simulator_the_priest_2023_10_r_10_68985.sh' ARCHIVE_BASE_PRIEST_5_MD5='98051cfd374e9165e59377fbac3a3c35' ARCHIVE_BASE_PRIEST_5_SIZE='1668' ARCHIVE_BASE_PRIEST_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_PRIEST_4_NAME='cultist_simulator_the_priest_2023_5_p_12_67501.sh' ARCHIVE_BASE_PRIEST_4_MD5='c6e17f6d95cf866bcd91fff881216ca8' ARCHIVE_BASE_PRIEST_4_SIZE='1668' ARCHIVE_BASE_PRIEST_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_PRIEST_3_NAME='cultist_simulator_the_priest_2023_4_o_4_64959.sh' ARCHIVE_BASE_PRIEST_3_MD5='fd1b784c35b7d1acadeebb5f6da8ea68' ARCHIVE_BASE_PRIEST_3_SIZE='1700' ARCHIVE_BASE_PRIEST_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_PRIEST_2_NAME='cultist_simulator_the_priest_2022_12_n_2_61763.sh' ARCHIVE_BASE_PRIEST_2_MD5='1f12513a9b61863ced08ebe7ff3f2001' ARCHIVE_BASE_PRIEST_2_SIZE='1700' ARCHIVE_BASE_PRIEST_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_PRIEST_1_NAME='cultist_simulator_the_priest_2022_3_p_1_54545.sh' ARCHIVE_BASE_PRIEST_1_MD5='e56271d1fd1e2eca197d4bef956965c9' ARCHIVE_BASE_PRIEST_1_SIZE='1700' ARCHIVE_BASE_PRIEST_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_PRIEST_0_NAME='cultist_simulator_the_priest_2022_3_n_1_54418.sh' ARCHIVE_BASE_PRIEST_0_MD5='26516af73ab47d8aa161a6e2ad99eb5f' ARCHIVE_BASE_PRIEST_0_SIZE='1700' ARCHIVE_BASE_PRIEST_0_VERSION='2022.03.n.1-gog54418' ## The Exile ARCHIVE_BASE_EXILE_7_NAME='cultist_simulator_the_exile_2023_12_s_5_71509.sh' ARCHIVE_BASE_EXILE_7_MD5='b8ec4b2021be5b82b4d1bea8f85e2275' ARCHIVE_BASE_EXILE_7_SIZE='5482' ARCHIVE_BASE_EXILE_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_EXILE_7_URL='https://www.gog.com/game/cultist_simulator_the_exile' ARCHIVE_BASE_EXILE_6_NAME='cultist_simulator_the_exile_2023_12_s_4_71175.sh' ARCHIVE_BASE_EXILE_6_MD5='4848d25ba494b3ce05199c14b3fb7cdb' ARCHIVE_BASE_EXILE_6_SIZE='5482' ARCHIVE_BASE_EXILE_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_EXILE_5_NAME='cultist_simulator_the_exile_2023_10_r_10_68985.sh' ARCHIVE_BASE_EXILE_5_MD5='127f09acc54cce367ce7e167468ed229' ARCHIVE_BASE_EXILE_5_SIZE='6088' ARCHIVE_BASE_EXILE_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_EXILE_4_NAME='cultist_simulator_the_exile_2023_5_p_12_67501.sh' ARCHIVE_BASE_EXILE_4_MD5='0ed4869ccb55e3e7b5afa9ade6a654a9' ARCHIVE_BASE_EXILE_4_SIZE='6088' ARCHIVE_BASE_EXILE_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_EXILE_3_NAME='cultist_simulator_the_exile_2023_4_o_4_64959.sh' ARCHIVE_BASE_EXILE_3_MD5='c25a0b322398181606826e8e91946ed8' ARCHIVE_BASE_EXILE_3_SIZE='6100' ARCHIVE_BASE_EXILE_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_EXILE_2_NAME='cultist_simulator_the_exile_2022_12_n_2_61763.sh' ARCHIVE_BASE_EXILE_2_MD5='97f7192f414ebc9c456f14485bcfdc9c' ARCHIVE_BASE_EXILE_2_SIZE='6100' ARCHIVE_BASE_EXILE_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_EXILE_1_NAME='cultist_simulator_the_exile_2022_3_p_1_54545.sh' ARCHIVE_BASE_EXILE_1_MD5='ad7232336e7aefd959a57fd2c3c7243b' ARCHIVE_BASE_EXILE_1_SIZE='6100' ARCHIVE_BASE_EXILE_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_EXILE_0_NAME='cultist_simulator_the_exile_2022_3_n_1_54418.sh' ARCHIVE_BASE_EXILE_0_MD5='3bf084c13791a61820aaf49650dd2a32' ARCHIVE_BASE_EXILE_0_SIZE='6100' ARCHIVE_BASE_EXILE_0_VERSION='2022.03.n.1-gog54418' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' CS_Data' PKG_MAIN_DEPS="$GAME_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-cultist-simulator.sh0000755000000000000000000001210714471751340015665 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Cultist Simulator ### script_version=20240531.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='cultist-simulator' GAME_NAME='Cultist Simulator' ARCHIVE_BASE_17_NAME='cultist_simulator_2023_12_s_5_71509.sh' ARCHIVE_BASE_17_MD5='7e5fd05666c22c1b44401525e2fd24f1' ARCHIVE_BASE_17_SIZE='707815' ARCHIVE_BASE_17_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_17_URL='https://www.gog.com/game/cultist_simulator' ARCHIVE_BASE_16_NAME='cultist_simulator_2023_12_s_4_71175.sh' ARCHIVE_BASE_16_MD5='b34cef2cea237aff1b4ff33fe6acdece' ARCHIVE_BASE_16_SIZE='707816' ARCHIVE_BASE_16_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_15_NAME='cultist_simulator_2023_10_r_10_68985.sh' ARCHIVE_BASE_15_MD5='4c9a58da5701edb9af42b44dedff55d6' ARCHIVE_BASE_15_SIZE='711252' ARCHIVE_BASE_15_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_14_NAME='cultist_simulator_2023_5_p_12_67501.sh' ARCHIVE_BASE_14_MD5='9b849e52ae2c13a0911f2ff78b474264' ARCHIVE_BASE_14_SIZE='709880' ARCHIVE_BASE_14_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_13_NAME='cultist_simulator_2023_4_o_4_64959.sh' ARCHIVE_BASE_13_MD5='4f3a1b1fa787e3b72fd22538051bc064' ARCHIVE_BASE_13_SIZE='710000' ARCHIVE_BASE_13_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_12_NAME='cultist_simulator_2022_12_n_2_61763.sh' ARCHIVE_BASE_12_MD5='852b96c2da6b07d15fa533b3dbb0f316' ARCHIVE_BASE_12_SIZE='780000' ARCHIVE_BASE_12_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_11_NAME='cultist_simulator_2022_3_p_1_54545.sh' ARCHIVE_BASE_11_MD5='6009cfa53c5be9da1e02380d5bcaf712' ARCHIVE_BASE_11_SIZE='750000' ARCHIVE_BASE_11_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_10_NAME='cultist_simulator_2022_3_n_1_54418.sh' ARCHIVE_BASE_10_MD5='0c8e9dedb7b2e5112f7172c9a9095c18' ARCHIVE_BASE_10_SIZE='750000' ARCHIVE_BASE_10_VERSION='2022.03.n.1-gog54418' ARCHIVE_BASE_9_NAME='cultist_simulator_2021_1_b_2_44604.sh' ARCHIVE_BASE_9_MD5='cbe92b1dee271416ffa4ad29ef4b9123' ARCHIVE_BASE_9_SIZE='540000' ARCHIVE_BASE_9_VERSION='2021.01.b.2-gog44604' ARCHIVE_BASE_8_NAME='cultist_simulator_2020_11_a_1_42424.sh' ARCHIVE_BASE_8_MD5='76781c87835954da4a97ec7e0efccfe2' ARCHIVE_BASE_8_SIZE='540000' ARCHIVE_BASE_8_VERSION='2020.11.a.1-gog42424' ARCHIVE_BASE_7_NAME='cultist_simulator_2020_10_e_2_42258.sh' ARCHIVE_BASE_7_MD5='a2a2de8222b9993fc0ae5ef0eaed2b66' ARCHIVE_BASE_7_SIZE='540000' ARCHIVE_BASE_7_VERSION='2020.10.e.2-gog42258' ARCHIVE_BASE_6_NAME='cultist_simulator_2020_10_e_1_42177.sh' ARCHIVE_BASE_6_MD5='1a16264b6ce868c0f741b6614d84d684' ARCHIVE_BASE_6_SIZE='540000' ARCHIVE_BASE_6_VERSION='2020.10.e.1-gog42177' ARCHIVE_BASE_5_NAME='cultist_simulator_2020_10_b_1_42011.sh' ARCHIVE_BASE_5_MD5='672409328bd154b4430826c09b58dd74' ARCHIVE_BASE_5_SIZE='530000' ARCHIVE_BASE_5_VERSION='2020.10.b.1-gog42011' ARCHIVE_BASE_4_NAME='cultist_simulator_2020_9_p_1_bis_41797.sh' ARCHIVE_BASE_4_MD5='9683f0726cba2b116db4134aec863382' ARCHIVE_BASE_4_SIZE='520000' ARCHIVE_BASE_4_VERSION='2020.09.p.1-gog41797' ARCHIVE_BASE_3_NAME='cultist_simulator_2020_9_n_5_41650.sh' ARCHIVE_BASE_3_MD5='251b5e2d58faaea7132b57ad97495057' ARCHIVE_BASE_3_SIZE='510000' ARCHIVE_BASE_3_VERSION='2020.09.n.5-gog41650' ARCHIVE_BASE_2_NAME='cultist_simulator_2020_6_b_1_38747.sh' ARCHIVE_BASE_2_MD5='22980acaa3f825d0712621624277d4ed' ARCHIVE_BASE_2_SIZE='500000' ARCHIVE_BASE_2_VERSION='2020.06.b.1-gog38747' ARCHIVE_BASE_1_NAME='cultist_simulator_2020_6_a_1_38655.sh' ARCHIVE_BASE_1_MD5='099e8a6ed1ae7a9bd654ba63ab89c4a7' ARCHIVE_BASE_1_SIZE='500000' ARCHIVE_BASE_1_VERSION='2020.06.a.1-gog38655' ARCHIVE_BASE_0_NAME='cultist_simulator_2020_3_b_1_37119.sh' ARCHIVE_BASE_0_MD5='4390c258dcce415d61f96eac66a728ca' ARCHIVE_BASE_0_SIZE='470000' ARCHIVE_BASE_0_VERSION='2020.03.b.1-gog37119' UNITY3D_NAME='CS' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_DATA_FILES=' version.txt' CONTENT_DOC_DATA_FILES=' README' ## Write access to some game files is required. USER_PERSISTENT_DIRECTORIES=" ${UNITY3D_NAME}_Data/StreamingAssets/content/core/cultures" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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' packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-dark-reign-2.sh0000755000000000000000000000640114471751340014343 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Dark Reign 2 ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='dark-reign-2' GAME_NAME='Dark Reign 2' ARCHIVE_BASE_1_NAME='setup_dark_reign_2_1.3_(56283).exe' ARCHIVE_BASE_1_MD5='23b441f1a8ffd5302e7cde3c1099cb73' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_VERSION='1.3.882-gog56283' ARCHIVE_BASE_1_SIZE='572562' ARCHIVE_BASE_1_URL='https://www.gog.com/game/dark_reign_2' ARCHIVE_BASE_0_NAME='setup_dark_reign2_2.0.0.11.exe' ARCHIVE_BASE_0_MD5='9a3d10825507b73c4db178f9caea2406' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_VERSION='1.3.882-gog2.0.0.11' ARCHIVE_BASE_0_SIZE='450000' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' library settings.cfg _inmm.dll binkw32.dll ddraw.dll getinfo.dll libogg.dll libvorbis.dll libvorbisfile.dll mss32.dll msvcp90.dll msvcr90.dll dr2.exe dxcfg.exe anet.inf dxcfg.ini' ## On first launch, register the game CD-key. ## This file is generated later in this script. CONTENT_GAME0_BIN_FILES=' cdkey' ## launcher.exe is only provided with the 2.0.0.11 GOG build. CONTENT_GAME1_BIN_FILES_0=' launcher.exe' CONTENT_GAME_DATA_FILES=' missions mods music packs sides worlds' CONTENT_DOC_DATA_FILES=' customer_support.htm manual.pdf readme.rtf license.txt' USER_PERSISTENT_DIRECTORIES=' mods users' USER_PERSISTENT_FILES=' settings.cfg' WINE_VIRTUAL_DESKTOP='auto' WINE_WINETRICKS_VERBS='win98' APP_MAIN_EXE='dr2.exe' APP_MAIN_EXE_0='launcher.exe' APP_MAIN_ICON='dr2.exe' ## On first launch, register the game CD-key. APP_MAIN_PRERUN=' # On first launch, register the game CD-key if [ ! -e .cdkey-registered ]; then cdkey=$(cat cdkey) $(wine_command) reg add "HKLM\\Software\\WON\\CDKeys" /v "DarkReign2" /t REG_BINARY /d "$cdkey" /f touch .cdkey-registered fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # On first launch, register the game CD-key SCRIPT_DEPS="${SCRIPT_DEPS:-} base64 xxd" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## On first launch, register the game CD-key. ## The source is a base64-encoded string, that must be converted to an hexadecimal representation. sed --silent '71s/.*"valueData": "\(.*\)",/\1/p' goggame-1207658911.script | \ base64 --decode | \ xxd -plain \ > 'cdkey' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-darkest-dungeon-expansions.sh0000755000000000000000000001716614471751340017452 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Darkest Dungeon expansions: # - Musketeer # - The Crimson Court # - The Shieldbreaker # - The Color of Madness ### script_version=20240605.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='darkest-dungeon' GAME_NAME='Darkest Dungeon' EXPANSION_ID_MUSKETEER='musketeer' EXPANSION_NAME_MUSKETEER='Musketeer' EXPANSION_ID_CRIMSONCOURT='crimson-court' EXPANSION_NAME_CRIMSONCOURT='The Crimson Court' EXPANSION_ID_SHIELDBREAKER='shieldbreaker' EXPANSION_NAME_SHIELDBREAKER='The Shieldbreaker' EXPANSION_ID_COLOROFMADNESS='color-of-madness' EXPANSION_NAME_COLOROFMADNESS='The Color of Madness' # Archives ## Musketeer ARCHIVE_BASE_MUSKETEER_4_NAME='darkest_dungeon_musketeer_24839_28859.sh' ARCHIVE_BASE_MUSKETEER_4_MD5='ee9980710f2d4e229b5b2afb22918dac' ARCHIVE_BASE_MUSKETEER_4_SIZE='22000' ARCHIVE_BASE_MUSKETEER_4_VERSION='24839-gog28859' ARCHIVE_BASE_MUSKETEER_4_URL='https://www.gog.com/game/darkest_dungeon_musketeer' ARCHIVE_BASE_MUSKETEER_3_NAME='darkest_dungeon_musketeer_24788_26004.sh' ARCHIVE_BASE_MUSKETEER_3_MD5='2e24f30855bd6404f940d66d0b1b44d9' ARCHIVE_BASE_MUSKETEER_3_SIZE='22000' ARCHIVE_BASE_MUSKETEER_3_VERSION='24788-gog26004' ARCHIVE_BASE_MUSKETEER_2_NAME='darkest_dungeon_musketeer_dlc_en_24358_23005.sh' ARCHIVE_BASE_MUSKETEER_2_MD5='c8ebb84ab177b4ffcee79faadd8f5981' ARCHIVE_BASE_MUSKETEER_2_SIZE='22000' ARCHIVE_BASE_MUSKETEER_2_VERSION='24358-gog23005' ARCHIVE_BASE_MUSKETEER_1_NAME='darkest_dungeon_musketeer_dlc_en_24154_22522.sh' ARCHIVE_BASE_MUSKETEER_1_MD5='d68e50da94cc01920759ff7009a7a3c2' ARCHIVE_BASE_MUSKETEER_1_SIZE='22000' ARCHIVE_BASE_MUSKETEER_1_VERSION='24154-gog22522' ARCHIVE_BASE_MUSKETEER_0_NAME='darkest_dungeon_musketeer_dlc_en_23885_21662.sh' ARCHIVE_BASE_MUSKETEER_0_MD5='f9362568f7e4e1fd205835c3dba2083e' ARCHIVE_BASE_MUSKETEER_0_SIZE='22000' ARCHIVE_BASE_MUSKETEER_0_VERSION='23885-gog21662' ## The Crimson Court ARCHIVE_BASE_CRIMSONCOURT_7_NAME='darkest_dungeon_the_crimson_court_24839_28859.sh' ARCHIVE_BASE_CRIMSONCOURT_7_MD5='bf81a16639bf98a4daa2e7eb74d2652b' ARCHIVE_BASE_CRIMSONCOURT_7_SIZE='350000' ARCHIVE_BASE_CRIMSONCOURT_7_VERSION='24839-gog28859' ARCHIVE_BASE_CRIMSONCOURT_7_URL='https://www.gog.com/game/darkest_dungeon_the_crimson_court' ARCHIVE_BASE_CRIMSONCOURT_6_NAME='darkest_dungeon_the_crimson_court_24788_26004.sh' ARCHIVE_BASE_CRIMSONCOURT_6_MD5='02618eb0e4abfc632035e429c134cc42' ARCHIVE_BASE_CRIMSONCOURT_6_SIZE='350000' ARCHIVE_BASE_CRIMSONCOURT_6_VERSION='24788-gog26004' ARCHIVE_BASE_CRIMSONCOURT_5_NAME='darkest_dungeon_the_crimson_court_dlc_en_24358_23005.sh' ARCHIVE_BASE_CRIMSONCOURT_5_MD5='344350ff10770ab3abeecabe048c9816' ARCHIVE_BASE_CRIMSONCOURT_5_SIZE='350000' ARCHIVE_BASE_CRIMSONCOURT_5_VERSION='24358-gog23005' ARCHIVE_BASE_CRIMSONCOURT_4_NAME='darkest_dungeon_the_crimson_court_dlc_en_24154_22522.sh' ARCHIVE_BASE_CRIMSONCOURT_4_MD5='985324dbc5b0ab3e00f04c24a2f2c7cf' ARCHIVE_BASE_CRIMSONCOURT_4_SIZE='350000' ARCHIVE_BASE_CRIMSONCOURT_4_VERSION='24154-gog22522' ARCHIVE_BASE_CRIMSONCOURT_3_NAME='darkest_dungeon_the_crimson_court_dlc_en_23885_21662.sh' ARCHIVE_BASE_CRIMSONCOURT_3_MD5='70018fc475ee4d24fdc19e107fa41a2a' ARCHIVE_BASE_CRIMSONCOURT_3_SIZE='350000' ARCHIVE_BASE_CRIMSONCOURT_3_VERSION='23885-gog21662' ARCHIVE_BASE_CRIMSONCOURT_2_NAME='darkest_dungeon_the_crimson_court_dlc_en_21096_16065.sh' ARCHIVE_BASE_CRIMSONCOURT_2_MD5='d4beaeb7effff0cbd2e292abf0ef5332' ARCHIVE_BASE_CRIMSONCOURT_2_SIZE='350000' ARCHIVE_BASE_CRIMSONCOURT_2_VERSION='21096-gog16066' ARCHIVE_BASE_CRIMSONCOURT_1_NAME='darkest_dungeon_the_crimson_court_dlc_en_21071_15970.sh' ARCHIVE_BASE_CRIMSONCOURT_1_MD5='67fcfc5e91763cbf20a4ef51ff7b8eff' ARCHIVE_BASE_CRIMSONCOURT_1_SIZE='350000' ARCHIVE_BASE_CRIMSONCOURT_1_VERSION='21071-gog15970' ARCHIVE_BASE_CRIMSONCOURT_0_NAME='darkest_dungeon_the_crimson_court_dlc_en_20645_15279.sh' ARCHIVE_BASE_CRIMSONCOURT_0_MD5='523c66d4575095c66a03d3859e4f83b8' ARCHIVE_BASE_CRIMSONCOURT_0_SIZE='360000' ARCHIVE_BASE_CRIMSONCOURT_0_VERSION='20645-gog15279' ## The Shieldbreaker ARCHIVE_BASE_SHIELDBREAKER_4_NAME='darkest_dungeon_the_shieldbreaker_24839_28859.sh' ARCHIVE_BASE_SHIELDBREAKER_4_MD5='6d28e99b0b66d9a0b7e528b961371131' ARCHIVE_BASE_SHIELDBREAKER_4_SIZE='42000' ARCHIVE_BASE_SHIELDBREAKER_4_VERSION='24839-gog28859' ARCHIVE_BASE_SHIELDBREAKER_4_URL='https://www.gog.com/game/darkest_dungeon_the_shieldbreaker' ARCHIVE_BASE_SHIELDBREAKER_3_NAME='darkest_dungeon_the_shieldbreaker_24788_26004.sh' ARCHIVE_BASE_SHIELDBREAKER_3_MD5='df614551f769df6b3ee3f9f2bcfcf94e' ARCHIVE_BASE_SHIELDBREAKER_3_SIZE='42000' ARCHIVE_BASE_SHIELDBREAKER_3_VERSION='24788-gog26004' ARCHIVE_BASE_SHIELDBREAKER_2_NAME='darkest_dungeon_the_shieldbreaker_dlc_en_24358_23005.sh' ARCHIVE_BASE_SHIELDBREAKER_2_MD5='e47653b8750583df1fea96ad2c52bad2' ARCHIVE_BASE_SHIELDBREAKER_2_SIZE='42000' ARCHIVE_BASE_SHIELDBREAKER_2_VERSION='24358-gog23005' ARCHIVE_BASE_SHIELDBREAKER_1_NAME='darkest_dungeon_the_shieldbreaker_dlc_en_23885_21662.sh' ARCHIVE_BASE_SHIELDBREAKER_1_MD5='795cdfaecd19177264731d9acb0daca2' ARCHIVE_BASE_SHIELDBREAKER_1_SIZE='41000' ARCHIVE_BASE_SHIELDBREAKER_1_VERSION='23855-gog21662' ARCHIVE_BASE_SHIELDBREAKER_0_NAME='darkest_dungeon_the_shieldbreaker_dlc_en_21142_16140.sh' ARCHIVE_BASE_SHIELDBREAKER_0_MD5='8606531e5fc728786f497b4803c19994' ARCHIVE_BASE_SHIELDBREAKER_0_SIZE='42000' ARCHIVE_BASE_SHIELDBREAKER_0_VERSION='21142-gog16140' ## The Color of Madness ARCHIVE_BASE_COLOROFMADNESS_4_NAME='darkest_dungeon_the_color_of_madness_24839_28859.sh' ARCHIVE_BASE_COLOROFMADNESS_4_MD5='9830e2b3cefc653db593a022e1c87359' ARCHIVE_BASE_COLOROFMADNESS_4_SIZE='640000' ARCHIVE_BASE_COLOROFMADNESS_4_VERSION='24839-gog28859' ARCHIVE_BASE_COLOROFMADNESS_4_URL='https://www.gog.com/game/darkest_dungeon_the_color_of_madness' ARCHIVE_BASE_COLOROFMADNESS_3_NAME='darkest_dungeon_the_color_of_madness_24788_26004.sh' ARCHIVE_BASE_COLOROFMADNESS_3_MD5='a92a69e13e7ddb5da63d283ea40d93f7' ARCHIVE_BASE_COLOROFMADNESS_3_SIZE='640000' ARCHIVE_BASE_COLOROFMADNESS_3_VERSION='24788-gog26004' ARCHIVE_BASE_COLOROFMADNESS_2_NAME='darkest_dungeon_the_color_of_madness_dlc_en_24358_23005.sh' ARCHIVE_BASE_COLOROFMADNESS_2_MD5='0447fad1313ab47f6521debc3e75d308' ARCHIVE_BASE_COLOROFMADNESS_2_SIZE='640000' ARCHIVE_BASE_COLOROFMADNESS_2_VERSION='24358-gog23005' ARCHIVE_BASE_COLOROFMADNESS_1_NAME='darkest_dungeon_the_color_of_madness_dlc_en_24154_22522.sh' ARCHIVE_BASE_COLOROFMADNESS_1_MD5='40088860d8e3e3a651074e84eb2746ac' ARCHIVE_BASE_COLOROFMADNESS_1_SIZE='630000' ARCHIVE_BASE_COLOROFMADNESS_1_VERSION='24154-gog22522' ARCHIVE_BASE_COLOROFMADNESS_0_NAME='darkest_dungeon_the_color_of_madness_dlc_en_23885_21662.sh' ARCHIVE_BASE_COLOROFMADNESS_0_MD5='fe07f35c57c3ddd421db5da33b42ee6e' ARCHIVE_BASE_COLOROFMADNESS_0_SIZE='630000' ARCHIVE_BASE_COLOROFMADNESS_0_VERSION='23885-gog21662' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_MAIN_DEPS="$GAME_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-darkest-dungeon.sh0000755000000000000000000001066214471751340015257 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Darkest Dungeon ### script_version=20240605.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='darkest-dungeon' GAME_NAME='Darkest Dungeon' ARCHIVE_BASE_7_NAME='darkest_dungeon_24839_28859.sh' ARCHIVE_BASE_7_MD5='2a04beb04b3129b4bd68b4dd9023e82d' ARCHIVE_BASE_7_SIZE='2300000' ARCHIVE_BASE_7_VERSION='24839-gog28859' ARCHIVE_BASE_7_URL='https://www.gog.com/game/darkest_dungeon' ARCHIVE_BASE_6_NAME='darkest_dungeon_24788_26004.sh' ARCHIVE_BASE_6_MD5='be838bdc8e7c971e4d412f833fd348ac' ARCHIVE_BASE_6_SIZE='2300000' ARCHIVE_BASE_6_VERSION='24788-gog26004' ARCHIVE_BASE_5_NAME='darkest_dungeon_en_24358_23005.sh' ARCHIVE_BASE_5_MD5='3d7dc739665003d48589cdbe6cc472ef' ARCHIVE_BASE_5_SIZE='2300000' ARCHIVE_BASE_5_VERSION='24358-gog23005' ARCHIVE_BASE_4_NAME='darkest_dungeon_en_24154_22522.sh' ARCHIVE_BASE_4_MD5='361d3e7b117725e8ce3982d183d4810a' ARCHIVE_BASE_4_SIZE='2300000' ARCHIVE_BASE_4_VERSION='24154-gog22522' ARCHIVE_BASE_3_NAME='darkest_dungeon_en_23904_21681.sh' ARCHIVE_BASE_3_MD5='9ddb131060d0995c4ceb56dd9c846b8f' ARCHIVE_BASE_3_SIZE='2300000' ARCHIVE_BASE_3_VERSION='23904-gog21681' ARCHIVE_BASE_2_NAME='darkest_dungeon_en_23885_21662.sh' ARCHIVE_BASE_2_MD5='ff449de9cfcdf97fa1a27d1073139463' ARCHIVE_BASE_2_SIZE='2300000' ARCHIVE_BASE_2_VERSION='23885-gog21662' ARCHIVE_BASE_1_NAME='darkest_dungeon_en_21142_16140.sh' ARCHIVE_BASE_1_MD5='4b43065624dbab74d794c56809170588' ARCHIVE_BASE_1_SIZE='2200000' ARCHIVE_BASE_1_VERSION='21142-gog16140' ARCHIVE_BASE_0_NAME='darkest_dungeon_en_21096_16066.sh' ARCHIVE_BASE_0_MD5='435905fe6edd911a8645d4feaf94ec34' ARCHIVE_BASE_0_SIZE='2200000' ARCHIVE_BASE_0_VERSION='21096-gog16066' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libfmod.so.9 libfmodstudio.so.9' CONTENT_LIBS_BIN64_PATH="${CONTENT_PATH_DEFAULT}/lib64" CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_LIBS_BIN32_PATH="${CONTENT_PATH_DEFAULT}/lib" CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_GAME_BIN64_FILES=' darkest.bin.x86_64' CONTENT_GAME_BIN32_FILES=' darkest.bin.x86' CONTENT_GAME_DATA_FILES=' audio video Icon.bmp pin svn_revision.txt activity_log campaign colours curios cursors dungeons effects fe_flow fonts fx game_over heroes inventory loading_screen loot maps modes mods monsters overlays panels props raid raid_results scripts scrolls shaders shared trinkets upgrades user_information localization/*.bat localization/*.csv localization/*.loc localization/*.txt localization/*.xml localization/pc' CONTENT_DOC_DATA_FILES=' README.linux' APP_MAIN_EXE_BIN32='darkest.bin.x86' APP_MAIN_EXE_BIN64='darkest.bin.x86_64' 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 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" # Fix icon background transparency SCRIPT_DEPS="${SCRIPT_DEPS:-} convert" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Fix icon background transparency icon_path=$(icon_path 'APP_MAIN_ICON') convert "$icon_path" \ -transparent "#008080" \ -transparent "#006e6e" \ "${icon_path%.bmp}_fixed.bmp" mv "${icon_path%.bmp}_fixed.bmp" "$icon_path" ) # 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-day-of-the-tentacle.sh0000755000000000000000000000447514471751340015724 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 macaron set -o errexit ### # Day of the Tentacle ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='day-of-the-tentacle' GAME_NAME='Day of the Tentacle' ARCHIVE_BASE_0_NAME='gog_day_of_the_tentacle_remastered_2.1.0.2.sh' ARCHIVE_BASE_0_MD5='612c59c5cbdbf4d73322b46527a2d502' ARCHIVE_BASE_0_SIZE='2677592' ARCHIVE_BASE_0_VERSION='1.4.1-gog2.1.0.2' ARCHIVE_BASE_0_URL='https://www.gog.com/game/day_of_the_tentacle_remastered' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_PATH="${CONTENT_PATH_DEFAULT}/lib" CONTENT_LIBS_BIN_FILES=' libfmod.so.8' CONTENT_GAME_BIN_FILES=' Dott controllerdef.txt' CONTENT_GAME_DATA_FILES=' tenta.cle' CONTENT_DOC_DATA_FILES=' readme.txt' APP_MAIN_EXE='Dott' APP_MAIN_ICON='../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_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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # 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. path_libraries_system=$( set_current_package 'PKG_BIN' path_libraries_system ) APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') # Force the use of system-provided SDL. export SDL_DYNAMIC_API='${path_libraries_system}/libSDL2-2.0.so.0' " launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-democratic-socialism-simulator.sh0000755000000000000000000000335014471751340020271 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Democratic Socialism Simulator ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='democratic-socialism-simulator' GAME_NAME='Democratic Socialism Simulator' ARCHIVE_BASE_0_NAME='DemSocSim - Linux.zip' ARCHIVE_BASE_0_MD5='0650cf369b46ac0315b5fc6331b606d1' ARCHIVE_BASE_0_SIZE='570000' ARCHIVE_BASE_0_VERSION='1.0-itch.2020.02.21' ARCHIVE_BASE_0_URL='https://molleindustria.itch.io/democratic-socialism-simulator' UNITY3D_NAME='DemSocSim' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-desperados-1.sh0000755000000000000000000000422114471751340014446 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Desperados 1 ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='desperados-1' GAME_NAME='Desperados: Wanted Dead or Alive' ARCHIVE_BASE_1_NAME='desperados_wanted_dead_or_alive_en_1_0_2_thqn_22430.sh' ARCHIVE_BASE_1_MD5='c4338cd7526dc01eef347408368f6bf4' ARCHIVE_BASE_1_SIZE='1938955' ARCHIVE_BASE_1_VERSION='1.0.2-gog22430' ARCHIVE_BASE_1_URL='https://www.gog.com/game/desperados_wanted_dead_or_alive' ARCHIVE_BASE_0_NAME='desperados_wanted_dead_or_alive_en_gog_1_22137.sh' ARCHIVE_BASE_0_MD5='72e623355b7ca5ccdef0c549d0a77192' ARCHIVE_BASE_0_SIZE='2000000' ARCHIVE_BASE_0_VERSION='1.0-gog22137' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' desperados32' CONTENT_GAME_DATA_FILES=' bootmenu data demo localisation localisation_demo shaders' CONTENT_DOC_DATA_FILES=' readme.txt' APP_MAIN_EXE='desperados32' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 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 . "$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-desperados-3.sh0000755000000000000000000001135514471751340014456 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Desperados 3 ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='desperados-3' GAME_NAME='Desperados Ⅲ' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='setup_desperados_3_1.7_(43311).exe' ARCHIVE_BASE_0_MD5='27d07bcafb7b0a0c5bd0af5a0b91edb8' ## Do not convert file paths to lowercase. ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_PART1_NAME='setup_desperados_3_1.7_(43311)-1.bin' ARCHIVE_BASE_0_PART1_MD5='5554579fd67870ad94347b70df2743f6' ARCHIVE_BASE_0_PART2_NAME='setup_desperados_3_1.7_(43311)-2.bin' ARCHIVE_BASE_0_PART2_MD5='f7f43119dda91362ec45b122e4ea641d' ARCHIVE_BASE_0_PART3_NAME='setup_desperados_3_1.7_(43311)-3.bin' ARCHIVE_BASE_0_PART3_MD5='51948b7e8d6a9e45638b49988f86c5f9' ARCHIVE_BASE_0_SIZE='24000000' ARCHIVE_BASE_0_VERSION='1.5.8-gog43311' ARCHIVE_BASE_0_URL='https://www.gog.com/game/desperados_iii' ARCHIVE_BASE_DEMO_0_NAME='setup_desperados_3_demo_1.0b_(38752).exe' ARCHIVE_BASE_DEMO_0_MD5='2a856f6a70fb57b7095d829fe90f0e61' ## Do not convert file paths to lowercase. ARCHIVE_BASE_DEMO_0_EXTRACTOR='innoextract' ARCHIVE_BASE_DEMO_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_DEMO_0_PART1_NAME='setup_desperados_3_demo_1.0b_(38752)-1.bin' ARCHIVE_BASE_DEMO_0_PART1_MD5='fa829f953b1183dd8a41c12599c992fe' ARCHIVE_BASE_DEMO_0_PART2_NAME='setup_desperados_3_demo_1.0b_(38752)-2.bin' ARCHIVE_BASE_DEMO_0_PART2_MD5='77e764c9d83158abf31b7e98006cc5c9' ARCHIVE_BASE_DEMO_0_SIZE='7537932' ARCHIVE_BASE_DEMO_0_VERSION='1.0b-gog38752' ARCHIVE_BASE_DEMO_0_URL='https://www.gog.com/game/desperados_iii_demo' UNITY3D_NAME='Desperados III' CONTENT_PATH_DEFAULT='.' ## The game fails to start if "THQNOnline" and "thqnocfg.dat" are not included. CONTENT_GAME0_BIN_FILES=' THQNOnline MiVersion thqnocfg.dat' ## The game fails to start if the Steam library is not included. CONTENT_GAME1_BIN_FILES=' steam_api64.dll' CONTENT_GAME_DATA_GI_FILES=" ${UNITY3D_NAME}_Data/GI" CONTENT_GAME_DATA_STREAMINGASSETS_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets" CONTENT_GAME_DATA_LEVELS_FILES_DEMO=" ${UNITY3D_NAME}_Data/level*" CONTENT_GAME_DATA_LEVELS_1_FILES=" ${UNITY3D_NAME}_Data/level? ${UNITY3D_NAME}_Data/level?.resS ${UNITY3D_NAME}_Data/level?? ${UNITY3D_NAME}_Data/level??.resS" CONTENT_GAME_DATA_LEVELS_2_FILES=" ${UNITY3D_NAME}_Data/level??? ${UNITY3D_NAME}_Data/level???.resS" WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/Desperados III' PACKAGES_LIST=' PKG_BIN PKG_DATA_GI PKG_DATA_STREAMINGASSETS PKG_DATA_LEVELS_1 PKG_DATA_LEVELS_2 PKG_DATA' PACKAGES_LIST_DEMO=' PKG_BIN PKG_DATA_GI PKG_DATA_STREAMINGASSETS PKG_DATA_LEVELS PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_GI PKG_DATA_STREAMINGASSETS PKG_DATA_LEVELS_1 PKG_DATA_LEVELS_2' PKG_DATA_DEPENDENCIES_SIBLINGS_DEMO=' PKG_DATA_GI PKG_DATA_STREAMINGASSETS PKG_DATA_LEVELS' PKG_DATA_GI_ID="${PKG_DATA_ID}-gi" PKG_DATA_GI_ID_DEMO="${PKG_DATA_ID_DEMO}-gi" PKG_DATA_GI_DESCRIPTION="$PKG_DATA_DESCRIPTION - gi" PKG_DATA_STREAMINGASSETS_ID="${PKG_DATA_ID}-streamingassets" PKG_DATA_STREAMINGASSETS_ID_DEMO="${PKG_DATA_ID_DEMO}-streamingassets" PKG_DATA_STREAMINGASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - streamingassets" PKG_DATA_LEVELS_ID="${PKG_DATA_ID}-levels" PKG_DATA_LEVELS_ID_DEMO="${PKG_DATA_ID_DEMO}-levels" PKG_DATA_LEVELS_1_ID="${PKG_DATA_LEVELS_ID}-1" PKG_DATA_LEVELS_2_ID="${PKG_DATA_LEVELS_ID}-2" PKG_DATA_LEVELS_DESCRIPTION="$PKG_DATA_DESCRIPTION - levels" PKG_DATA_LEVELS_1_DESCRIPTION="$PKG_DATA_LEVELS_DESCRIPTION - 1" PKG_DATA_LEVELS_2_DESCRIPTION="$PKG_DATA_LEVELS_DESCRIPTION - 2" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-deus-ex.sh0000755000000000000000000001427314471751340013541 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 Phil Morrell set -o errexit ### # Deus Ex ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='deus-ex' GAME_NAME='Deus Ex' ARCHIVE_BASE_7_NAME='setup_deus_ex_goty_1.112fm(revision_1.6.3.0)_(51757).exe' ARCHIVE_BASE_7_MD5='9dd2b837300bfa19c6b5b8fde5d38df6' ARCHIVE_BASE_7_TYPE='innosetup' ARCHIVE_BASE_7_SIZE='870816' ARCHIVE_BASE_7_VERSION='1.112fm-gog51757' ARCHIVE_BASE_7_URL='https://www.gog.com/game/deus_ex' ARCHIVE_BASE_6_NAME='setup_deus_ex_goty_1.112fm(revision_1.6.1.0)_(45326).exe' ARCHIVE_BASE_6_MD5='688495ac0f2e6f05f1b47bdc40cee198' ARCHIVE_BASE_6_TYPE='innosetup' ARCHIVE_BASE_6_SIZE='880000' ARCHIVE_BASE_6_VERSION='1.112fm-gog45326' ARCHIVE_BASE_5_NAME='setup_deus_ex_goty_1.112fm(revision_1.6.0.0)_(42784).exe' ARCHIVE_BASE_5_MD5='0ff01014f9364c3487a5193f9ac30dc1' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_SIZE='880000' ARCHIVE_BASE_5_VERSION='1.112fm-gog42784' ARCHIVE_BASE_4_NAME='setup_deus_ex_goty_1.112fm(revision_1.5.0.0)_(35268).exe' ARCHIVE_BASE_4_MD5='3c5693ff82d754d4fe0d6be14e5337dd' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_SIZE='880000' ARCHIVE_BASE_4_VERSION='1.112fm-gog35268' ARCHIVE_BASE_3_NAME='setup_deus_ex_goty_1.112fm_(revision_1.4.0.2)_nglide_fix_(34088).exe' ARCHIVE_BASE_3_MD5='085d7ea792d002236999dfd3697b85de' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_SIZE='760000' ARCHIVE_BASE_3_VERSION='1.112fm-gog34088' ARCHIVE_BASE_2_NAME='setup_deus_ex_goty_1.112fm(revision_1.4.0.2)_(26650).exe' ARCHIVE_BASE_2_MD5='ab165b74b26623ccee5bfd7b6f65f734' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='760000' ARCHIVE_BASE_2_VERSION='1.112fm-gog26650' ARCHIVE_BASE_1_NAME='setup_deus_ex_goty_1.112fm(revision_1.4.0.1.5)_(24946).exe' ARCHIVE_BASE_1_MD5='daa330f1e7a427af64b952cd138cfc59' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='760000' ARCHIVE_BASE_1_VERSION='1.112fm-gog24946' ARCHIVE_BASE_0_NAME='setup_deus_ex_goty_1.112fm(revision_1.4)_(21273).exe' ARCHIVE_BASE_0_MD5='9ec295ecad72e96fb7b9f0109dd90324' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='750000' ARCHIVE_BASE_0_VERSION='1.112fm-gog21273' ARCHIVE_BASE_OLDTEMPLATE_3_NAME='setup_deus_ex_goty_1.112fm(revision_1.3.1)_(17719).exe' ARCHIVE_BASE_OLDTEMPLATE_3_MD5='92e9e6a33642f9e6c41cb24055df9b3c' ARCHIVE_BASE_OLDTEMPLATE_3_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_3_SIZE='750000' ARCHIVE_BASE_OLDTEMPLATE_3_VERSION='1.112fm-gog17719' ARCHIVE_BASE_OLDTEMPLATE_2_NAME='setup_deus_ex_goty_1.112fm(revision_1.3.0.1)_(16231).exe' ARCHIVE_BASE_OLDTEMPLATE_2_MD5='eaaf7c7c3052fbf71f5226e2d4495268' ARCHIVE_BASE_OLDTEMPLATE_2_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_2_SIZE='750000' ARCHIVE_BASE_OLDTEMPLATE_2_VERSION='1.112fm-gog16231' ARCHIVE_BASE_OLDTEMPLATE_1_NAME='setup_deus_ex_goty_1.112fm(revision_1.2.2)_(15442).exe' ARCHIVE_BASE_OLDTEMPLATE_1_MD5='573582142424ba1b5aba1f6727276450' ARCHIVE_BASE_OLDTEMPLATE_1_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_1_SIZE='750000' ARCHIVE_BASE_OLDTEMPLATE_1_VERSION='1.112fm-gog15442' ARCHIVE_BASE_OLDTEMPLATE_0_NAME='setup_deus_ex_2.1.0.12.exe' ARCHIVE_BASE_OLDTEMPLATE_0_MD5='cc2c6e43b2e8e67c7586bbab5ef492ee' ARCHIVE_BASE_OLDTEMPLATE_0_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_0_SIZE='750000' ARCHIVE_BASE_OLDTEMPLATE_0_VERSION='1.112fm-gog2.1.0.12' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_OLDTEMPLATE='app' CONTENT_GAME_BIN_FILES=' system/*.dll system/*.exe system/*.ini system/*.int' CONTENT_GAME_DATA_FILES=' help maps music sounds textures system/*.u' CONTENT_DOC_DATA_FILES=' manual.pdf system/*.txt' USER_PERSISTENT_FILES=' system/*.ini system/*.log' USER_PERSISTENT_DIRECTORIES=' save' ## TODO: Check if the virtual desktop prevents the game from messing with the desktop gamma value on X.org. WINE_VIRTUAL_DESKTOP='auto' ## Disable csmt, as it would cause performance issues with single CPU affinity. WINE_WINETRICKS_VERBS='csmt=off' APP_MAIN_EXE='system/deusex.exe' ## Run the game binary from its parent directory. APP_MAIN_PRERUN=' # Run the game binary from its parent directory cd "$(dirname "$APP_EXE")" APP_EXE=$(basename "$APP_EXE") ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Set OpenGL as the default rendering engine SCRIPT_DEPS="${SCRIPT_DEPS:-} sed unix2dos" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Set the CPU affinity to a single core, to work around a random crash on launch. # cf. https://www.gamingonlinux.com/2020/02/the-sad-case-of-unreal-engine-1-on-mesa-and-linux-in-2020/page=2#r174041 game_exec_line() { cat <<- 'EOF' # Set the CPU affinity to a single core, to work around a random crash on launch # cf. https://www.gamingonlinux.com/2020/02/the-sad-case-of-unreal-engine-1-on-mesa-and-linux-in-2020/page=2#r174041 taskset --cpu-list 0 $(wine_command) "$APP_EXE" "$@" EOF } # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Set OpenGL as the default rendering engine. ini_file='system/deusex.ini' ini_field='GameRenderDevice' ini_value='OpenGLDrv.OpenGLRenderDevice' sed_expression="s/^${ini_field}=.*$/${ini_field}=${ini_value}/" ini_field='FirstRun' ini_value='1100' sed_expression="${sed_expression};s/^${ini_field}=.*$/${ini_field}=${ini_value}/" dos2unix --quiet "$ini_file" sed --in-place --expression="$sed_expression" "$ini_file" unix2dos --quiet "$ini_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-diablo-1.sh0000755000000000000000000000743214471751340013556 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Diablo 1 ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='diablo-1' GAME_NAME='Diablo' # Archives ## Diablo 1 (base game) ARCHIVE_BASE_5_NAME='setup_diablo_1.09_hellfire_v2_(30038).exe' ARCHIVE_BASE_5_MD5='e70187d92fa120771db99dfa81679cfc' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_SIZE='850000' ARCHIVE_BASE_5_VERSION='1.09-gog30038' ARCHIVE_BASE_5_URL='https://www.gog.com/game/diablo' ARCHIVE_BASE_4_NAME='setup_diablo_1.09_v6_(28378).exe' ARCHIVE_BASE_4_MD5='588ab50c1ef25abb682b86ea4306ea50' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_SIZE='670000' ARCHIVE_BASE_4_VERSION='1.09-gog28378' ARCHIVE_BASE_3_NAME='setup_diablo_1.09_v4_(27989).exe' ARCHIVE_BASE_3_MD5='8dac74a616646fa41d5d73f4765cef40' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_SIZE='670000' ARCHIVE_BASE_3_VERSION='1.09-gog27989' ARCHIVE_BASE_2_NAME='setup_diablo_1.09_v3_(27965).exe' ARCHIVE_BASE_2_MD5='38d654af858d7a2591711f0e6324fcd0' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='670000' ARCHIVE_BASE_2_VERSION='1.09-gog27695' ARCHIVE_BASE_1_NAME='setup_diablo_1.09_v2_(27882).exe' ARCHIVE_BASE_1_MD5='83b2d6b8551a9825a426dac7b9302654' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='670000' ARCHIVE_BASE_1_VERSION='1.09-gog27882' ARCHIVE_BASE_0_NAME='setup_diablo_1.09_(27873).exe' ARCHIVE_BASE_0_MD5='bf57594f5218a794a284b5e2a0f5ba14' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='680000' ARCHIVE_BASE_0_VERSION='1.09-gog27873' ## DevilutionX 1.5.2 ARCHIVE_REQUIRED_DEVILUTIONX_0_NAME='devilutionx-linux-x86_64.tar.xz' ARCHIVE_REQUIRED_DEVILUTIONX_0_MD5='3aea64fad536cded6b11e035d0e235a8' ARCHIVE_REQUIRED_DEVILUTIONX_0_SIZE='38427' ARCHIVE_REQUIRED_DEVILUTIONX_0_URL='https://github.com/diasurgical/devilutionX/releases/tag/1.5.2' CONTENT_PATH_DEFAULT='.' ## The devilutionx binary is linked against discord_game_sdk.so, so we can not drop it. CONTENT_LIBS_BIN_FILES=' discord_game_sdk.so' CONTENT_GAME_BIN_FILES=' devilutionx' CONTENT_GAME_DATA_FILES=' *.mpq' CONTENT_DOC_DATA_FILES=' *.pdf *.txt' APP_MAIN_EXE='devilutionx' APP_MAIN_ICON='diablo.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libSDL2_image-2.0.so.0 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Check for the presence of required extra archives archive_initialize_required \ 'ARCHIVE_DEVILUTIONX' \ 'ARCHIVE_REQUIRED_DEVILUTIONX_0' # Extract game data archive_extraction_default archive_extraction 'ARCHIVE_DEVILUTIONX' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Delete unwanted files. rm --force --recursive \ 'dx' \ 'hellfire' \ 'tmp' ## Rename documentation files. mv 'license.txt' 'license.diablo-1.txt' mv 'readme.txt' 'readme.diablo-1.txt' mv 'README.txt' 'readme.devilutionx.txt' ) # 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-disco-elysium.sh0000755000000000000000000001405214471751340014750 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Disco Elysium ### script_version=20240630.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='disco-elysium' GAME_NAME='Disco Elysium' ARCHIVE_BASE_5_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f3_(74350).exe' ARCHIVE_BASE_5_MD5='52a20a526a898a173d98b800f331616c' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_PART1_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f3_(74350)-1.bin' ARCHIVE_BASE_5_PART1_MD5='29cac3aca83c0c3ef1b0c5923b7a8f22' ARCHIVE_BASE_5_PART2_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f3_(74350)-2.bin' ARCHIVE_BASE_5_PART2_MD5='82fe3cd0526d89342f41df1f58dfec01' ARCHIVE_BASE_5_PART3_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f3_(74350)-3.bin' ARCHIVE_BASE_5_PART3_MD5='4cbf7779c69ca856d689cad0bc568ef3' ARCHIVE_BASE_5_SIZE='10074442' ARCHIVE_BASE_5_VERSION='1.0.a0a062f3-gog74350' ARCHIVE_BASE_5_URL='https://www.gog.com/game/disco_elysium' ARCHIVE_BASE_4_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f1_(73330).exe' ARCHIVE_BASE_4_MD5='fa1ab8b1023dbdd96464e48426f724de' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_PART1_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f1_(73330)-1.bin' ARCHIVE_BASE_4_PART1_MD5='fa2edf58880e63def21f2565ac14c73f' ARCHIVE_BASE_4_PART2_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f1_(73330)-2.bin' ARCHIVE_BASE_4_PART2_MD5='b4d7b67b7633f29688380c6fd83a426b' ARCHIVE_BASE_4_PART3_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f1_(73330)-3.bin' ARCHIVE_BASE_4_PART3_MD5='2dff22e62041509591e11d91d5567ee0' ARCHIVE_BASE_4_SIZE='10076178' ARCHIVE_BASE_4_VERSION='1.0.a0a062f1-gog73330' ARCHIVE_BASE_3_NAME='setup_disco_elysium_-_the_final_cut_wina0a062ed_(72872).exe' ARCHIVE_BASE_3_MD5='8f2bc041892c5edea9fbcf5340ad05c1' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_PART1_NAME='setup_disco_elysium_-_the_final_cut_wina0a062ed_(72872)-1.bin' ARCHIVE_BASE_3_PART1_MD5='f150ff79eabe46ac6440ac85f1ed63a9' ARCHIVE_BASE_3_PART2_NAME='setup_disco_elysium_-_the_final_cut_wina0a062ed_(72872)-2.bin' ARCHIVE_BASE_3_PART2_MD5='798ce91c5204e3d0bf810033734700bd' ARCHIVE_BASE_3_PART3_NAME='setup_disco_elysium_-_the_final_cut_wina0a062ed_(72872)-3.bin' ARCHIVE_BASE_3_PART3_MD5='3fccee3836168ab2d76b5759258d8363' ARCHIVE_BASE_3_SIZE='10078050' ARCHIVE_BASE_3_VERSION='1.0.a0a062ed-gog72872' ARCHIVE_BASE_2_NAME='setup_disco_elysium_a0a062e7_(64bit)_(63158).exe' ARCHIVE_BASE_2_MD5='1d9cab4e4952a588a5a8af30ac7dd7aa' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_disco_elysium_a0a062e7_(64bit)_(63158)-1.bin' ARCHIVE_BASE_2_PART1_MD5='fbe7a581843d47681ba0f2aa1696a58c' ARCHIVE_BASE_2_PART2_NAME='setup_disco_elysium_a0a062e7_(64bit)_(63158)-2.bin' ARCHIVE_BASE_2_PART2_MD5='8925592fc18c4565e262fd4e3008e9fc' ARCHIVE_BASE_2_PART3_NAME='setup_disco_elysium_a0a062e7_(64bit)_(63158)-3.bin' ARCHIVE_BASE_2_PART3_MD5='ddbda58eb8c570662689721246b4f081' ARCHIVE_BASE_2_SIZE='10000000' ARCHIVE_BASE_2_VERSION='1.0.a0a062e7-gog63158' ARCHIVE_BASE_1_NAME='setup_disco_elysium_3c54ad81_(64bit)_(60250).exe' ARCHIVE_BASE_1_MD5='c915229dfa223b16f4399475589ff346' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_disco_elysium_3c54ad81_(64bit)_(60250)-1.bin' ARCHIVE_BASE_1_PART1_MD5='a6d13f109f26f17a2f1a9d06f519ba1f' ARCHIVE_BASE_1_PART2_NAME='setup_disco_elysium_3c54ad81_(64bit)_(60250)-2.bin' ARCHIVE_BASE_1_PART2_MD5='816a2fed25591f9f26b094f9ead7a1af' ARCHIVE_BASE_1_PART3_NAME='setup_disco_elysium_3c54ad81_(64bit)_(60250)-3.bin' ARCHIVE_BASE_1_PART3_MD5='a12113e41085154d94209cd076ce5057' ARCHIVE_BASE_1_SIZE='10000000' ARCHIVE_BASE_1_VERSION='1.0.3c54ad81-gog60250' ARCHIVE_BASE_0_NAME='setup_disco_elysium_ee8d3b39_(64bit)_(58288).exe' ARCHIVE_BASE_0_MD5='6b196bb79102de695bbc45904342b8ad' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_disco_elysium_ee8d3b39_(64bit)_(58288)-1.bin' ARCHIVE_BASE_0_PART1_MD5='120e95e8fef4537283705b5510af6d86' ARCHIVE_BASE_0_PART2_NAME='setup_disco_elysium_ee8d3b39_(64bit)_(58288)-2.bin' ARCHIVE_BASE_0_PART2_MD5='82c73e068dc3b18893e11a45bf74242e' ARCHIVE_BASE_0_PART3_NAME='setup_disco_elysium_ee8d3b39_(64bit)_(58288)-3.bin' ARCHIVE_BASE_0_PART3_MD5='20d337ae2de345628b5e4a6b9a2f55c7' ARCHIVE_BASE_0_SIZE='10000000' ARCHIVE_BASE_0_VERSION='1.0.ee8d3b39-gog58288' UNITY3D_NAME='disco' UNITY3D_NAME_2='disco elysium' UNITY3D_NAME_1='disco elysium' UNITY3D_NAME_0='disco elysium' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_STREAMINGASSETS_FILES=" ${UNITY3D_NAME}_data/streamingassets" CONTENT_GAME_DATA_STREAMINGASSETS_FILES_2=" ${UNITY3D_NAME_2}_data/streamingassets" CONTENT_GAME_DATA_STREAMINGASSETS_FILES_1=" ${UNITY3D_NAME_1}_data/streamingassets" CONTENT_GAME_DATA_STREAMINGASSETS_FILES_0=" ${UNITY3D_NAME_0}_data/streamingassets" WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/ZAUM Studio/Disco Elysium' PACKAGES_LIST=' PKG_BIN PKG_DATA_STREAMINGASSETS PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_STREAMINGASSETS_ID="${PKG_DATA_ID}-streamingassets" PKG_DATA_STREAMINGASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - streamingassets" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_STREAMINGASSETS_ID" 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 . "$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-distance.sh0000755000000000000000000000561514471751340013761 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Distance ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='distance' GAME_NAME='Distance' ARCHIVE_BASE_5_NAME='distance_6895_linux.tar.gz' ARCHIVE_BASE_5_MD5='8c71eb4ebd4dbe0b89ee90ba538eadd9' ARCHIVE_BASE_5_SIZE='2600000' ARCHIVE_BASE_5_VERSION='1.4.0-humble190905' ARCHIVE_BASE_5_URL='https://www.humblebundle.com/store/distance' ARCHIVE_BASE_4_NAME='distance_6842_linux.tar.gz' ARCHIVE_BASE_4_MD5='58e05033c1a0ae206718be5d5ee800db' ARCHIVE_BASE_4_SIZE='2400000' ARCHIVE_BASE_4_VERSION='1.3.1-humble190618' ARCHIVE_BASE_3_NAME='distance_6839_linux.tar.gz' ARCHIVE_BASE_3_MD5='308b8276a490f641476098900180d1d3' ARCHIVE_BASE_3_SIZE='2400000' ARCHIVE_BASE_3_VERSION='1.3.0-humble190609' ARCHIVE_BASE_2_NAME='distance_6802_linux.tar.gz' ARCHIVE_BASE_2_MD5='e98812e71ce42e667c33cdf3f38793b7' ARCHIVE_BASE_2_SIZE='2400000' ARCHIVE_BASE_2_VERSION='1.2.4-humble190418' ARCHIVE_BASE_1_NAME='distance_6714_linux.tar.gz' ARCHIVE_BASE_1_MD5='6b82a258c4fe4c5fe5dcf3ec70f7c326' ARCHIVE_BASE_1_SIZE='2300000' ARCHIVE_BASE_1_VERSION='1.1.1-humble190120' ARCHIVE_BASE_0_NAME='distance_6670_linux.tar.gz' ARCHIVE_BASE_0_MD5='7542f19db3aa2f00368b4efb91907a4f' ARCHIVE_BASE_0_SIZE='1800000' ARCHIVE_BASE_0_VERSION='1.0.2-humble181103' UNITY3D_NAME='Distance' UNITY3D_PLUGINS=' libAkFlanger.so libAkGuitarDistortion.so libAkHarmonizer.so libAkPitchShifter.so libAkSoundEngine.so libAkStereoDelay.so libAkTremolo.so libSynthOne.so ScreenSelector.so' CONTENT_PATH_DEFAULT='bin' CONTENT_DOC_DATA_PATH='.' CONTENT_DOC_DATA_FILES=' EULA.txt' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 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 libSDL2-2.0.so.0 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-dungeon-keeper-1.sh0000755000000000000000000001345414471751340015235 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Dungeon Keeper 1 ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='dungeon-keeper-1' GAME_NAME='Dungeon Keeper' ARCHIVE_BASE_1_NAME='setup_dungeon_keeper_gold_10.1_(28184).exe' ARCHIVE_BASE_1_MD5='5d9c6f723c0375590cd77f79bed44eff' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='370026' ARCHIVE_BASE_1_VERSION='10.1-gog28184' ARCHIVE_BASE_1_URL='https://www.gog.com/game/dungeon_keeper' ARCHIVE_BASE_0_NAME='setup_dungeon_keeper_gold_2.1.0.7.exe' ARCHIVE_BASE_0_MD5='8f8890d743c171fb341c9d9c87c52343' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='400000' ARCHIVE_BASE_0_VERSION='10.1-gog2.1.0.7' # Archives content ## Main game content CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' data ldata levels sound game.gog game.ins game.inst deeper.exe dos4gw.exe keeper.exe *.ogg' CONTENT_GAME0_MAIN_PATH='__support/save' CONTENT_GAME0_MAIN_PATH_0='app' CONTENT_GAME0_MAIN_FILES=' *.cfg sound/*.ini' CONTENT_DOC_MAIN_FILES=' *.pdf' ## Localizations CONTENT_L10N_TXT_PATH='keeper/data' CONTENT_L10N_VOICES_SPEECH_PATH='keeper/sound/speech' CONTENT_L10N_VOICES_ATLAS_PATH='keeper/sound/atlas' ### English CONTENT_L10N_TXT_EN_PATH="${CONTENT_L10N_TXT_PATH}/english" CONTENT_L10N_TXT_EN_FILES=' dd1text.dat text.dat' CONTENT_L10N_VOICES_SPEECH_EN_PATH="${CONTENT_L10N_VOICES_SPEECH_PATH}/english" CONTENT_L10N_VOICES_SPEECH_EN_FILES=' speech.dat' CONTENT_L10N_VOICES_ATLAS_EN_PATH="${CONTENT_L10N_VOICES_ATLAS_PATH}/english" CONTENT_L10N_VOICES_ATLAS_EN_FILES=' bad??.wav good??.wav' ### French CONTENT_L10N_TXT_FR_PATH="${CONTENT_L10N_TXT_PATH}/french" CONTENT_L10N_TXT_FR_FILES=' dd1text.dat text.dat' CONTENT_L10N_VOICES_SPEECH_FR_PATH="${CONTENT_L10N_VOICES_SPEECH_PATH}/french" CONTENT_L10N_VOICES_SPEECH_FR_FILES=' speech.dat' CONTENT_L10N_VOICES_ATLAS_FR_PATH="${CONTENT_L10N_VOICES_ATLAS_PATH}/french" CONTENT_L10N_VOICES_ATLAS_FR_FILES=' bad??.wav good??.wav' GAME_IMAGE='game.ins' GAME_IMAGE_TYPE='iso' USER_PERSISTENT_DIRECTORIES=' save' USER_PERSISTENT_FILES=' *.cfg data/HISCORES.DAT' APP_MAIN_EXE='keeper.exe' APP_MAIN_ICON='goggame-1207658934.ico' APP_ADDON_ID="${GAME_ID}-deeper-dungeons" APP_ADDON_NAME="$GAME_NAME - Deeper Dungeons" APP_ADDON_EXE='deeper.exe' APP_ADDON_ICON='gfw_high_addon.ico' PACKAGES_LIST=' PKG_L10N_TXT_EN PKG_L10N_TXT_FR PKG_L10N_VOICES_EN PKG_L10N_VOICES_FR PKG_MAIN' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_TXT PKG_L10N_VOICES' PKG_L10N_TXT_ID="${GAME_ID}-l10n-txt" PKG_L10N_TXT_EN_ID="${PKG_L10N_TXT_ID}-en" PKG_L10N_TXT_FR_ID="${PKG_L10N_TXT_ID}-fr" PKG_L10N_TXT_PROVIDES=" $PKG_L10N_TXT_ID" PKG_L10N_TXT_EN_PROVIDES="$PKG_L10N_TXT_PROVIDES" PKG_L10N_TXT_FR_PROVIDES="$PKG_L10N_TXT_PROVIDES" PKG_L10N_TXT_EN_DESCRIPTION='English text' PKG_L10N_TXT_FR_DESCRIPTION='French text' PKG_L10N_VOICES_ID="${GAME_ID}-l10n-voices" PKG_L10N_VOICES_EN_ID="${PKG_L10N_VOICES_ID}-en" PKG_L10N_VOICES_FR_ID="${PKG_L10N_VOICES_ID}-fr" PKG_L10N_VOICES_PROVIDES=" $PKG_L10N_VOICES_ID" PKG_L10N_VOICES_EN_PROVIDES="$PKG_L10N_VOICES_PROVIDES" PKG_L10N_VOICES_FR_PROVIDES="$PKG_L10N_VOICES_PROVIDES" PKG_L10N_VOICES_EN_DESCRIPTION='English voices' PKG_L10N_VOICES_FR_DESCRIPTION='French voices' # unar is used to extract the contents of the disk image SCRIPT_DEPS="${SCRIPT_DEPS:-} unar" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Delete files that should not be included in the base package. ## These files are provided by the localization packages. rm --force --recursive \ 'data/dd1text.dat' \ 'data/text.dat' \ 'sound/atlas' \ 'sound/speech.dat' ## Enforce a consistent name for the disk image table of content. if [ -e 'game.inst' ]; then mv 'game.inst' "$GAME_IMAGE" fi ) # Extract localization content from the disk image ARCHIVE_L10N_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/game.gog" ARCHIVE_L10N_EXTRACTOR='unar' archive_extraction 'ARCHIVE_L10N' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Convert all file paths to lowercase. tolower . ) # Include game data content_inclusion_icons 'PKG_MAIN' content_inclusion 'L10N_TXT_EN' 'PKG_L10N_TXT_EN' "$(path_game_data)/data" content_inclusion 'L10N_TXT_FR' 'PKG_L10N_TXT_FR' "$(path_game_data)/data" content_inclusion 'L10N_VOICES_SPEECH_EN' 'PKG_L10N_VOICES_EN' "$(path_game_data)/sound" content_inclusion 'L10N_VOICES_SPEECH_FR' 'PKG_L10N_VOICES_FR' "$(path_game_data)/sound" content_inclusion 'L10N_VOICES_ATLAS_EN' 'PKG_L10N_VOICES_EN' "$(path_game_data)/sound/atlas" content_inclusion 'L10N_VOICES_ATLAS_FR' 'PKG_L10N_VOICES_FR' "$(path_game_data)/sound/atlas" content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation case "$(messages_language)" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_L10N_TXT_EN' 'PKG_L10N_VOICES_EN' 'PKG_MAIN' printf "$lang_string" "$lang_fr" print_instructions 'PKG_L10N_TXT_FR' 'PKG_L10N_VOICES_FR' 'PKG_MAIN' # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-dungeon-keeper-2.sh0000755000000000000000000000456514471751340015241 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Dungeon Keeper 2 ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='dungeon-keeper-2' GAME_NAME='Dungeon Keeper Ⅱ' ARCHIVE_BASE_1_NAME='setup_dungeon_keeper_2_1.7_(22280).exe' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_MD5='eeb2229ee49518504884a9ac65f611ad' ARCHIVE_BASE_1_SIZE='500537' ARCHIVE_BASE_1_VERSION='1.7-gog22280' ARCHIVE_BASE_1_URL='https://www.gog.com/game/dungeon_keeper_2' ARCHIVE_BASE_0_NAME='setup_dungeon_keeper2_2.0.0.32.exe' ARCHIVE_BASE_0_MD5='92d04f84dd870d9624cd18449d3622a5' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='510000' ARCHIVE_BASE_0_VERSION='1.7-gog2.0.0.32' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' aweman32.dll patch.dll qmixer.dll sfman32.dll weanetr.dll dkii.exe dkii-dx.exe dkii_soft.exe' CONTENT_GAME_DATA_FILES=' data dk2texturecache' CONTENT_DOC_DATA_FILES=' manual.pdf reference_card.pdf eamseula.txt readme.txt' USER_PERSISTENT_DIRECTORIES=' data/settings data/save' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Bullfrog Productions Ltd\Dungeon Keeper II' WINE_VIRTUAL_DESKTOP='auto' ## Work around poor performances using hardware rendering with Intel+Mesa. WINE_WINETRICKS_VERBS='csmt=off' APP_MAIN_EXE='dkii-dx.exe' APP_MAIN_ICON='dkii.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 . "$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-endzone-1-expansions.sh0000755000000000000000000000413114471751340016144 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Endzone 1 expansions: # - Halloween ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='endzone-1' GAME_NAME='Endzone: A World Apart' EXPANSION_ID_HALLOWEEN='halloween' EXPANSION_NAME_HALLOWEEN='Halloween' # Archives ## Halloween ARCHIVE_BASE_HALLOWEEN_EN_0_NAME='setup_endzone_-_a_world_apart_happy_halloween_1.2.8630.30586_(64bit)_(66949).exe' ARCHIVE_BASE_HALLOWEEN_EN_0_MD5='377587121fed6ba7f8a2d914cdbfdbf7' ARCHIVE_BASE_HALLOWEEN_EN_0_TYPE='innosetup' ARCHIVE_BASE_HALLOWEEN_EN_0_SIZE='26268' ARCHIVE_BASE_HALLOWEEN_EN_0_VERSION='1.2.8630.30586-gog66949' ARCHIVE_BASE_HALLOWEEN_EN_0_URL='https://www.gog.com/game/endzone_a_world_apart_halloween' ARCHIVE_BASE_HALLOWEEN_FR_0_NAME='setup_endzone_-_a_world_apart_happy_halloween_1.2.8630.30586_(french_64bit)_(66949).exe' ARCHIVE_BASE_HALLOWEEN_FR_0_MD5='f50c8540bc740a57d4b430c92d608160' ARCHIVE_BASE_HALLOWEEN_FR_0_TYPE='innosetup' ARCHIVE_BASE_HALLOWEEN_FR_0_SIZE='26268' ARCHIVE_BASE_HALLOWEEN_FR_0_VERSION='1.2.8630.30586-gog66949' ARCHIVE_BASE_HALLOWEEN_FR_0_URL='https://www.gog.com/game/endzone_a_world_apart_halloween' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' mods' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-endzone-1.sh0000755000000000000000000000531414471751340013763 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Endzone 1 ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='endzone-1' GAME_NAME='Endzone: A World Apart' ARCHIVE_BASE_EN_0_NAME='setup_endzone_-_a_world_apart_1.2.8630.30586_(64bit)_(66949).exe' ARCHIVE_BASE_EN_0_MD5='01a625f5c0e07d324fb07d8ac43fdd14' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_endzone_-_a_world_apart_1.2.8630.30586_(64bit)_(66949)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='de1aba989b4798154fce6e4fa2ffbf46' ARCHIVE_BASE_EN_0_SIZE='4242544' ARCHIVE_BASE_EN_0_VERSION='1.2.8630.30586-gog66949' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/endzone_a_world_apart' ARCHIVE_BASE_FR_0_NAME='setup_endzone_-_a_world_apart_1.2.8630.30586_(french_64bit)_(66949).exe' ARCHIVE_BASE_FR_0_MD5='003ad80a6a2ce4123ffe2d98c5fe0de5' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_PART1_NAME='setup_endzone_-_a_world_apart_1.2.8630.30586_(french_64bit)_(66949)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='5f68efd024f84f71edad63e2122f7bf3' ARCHIVE_BASE_FR_0_SIZE='4244580' ARCHIVE_BASE_FR_0_VERSION='1.2.8630.30586-gog66949' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/endzone_a_world_apart' UNITY3D_NAME='endzone' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_L10N_FILES=' localizations' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Gentlymad Studios/Endzone' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-factorio.sh0000755000000000000000000001723014471751340013771 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 HS-157 # SPDX-FileCopyrightText: © 2021 Hoël Bézier set -o errexit ### # Factorio ### script_version=20240628.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='factorio' GAME_NAME='Factorio' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" # Archives ## Factorio (full game) ARCHIVE_BASE_15_NAME='factorio_alpha_x64_1.1.107.tar.xz' ARCHIVE_BASE_15_MD5='5c3294a7b2bd3b93a7cd9f8a7e785885' ARCHIVE_BASE_15_SIZE='1783701' ARCHIVE_BASE_15_VERSION='1.1.107-1' ARCHIVE_BASE_15_URL='https://www.factorio.com/' ARCHIVE_BASE_14_NAME='factorio_alpha_x64_1.1.91.tar.xz' ARCHIVE_BASE_14_MD5='3d906d237f44c5a3d7cd019f5733c53c' ARCHIVE_BASE_14_SIZE='1894576' ARCHIVE_BASE_14_VERSION='1.1.91-1' ARCHIVE_BASE_13_NAME='factorio_alpha_x64_1.1.87.tar.xz' ARCHIVE_BASE_13_MD5='d7972ea941172301e18ebb64694a10b6' ARCHIVE_BASE_13_SIZE='1750584' ARCHIVE_BASE_13_VERSION='1.1.87-1' ARCHIVE_BASE_12_NAME='factorio_alpha_x64_1.1.80.tar.xz' ARCHIVE_BASE_12_MD5='fc2e68ed66beedb82ad4a25023ac32aa' ARCHIVE_BASE_12_SIZE='1800000' ARCHIVE_BASE_12_VERSION='1.1.80-1' ARCHIVE_BASE_11_NAME='factorio_alpha_x64_1.1.77.tar.xz' ARCHIVE_BASE_11_MD5='ea6a481b694d73a956e45ea3ebe17a43' ARCHIVE_BASE_11_SIZE='1800000' ARCHIVE_BASE_11_VERSION='1.1.77-1' ARCHIVE_BASE_10_NAME='factorio_alpha_x64_1.1.76.tar.xz' ARCHIVE_BASE_10_MD5='c2a2302f2c1819a453a023789b3b8558' ARCHIVE_BASE_10_SIZE='1800000' ARCHIVE_BASE_10_VERSION='1.1.76-1' ARCHIVE_BASE_9_NAME='factorio_alpha_x64_1.1.61.tar.xz' ARCHIVE_BASE_9_MD5='d829704d00f92bef8d72ba3f36910529' ARCHIVE_BASE_9_SIZE='1800000' ARCHIVE_BASE_9_VERSION='1.1.61-1' ARCHIVE_BASE_8_NAME='factorio_alpha_x64_1.1.59.tar.xz' ARCHIVE_BASE_8_MD5='568328112d5b6e57c9e7a13237c85500' ARCHIVE_BASE_8_SIZE='1800000' ARCHIVE_BASE_8_VERSION='1.1.59-1' ARCHIVE_BASE_7_NAME='factorio_alpha_x64_1.1.57.tar.xz' ARCHIVE_BASE_7_MD5='c1e5392a9c7d2ead37de90c1ce4732ff' ARCHIVE_BASE_7_SIZE='1800000' ARCHIVE_BASE_7_VERSION='1.1.57-1' ARCHIVE_BASE_6_NAME='factorio_alpha_x64_1.1.53.tar.xz' ARCHIVE_BASE_6_MD5='3197e3b0de006f3c14027604ba39a244' ARCHIVE_BASE_6_SIZE='1800000' ARCHIVE_BASE_6_VERSION='1.1.53-1' ARCHIVE_BASE_5_NAME='factorio_alpha_x64_1.1.41.tar.xz' ARCHIVE_BASE_5_MD5='9dbe3f0b17a2f217f62b1d6b756897dc' ARCHIVE_BASE_5_SIZE='1800000' ARCHIVE_BASE_5_VERSION='1.1.41-1' ARCHIVE_BASE_4_NAME='factorio_alpha_x64_1.1.39.tar.xz' ARCHIVE_BASE_4_MD5='92dae2519513f87cc9b25c26930a21a9' ARCHIVE_BASE_4_SIZE='1800000' ARCHIVE_BASE_4_VERSION='1.1.39-1' ARCHIVE_BASE_3_NAME='factorio_alpha_x64_1.1.30.tar.xz' ARCHIVE_BASE_3_MD5='b039e25fef976f2ebe77bf5d9bca3c90' ARCHIVE_BASE_3_SIZE='1800000' ARCHIVE_BASE_3_VERSION='1.1.30-1' ARCHIVE_BASE_2_NAME='factorio_alpha_x64_1.1.27.tar.xz' ARCHIVE_BASE_2_MD5='71c370e0363c40e95f0a9af56b8f4a9b' ARCHIVE_BASE_2_SIZE='1800000' ARCHIVE_BASE_2_VERSION='1.1.27-1' ARCHIVE_BASE_1_NAME='factorio_alpha_x64_1.1.19.tar.xz' ARCHIVE_BASE_1_MD5='ffe7310259e6176d20fc4add10d8a3d3' ARCHIVE_BASE_1_SIZE='1800000' ARCHIVE_BASE_1_VERSION='1.1.19-1' ARCHIVE_BASE_0_NAME='factorio_alpha_x64_1.0.0.tar.xz' ARCHIVE_BASE_0_MD5='001910cafbfa8f4ac61b2897f91fe77e' ARCHIVE_BASE_0_SIZE='1700000' ARCHIVE_BASE_0_VERSION='1.0.0-1' ## Factorio (demo) ARCHIVE_BASE_DEMO_13_NAME='factorio_demo_x64_1.1.107.tar.xz' ARCHIVE_BASE_DEMO_13_MD5='e59b6e296f2080d1f80df3090f3b40d4' ARCHIVE_BASE_DEMO_13_SIZE='1645945' ARCHIVE_BASE_DEMO_13_VERSION='1.1.107-1' ARCHIVE_BASE_DEMO_13_URL='https://www.factorio.com/download' ARCHIVE_BASE_DEMO_12_NAME='factorio_demo_x64_1.1.91.tar.xz' ARCHIVE_BASE_DEMO_12_MD5='b4c599f44952033e5830f3fee78cb41f' ARCHIVE_BASE_DEMO_12_SIZE='1687672' ARCHIVE_BASE_DEMO_12_VERSION='1.1.91-1' ARCHIVE_BASE_DEMO_11_NAME='factorio_demo_x64_1.1.87.tar.xz' ARCHIVE_BASE_DEMO_11_MD5='7968cbd443ad7d562c6bbbb5a5f99d0d' ARCHIVE_BASE_DEMO_11_SIZE='1687456' ARCHIVE_BASE_DEMO_11_VERSION='1.1.87-1' ARCHIVE_BASE_DEMO_10_NAME='factorio_demo_x64_1.1.76.tar.xz' ARCHIVE_BASE_DEMO_10_MD5='bf5eb5cf72137a87ea1055cf9b39967a' ARCHIVE_BASE_DEMO_10_SIZE='1700000' ARCHIVE_BASE_DEMO_10_VERSION='1.1.76-1' ARCHIVE_BASE_DEMO_9_NAME='factorio_demo_x64_1.1.59.tar.xz' ARCHIVE_BASE_DEMO_9_MD5='c40c223284a8a373800bf777d364f5b2' ARCHIVE_BASE_DEMO_9_SIZE='1700000' ARCHIVE_BASE_DEMO_9_VERSION='1.1.59-1' ARCHIVE_BASE_DEMO_8_NAME='factorio_demo_x64_1.1.53.tar.xz' ARCHIVE_BASE_DEMO_8_MD5='79bafca740b1ea6fb13ab94b79845601' ARCHIVE_BASE_DEMO_8_SIZE='1700000' ARCHIVE_BASE_DEMO_8_VERSION='1.1.53-1' ARCHIVE_BASE_DEMO_7_NAME='factorio_demo_x64_1.1.41.tar.xz' ARCHIVE_BASE_DEMO_7_MD5='df020fa5c98690d8aedf8cb23b80bce3' ARCHIVE_BASE_DEMO_7_VERSION='1.1.41-1' ARCHIVE_BASE_DEMO_7_SIZE='1700000' ARCHIVE_BASE_DEMO_6_NAME='factorio_demo_x64_1.1.39.tar.xz' ARCHIVE_BASE_DEMO_6_MD5='cabef150f9b7af9b1480d2590b7799ec' ARCHIVE_BASE_DEMO_6_VERSION='1.1.39-1' ARCHIVE_BASE_DEMO_6_SIZE='1700000' ARCHIVE_BASE_DEMO_5_NAME='factorio_demo_x64_1.1.33.tar.xz' ARCHIVE_BASE_DEMO_5_MD5='82cc1137048cf98121cd6943e51ae597' ARCHIVE_BASE_DEMO_5_VERSION='1.1.33-1' ARCHIVE_BASE_DEMO_5_SIZE='1700000' ARCHIVE_BASE_DEMO_4_NAME='factorio_demo_x64_1.1.32.tar.xz' ARCHIVE_BASE_DEMO_4_MD5='275b63133ac56e59ccb73e98f5bebed2' ARCHIVE_BASE_DEMO_4_VERSION='1.1.32-1' ARCHIVE_BASE_DEMO_4_SIZE='1700000' ARCHIVE_BASE_DEMO_3_NAME='factorio_demo_x64_1.1.30.tar.xz' ARCHIVE_BASE_DEMO_3_MD5='36186abcbe560591bd8e4c207291409f' ARCHIVE_BASE_DEMO_3_VERSION='1.1.30-1' ARCHIVE_BASE_DEMO_3_SIZE='1700000' ARCHIVE_BASE_DEMO_2_NAME='factorio_demo_x64_1.1.27.tar.xz' ARCHIVE_BASE_DEMO_2_MD5='cdb61b4b98a704e9c6a1090938dfabee' ARCHIVE_BASE_DEMO_2_VERSION='1.1.27-1' ARCHIVE_BASE_DEMO_2_SIZE='1700000' ARCHIVE_BASE_DEMO_1_NAME='factorio_demo_x64_1.0.0.tar.xz' ARCHIVE_BASE_DEMO_1_MD5='3995194f9c4b4368ecf27ffa9234008e' ARCHIVE_BASE_DEMO_1_VERSION='1.0.0-1' ARCHIVE_BASE_DEMO_1_SIZE='1400000' ARCHIVE_BASE_DEMO_0_NAME='factorio_demo_x64_0.16.51.tar.xz' ARCHIVE_BASE_DEMO_0_MD5='130267c91df0be6c2034b64fb05d389b' ARCHIVE_BASE_DEMO_0_VERSION='0.16.51-1' ARCHIVE_BASE_DEMO_0_SIZE='680000' CONTENT_PATH_DEFAULT='factorio' CONTENT_GAME_BIN_FILES=' bin/x64/factorio' CONTENT_GAME_DATA_FILES=' data config-path.cfg' CONTENT_DOC_DATA_FILES=' doc-html' USER_PERSISTENT_FILES=' *.cfg *.dat player-data.json' USER_PERSISTENT_DIRECTORIES=' config mods saves' APP_MAIN_EXE='bin/x64/factorio' APP_MAIN_ICON='data/core/graphics/factorio-icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ID_DEMO="$GAME_ID_DEMO" PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPS_DEMO="$PKG_DATA_ID_DEMO" 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 libresolv.so.2 librt.so.1 libX11.so.6 libXcursor.so.1 libXext.so.6 libXinerama.so.1 libXrandr.so.2' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-faster-than-light.sh0000755000000000000000000001123514471751340015503 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2018 BetaRays set -o errexit ### # Faster Than Light ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='faster-than-light' GAME_NAME='FTL: Faster Than Light' # Archives ## Installers sold from gog.com ARCHIVE_BASE_GOG_6_NAME='ftl_advanced_edition_1_6_12_2_35269.sh' ARCHIVE_BASE_GOG_6_MD5='fc012e9ac7515f0b7b119a73ccfd7190' ARCHIVE_BASE_GOG_6_SIZE='401336' ARCHIVE_BASE_GOG_6_VERSION='1.6.12.2-gog35269' ARCHIVE_BASE_GOG_6_URL='https://www.gog.com/game/faster_than_light' ARCHIVE_BASE_GOG_5_NAME='ftl_advanced_edition_1_6_12_2_34795.sh' ARCHIVE_BASE_GOG_5_MD5='d62355fc9339cd901242fc1828e8c248' ARCHIVE_BASE_GOG_5_SIZE='410000' ARCHIVE_BASE_GOG_5_VERSION='1.6.12.2-gog34795' ARCHIVE_BASE_GOG_4_NAME='ftl_advanced_edition_1_6_9_25330.sh' ARCHIVE_BASE_GOG_4_MD5='c3598ab0c07d1f038eb1642da066b6a5' ARCHIVE_BASE_GOG_4_SIZE='230000' ARCHIVE_BASE_GOG_4_VERSION='1.6.9-gog25330' ARCHIVE_BASE_GOG_3_NAME='ftl_advanced_edition_1_6_8_24110.sh' ARCHIVE_BASE_GOG_3_MD5='4d654aeca32de557c109fa5c642ff455' ARCHIVE_BASE_GOG_3_SIZE='230000' ARCHIVE_BASE_GOG_3_VERSION='1.6.8-gog24110' ARCHIVE_BASE_GOG_2_NAME='ftl_advanced_edition_1_6_7_24012.sh' ARCHIVE_BASE_GOG_2_MD5='43392da0d11548b1c16f1263fc5fad65' ARCHIVE_BASE_GOG_2_SIZE='230000' ARCHIVE_BASE_GOG_2_VERSION='1.6.8-gog24012' ARCHIVE_BASE_GOG_1_NAME='ftl_advanced_edition_en_1_6_7_18662.sh' ARCHIVE_BASE_GOG_1_MD5='2c5254547639b7718dac7a06dabd1d82' ARCHIVE_BASE_GOG_1_SIZE='210000' ARCHIVE_BASE_GOG_1_VERSION='1.6.7-gog18662' ARCHIVE_BASE_GOG_0_NAME='ftl_advanced_edition_en_1_6_3_17917.sh' ARCHIVE_BASE_GOG_0_MD5='b64692d5302a1ab60d912c5eb5fbc5e4' ARCHIVE_BASE_GOG_0_SIZE='210000' ARCHIVE_BASE_GOG_0_VERSION='1.6.3-gog17917' # Installers sold from humblebundle.com ARCHIVE_BASE_HUMBLE_2_NAME='FTL.1.6.12.Linux.zip' ARCHIVE_BASE_HUMBLE_2_MD5='4ee7ea561d7753c8a003570364e15311' ARCHIVE_BASE_HUMBLE_2_SIZE='400104' ARCHIVE_BASE_HUMBLE_2_VERSION='1.6.12-humble191220' ARCHIVE_BASE_HUMBLE_2_URL='https://www.humblebundle.com/store/ftl-faster-than-light' ARCHIVE_BASE_HUMBLE_1_NAME='FTL.1.6.9.tar.gz' ARCHIVE_BASE_HUMBLE_1_MD5='c70d9cbc55217a5f83e0d51189240ec2' ARCHIVE_BASE_HUMBLE_1_SIZE='230000' ARCHIVE_BASE_HUMBLE_1_VERSION='1.6.9-humble181120' ARCHIVE_BASE_HUMBLE_0_NAME='FTL-linux-1.6.8.tar.gz' ARCHIVE_BASE_HUMBLE_0_MD5='5898d476dae289dae20d93ecfc1b8390' ARCHIVE_BASE_HUMBLE_0_SIZE='230000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.6.8-humble180928' CONTENT_PATH_DEFAULT_GOG='data/noarch/game/data' CONTENT_PATH_DEFAULT_HUMBLE='FTL-linux/data' CONTENT_PATH_DEFAULT_HUMBLE_2='FTL.1.6.12.Linux/data' CONTENT_GAME_BIN64_FILES=' FTL.amd64' CONTENT_GAME_BIN32_FILES=' FTL.x86' CONTENT_GAME_DATA_FILES=' exe_icon.bmp ftl.dat' CONTENT_DOC_DATA_FILES=' licenses' CONTENT_DOC0_DATA_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/.." CONTENT_DOC0_DATA_PATH_HUMBLE_2="${CONTENT_PATH_DEFAULT_HUMBLE_2}/.." CONTENT_DOC0_DATA_FILES=' *.html *.txt' APP_MAIN_EXE_BIN64='FTL.amd64' APP_MAIN_EXE_BIN32='FTL.x86' APP_MAIN_ICON='exe_icon.bmp' ## Work around problems with non-US locales. APP_MAIN_PRERUN=' # Work around problems with non-US locales export LANG=C ' 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=' libasound.so.2 libc.so.6 libdl.so.2 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 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 . "$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-freelancer.sh0000755000000000000000000001047114471751340014271 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Freelancer ### script_version=20240503.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='freelancer' GAME_NAME='Freelancer' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_DEMO_EN_0_NAME='freelancer_demo.exe' ARCHIVE_BASE_DEMO_EN_0_MD5='1af0a4cc730a64de9f6a6ecde30edc11' ARCHIVE_BASE_DEMO_EN_0_TYPE='cabinet' ARCHIVE_BASE_DEMO_EN_0_VERSION='1.0-archiveorg1' ARCHIVE_BASE_DEMO_EN_0_SIZE='450000' ARCHIVE_BASE_DEMO_EN_0_URL='https://archive.org/details/freelancer_demo' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_PATH="${CONTENT_PATH_DEFAULT}/game" CONTENT_GAME_BIN_FILES=' exe/freelancer.exe' CONTENT_GAME0_BIN_PATH='cab1' CONTENT_GAME0_BIN_FILES=' dlls exe/1033 exe/alchemy.dll exe/common.dll exe/dacom.dll exe/dalib.dll exe/debuglib.dll exe/deformable2.dll exe/ebueula.dll exe/engbase.dll exe/flmaterials.dll exe/gundll.dll exe/imeui.dll exe/luaprofile.dll exe/movie.dll exe/msxml3a.dll exe/msxml3.dll exe/msxml3r.dll exe/readfile.dll exe/remoteclient.dll exe/remoteserver.dll exe/rendcomp.dll exe/rp8.dll exe/rpclocal.dll exe/server.dll exe/shading.dll exe/soundmanager.dll exe/soundstreamer.dll exe/system.dll exe/thorn.dll exe/unicows.dll exe/x86math.dll exe/ximage.dll exe/zlib.dll exe/*.bmp exe/*.exe exe/*.fl exe/*.hta exe/*.ini exe/*.txt' CONTENT_GAME_L10N_PATH='cab1' CONTENT_GAME_L10N_FILES=' data/audio/dialogue data/audio/mixes data/audio/sounds/ui/news_vendor_open.wav data/audio/*.ini data/audio/*.utf exe/equipresources.dll exe/infocards.dll exe/misctext.dll exe/misctextinfo2.dll exe/nameresources.dll exe/offerbriberesources.dll exe/resources.dll exe/serverresources.dll' CONTENT_GAME0_L10N_PATH='cab2' CONTENT_GAME0_L10N_FILES=' data/audio/dialogue data/audio/mixes data/audio/sounds/ui/news_vendor_open.wav data/audio/*.ini data/audio/*.utf' CONTENT_FONTS_DATA_PATH='fonts' CONTENT_FONTS_DATA_FILES=' agencyb.ttf agencyr.ttf arialuni.ttf' CONTENT_GAME_DATA_FILES=' fl.ico' CONTENT_GAME0_DATA_PATH='cab1' CONTENT_GAME0_DATA_FILES=' data' CONTENT_GAME1_DATA_PATH='cab2' CONTENT_GAME1_DATA_FILES=' data' CONTENT_DOC_DATA_FILES=' eula.rtf readme.rtf' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Freelancer Trial' APP_MAIN_EXE='exe/freelancer.exe' APP_MAIN_ICON='fl.ico' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_ID_DEMO="${GAME_ID_DEMO}-l10n" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_PROVIDES_DEMO=" $PKG_L10N_ID_DEMO" PKG_L10N_ID_EN="${PKG_L10N_ID}-en" PKG_L10N_ID_DEMO_EN="${PKG_L10N_ID_DEMO}-en" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_DEMO_EN='English localization' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_L10N_ID $PKG_DATA_ID" PKG_BIN_DEPS_DEMO="$PKG_L10N_ID_DEMO $PKG_DATA_ID_DEMO" PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' deinterlace video/x-ms-asf' ## TODO: Prevent the game from messing up with the desktop gamma values. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ARCHIVE_INNER1_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/cab1.cab" archive_extraction 'ARCHIVE_INNER1' rm "$(archive_path 'ARCHIVE_INNER1')" ARCHIVE_INNER2_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/cab2.cab" archive_extraction 'ARCHIVE_INNER2' rm "$(archive_path 'ARCHIVE_INNER2')" ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN')" ## Rename files with truncated names. mv 'exe/freela_1.exe' 'exe/freelancer.exe' ) # 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-frostpunk-expansions.sh0000755000000000000000000000471714471751340016411 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Frostpunk expansions: # - The Rifts # - The Last Autumn # - On The Edge ### script_version=20240712.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='frostpunk' GAME_NAME='Frostpunk' EXPANSION_ID_RIFTS='the-rifts' EXPANSION_NAME_RIFTS='The Rifts' EXPANSION_ID_AUTUMN='the-last-autumn' EXPANSION_NAME_AUTUMN='The Last Autumn' EXPANSION_ID_EDGE='on-the-edge' EXPANSION_NAME_EDGE='On The Edge' # Archives ## The Rifts ARCHIVE_BASE_RIFTS_0_NAME='setup_frostpunk_-_szczeliny_1.6.1_51852_59618_(51757).exe' ARCHIVE_BASE_RIFTS_0_MD5='28b7855428687f3e819e141e78f0efce' ARCHIVE_BASE_RIFTS_0_TYPE='innosetup' ARCHIVE_BASE_RIFTS_0_SIZE='7457' ARCHIVE_BASE_RIFTS_0_VERSION='1.6.1-gog51757' ARCHIVE_BASE_RIFTS_0_URL='https://www.gog.com/game/frostpunk_the_rifts' ## The Last Autumn ARCHIVE_BASE_AUTUMN_0_NAME='setup_frostpunk_the_last_autumn_1.6.1_51852_59618_(51757).exe' ARCHIVE_BASE_AUTUMN_0_MD5='caf40e3e2fc0354b4a4ac130abba1f9e' ARCHIVE_BASE_AUTUMN_0_TYPE='innosetup' ARCHIVE_BASE_AUTUMN_0_SIZE='7132' ARCHIVE_BASE_AUTUMN_0_VERSION='1.6.1-gog51757' ARCHIVE_BASE_AUTUMN_0_URL='https://www.gog.com/game/frostpunk_the_last_autumn' ## On The Edge ARCHIVE_BASE_EDGE_0_NAME='setup_frostpunk_on_the_edge_1.6.1_51852_59618_(51757).exe' ARCHIVE_BASE_EDGE_0_MD5='ac91f06f1e421f0ae8061eefaaf42859' ARCHIVE_BASE_EDGE_0_TYPE='innosetup' ARCHIVE_BASE_EDGE_0_SIZE='7926' ARCHIVE_BASE_EDGE_0_VERSION='1.6.1-gog51757' ARCHIVE_BASE_EDGE_0_URL='https://www.gog.com/game/frostpunk_on_the_edge' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' goggame-*.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-frostpunk.sh0000755000000000000000000001764214471751340014225 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Frostpunk ### script_version=20240712.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='frostpunk' GAME_NAME='Frostpunk' ARCHIVE_BASE_8_NAME='setup_frostpunk_1.6.1_51852_59618_(51757).exe' ARCHIVE_BASE_8_MD5='6d1f0d7c81821c949c5a7eb9c7f26133' ARCHIVE_BASE_8_TYPE='innosetup' ARCHIVE_BASE_8_PART1_NAME='setup_frostpunk_1.6.1_51852_59618_(51757)-1.bin' ARCHIVE_BASE_8_PART1_MD5='43f6adbfdc53299d4591a2abb1c84457' ARCHIVE_BASE_8_PART2_NAME='setup_frostpunk_1.6.1_51852_59618_(51757)-2.bin' ARCHIVE_BASE_8_PART2_MD5='6689f6a289b899ddcd69af920f4ecdc4' ARCHIVE_BASE_8_PART3_NAME='setup_frostpunk_1.6.1_51852_59618_(51757)-3.bin' ARCHIVE_BASE_8_PART3_MD5='a72c123ddeef82cdebeed57792b02e4c' ARCHIVE_BASE_8_SIZE='9593582' ARCHIVE_BASE_8_VERSION='1.6.1-gog51757' ARCHIVE_BASE_8_URL='https://www.gog.com/game/frostpunk' ARCHIVE_BASE_7_NAME='setup_frostpunk_1.6.1_51795_59550_(42925).exe' ARCHIVE_BASE_7_MD5='77bc92a7242dea010d766cf83bbace36' ARCHIVE_BASE_7_TYPE='innosetup' ARCHIVE_BASE_7_PART1_NAME='setup_frostpunk_1.6.1_51795_59550_(42925)-1.bin' ARCHIVE_BASE_7_PART1_MD5='cfdfccd316e3e1b82e285f9a54f3307a' ARCHIVE_BASE_7_PART2_NAME='setup_frostpunk_1.6.1_51795_59550_(42925)-2.bin' ARCHIVE_BASE_7_PART2_MD5='ff9cc388079e949bd1ac0f888315282b' ARCHIVE_BASE_7_PART3_NAME='setup_frostpunk_1.6.1_51795_59550_(42925)-3.bin' ARCHIVE_BASE_7_PART3_MD5='966cf1daaa31538c2dfa3b2125f86c34' ARCHIVE_BASE_7_SIZE='9500000' ARCHIVE_BASE_7_VERSION='1.6.1-gog42925' ARCHIVE_BASE_6_NAME='setup_frostpunk_1.6.1_51791_59537_(42472).exe' ARCHIVE_BASE_6_MD5='ec9795eb841cde30cb62d9983517aa68' ARCHIVE_BASE_6_TYPE='innosetup' ARCHIVE_BASE_6_PART1_NAME='setup_frostpunk_1.6.1_51791_59537_(42472)-1.bin' ARCHIVE_BASE_6_PART1_MD5='cb3996ecfa56f3ee102317d21392c034' ARCHIVE_BASE_6_PART2_NAME='setup_frostpunk_1.6.1_51791_59537_(42472)-2.bin' ARCHIVE_BASE_6_PART2_MD5='80af46c57e1e2d0fdb4fd97e4ba685f2' ARCHIVE_BASE_6_PART3_NAME='setup_frostpunk_1.6.1_51791_59537_(42472)-3.bin' ARCHIVE_BASE_6_PART3_MD5='652fb81dda4ca761d6fa08eba603c268' ARCHIVE_BASE_6_SIZE='9600000' ARCHIVE_BASE_6_VERSION='1.6.1-gog42472' ARCHIVE_BASE_5_NAME='setup_frostpunk_1.6.0_hotfix_candidate_3_(40765).exe' ARCHIVE_BASE_5_MD5='103d278de0b32670596d48fa0a3e1e7a' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_PART1_NAME='setup_frostpunk_1.6.0_hotfix_candidate_3_(40765)-1.bin' ARCHIVE_BASE_5_PART1_MD5='fc12ac7dc545219d54c0d547f30f77be' ARCHIVE_BASE_5_PART2_NAME='setup_frostpunk_1.6.0_hotfix_candidate_3_(40765)-2.bin' ARCHIVE_BASE_5_PART2_MD5='8393d7ff2b240fa894ad0523f6ffd3a0' ARCHIVE_BASE_5_PART3_NAME='setup_frostpunk_1.6.0_hotfix_candidate_3_(40765)-3.bin' ARCHIVE_BASE_5_PART3_MD5='77e9e8c6cfa3953a33d82b5fa822f226' ARCHIVE_BASE_5_SIZE='9800000' ARCHIVE_BASE_5_VERSION='1.6.0-gog40765' ARCHIVE_BASE_4_NAME='setup_frostpunk_1.6.0_(40599).exe' ARCHIVE_BASE_4_MD5='da7acf8c314c798743645d218567960d' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_PART1_NAME='setup_frostpunk_1.6.0_(40599)-1.bin' ARCHIVE_BASE_4_PART1_MD5='9ad1b9c0fe5ca877bbda422b465f81fc' ARCHIVE_BASE_4_PART2_NAME='setup_frostpunk_1.6.0_(40599)-2.bin' ARCHIVE_BASE_4_PART2_MD5='0aaed0691be9193110e8179e0468cd1c' ARCHIVE_BASE_4_PART3_NAME='setup_frostpunk_1.6.0_(40599)-3.bin' ARCHIVE_BASE_4_PART3_MD5='097ab0962232b97bb568350208e84dae' ARCHIVE_BASE_4_SIZE='9800000' ARCHIVE_BASE_4_VERSION='1.6.0-gog40599' ARCHIVE_BASE_3_NAME='setup_frostpunk_1.5.0.51146.56648_(2020-02-14_17-22)_(36204).exe' ARCHIVE_BASE_3_MD5='cc9bd3aba061dacd4f83e79e6a13d4e8' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_PART1_NAME='setup_frostpunk_1.5.0.51146.56648_(2020-02-14_17-22)_(36204)-1.bin' ARCHIVE_BASE_3_PART1_MD5='ba31654b9f3b1d24b22df3999e5ff78e' ARCHIVE_BASE_3_PART2_NAME='setup_frostpunk_1.5.0.51146.56648_(2020-02-14_17-22)_(36204)-2.bin' ARCHIVE_BASE_3_PART2_MD5='fc560cb127691e6fdcd9e1a82f0e7b26' ARCHIVE_BASE_3_PART3_NAME='setup_frostpunk_1.5.0.51146.56648_(2020-02-14_17-22)_(36204)-3.bin' ARCHIVE_BASE_3_PART3_MD5='b82e3dc7bd981c8a30b8da51813acbf6' ARCHIVE_BASE_3_SIZE='8700000' ARCHIVE_BASE_3_VERSION='1.5.0-gog36204' ARCHIVE_BASE_2_NAME='setup_frostpunk_1.5.0.51029.56354_(2020-01-21_1545)_(35558).exe' ARCHIVE_BASE_2_MD5='c31ecb7aa2497bc12bf83324d52b413f' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_frostpunk_1.5.0.51029.56354_(2020-01-21_1545)_(35558)-1.bin' ARCHIVE_BASE_2_PART1_MD5='92cc54cc6c91f8435c3e7bc80fb22a20' ARCHIVE_BASE_2_PART2_NAME='setup_frostpunk_1.5.0.51029.56354_(2020-01-21_1545)_(35558)-2.bin' ARCHIVE_BASE_2_PART2_MD5='22489f0c14736cd5c473a3e091dfed51' ARCHIVE_BASE_2_PART3_NAME='setup_frostpunk_1.5.0.51029.56354_(2020-01-21_1545)_(35558)-3.bin' ARCHIVE_BASE_2_PART3_MD5='24013bb92bf78991e110463579685461' ARCHIVE_BASE_2_SIZE='8700000' ARCHIVE_BASE_2_VERSION='1.5.0-gog35558' ARCHIVE_BASE_1_NAME='setup_frostpunk_1.4.1.50110.53938_(2019-11-05_1825)_(33713).exe' ARCHIVE_BASE_1_MD5='99b71af138d5fdcb67418392b0a14d62' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_frostpunk_1.4.1.50110.53938_(2019-11-05_1825)_(33713)-1.bin' ARCHIVE_BASE_1_PART1_MD5='3fbe880a3c3acaf00ede07c998b13c92' ARCHIVE_BASE_1_PART2_NAME='setup_frostpunk_1.4.1.50110.53938_(2019-11-05_1825)_(33713)-2.bin' ARCHIVE_BASE_1_PART2_MD5='86267bb5dc870db828c50ccaa45d6091' ARCHIVE_BASE_1_SIZE='6500000' ARCHIVE_BASE_1_VERSION='1.4.1-gog33713' ARCHIVE_BASE_0_NAME='setup_frostpunk_1.4.0.48534.51933_(2019-08-30_1543)_(32102).exe' ARCHIVE_BASE_0_MD5='08e52207d9385bd5d3d66755facad69a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_frostpunk_1.4.0.48534.51933_(2019-08-30_1543)_(32102)-1.bin' ARCHIVE_BASE_0_PART1_MD5='60245c2ede7e99f526fa5cb87a660ebe' ARCHIVE_BASE_0_PART2_NAME='setup_frostpunk_1.4.0.48534.51933_(2019-08-30_1543)_(32102)-2.bin' ARCHIVE_BASE_0_PART2_MD5='48dcdc8acb8bfd93b5eab09b8695854e' ARCHIVE_BASE_0_SIZE='6500000' ARCHIVE_BASE_0_VERSION='1.4.0-gog32102' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' anselsdk64.dll libcurl.dll libeay32.dll libssh2.dll pctouchhelper.dll ssleay32.dll frostpunk.exe gfxconfig.ini' ## TODO: Check if the GOG Galaxy library is required. CONTENT_GAME0_BIN_FILES=' galaxy64.dll' CONTENT_GAME_TEXTURES_FILES=' textures-s3.dat textures-s3.idx' CONTENT_GAME_DATA_PATH='app' CONTENT_GAME_DATA_FILES=' custom_localizations.dat voices.dat' CONTENT_GAME0_DATA_FILES=' *.dat *.idx *.str' CONTENT_DOC_DATA_FILES=' openfontlicense.txt' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/11bitstudios/Frostpunk' USER_PERSISTENT_FILES=' gfxconfig.ini' APP_MAIN_EXE='frostpunk.exe' APP_MAIN_ICON='frostpunk.exe' ## The game crashes on launch with some SDL settings. APP_MAIN_PRERUN=' # The game crashes on launch with some SDL settings if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi if [ "${SDL_AUDIODRIVER:-}" = "alsa" ]; then unset SDL_AUDIODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_TEXTURES PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_TEXTURES_ID="${GAME_ID}-textures" PKG_TEXTURES_DESCRIPTION='textures' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_TEXTURES' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-gamedec.sh0000755000000000000000000000615614471751340013555 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Gamedec ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='gamedec' GAME_NAME='Gamedec' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562).exe' ARCHIVE_BASE_0_MD5='81ce6923488911399dbd209cc574334a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562)-1.bin' ARCHIVE_BASE_0_PART1_MD5='e069d6764e368cd141d98ba93d286b50' ARCHIVE_BASE_0_PART2_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562)-2.bin' ARCHIVE_BASE_0_PART2_MD5='2e4507b72e2e47a9ccd658365fc8347e' ARCHIVE_BASE_0_PART3_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562)-3.bin' ARCHIVE_BASE_0_PART3_MD5='feee3d36bb8198f2d4e86eddaf0efd6e' ARCHIVE_BASE_0_SIZE='16408534' ARCHIVE_BASE_0_VERSION='1.7.1-gog60562' ARCHIVE_BASE_0_URL='https://www.gog.com/game/gamedec' ARCHIVE_BASE_DEMO_0_NAME='setup_gamedec_demo_20211126_1.3.0.r47441_(64bit)_(51758).exe' ARCHIVE_BASE_DEMO_0_MD5='cc801764f1ebf5e9c6c044ca7429dd4c' ARCHIVE_BASE_DEMO_0_TYPE='innosetup' ARCHIVE_BASE_DEMO_0_PART1_NAME='setup_gamedec_demo_20211126_1.3.0.r47441_(64bit)_(51758)-1.bin' ARCHIVE_BASE_DEMO_0_PART1_MD5='8d45c7abe34aef48ad40178230940713' ARCHIVE_BASE_DEMO_0_PART2_NAME='setup_gamedec_demo_20211126_1.3.0.r47441_(64bit)_(51758)-2.bin' ARCHIVE_BASE_DEMO_0_PART2_MD5='edf41425796878607f5c0574695b9ee8' ARCHIVE_BASE_DEMO_0_SIZE='10215245' ARCHIVE_BASE_DEMO_0_VERSION='1.3.0-gog51758' ARCHIVE_BASE_DEMO_0_URL='https://www.gog.com/game/gamedec_demo' UNREALENGINE4_NAME='gamedec' CONTENT_PATH_DEFAULT='.' HUGE_FILES_DATA=" ${UNREALENGINE4_NAME}/content/paks/${UNREALENGINE4_NAME}-windowsnoeditor.pak" APP_MAIN_EXE="${UNREALENGINE4_NAME}/binaries/win64/${UNREALENGINE4_NAME}-win64-shipping.exe" APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=123' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPS_DEMO="$PKG_DATA_ID_DEMO" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-ghost-master.sh0000755000000000000000000000463614471751340014606 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Ghost Master ### script_version=20240712.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='ghost-master' GAME_NAME='Ghost Master' ARCHIVE_BASE_1_NAME='setup_ghost_master_20171020_(15806).exe' ARCHIVE_BASE_1_MD5='bbc7b8d6ed9b08c54cba6f2b1048a0fd' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='658670' ARCHIVE_BASE_1_VERSION='1.1-gog15806' ARCHIVE_BASE_1_URL='https://www.gog.com/game/ghost_master' ARCHIVE_BASE_0_NAME='setup_ghost_master_2.0.0.3.exe' ARCHIVE_BASE_0_MD5='f581e0e08d7d9dfc89838c3ac892611a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='650000' ARCHIVE_BASE_0_VERSION='1.1-gog2.0.0.3' CONTENT_PATH_DEFAULT='app/ghostdata' CONTENT_GAME_BIN_FILES=' spdrv.cfg ogg.dll vorbis.dll vorbisfile.dll ghost.exe' CONTENT_GAME_DATA_FILES=' characters cursors fonts icons levels movies music new_animations otherobjects psparams pstextures scenarios screenshots scripts sound text ui voice lsize.txt' CONTENT_DOC_DATA_PATH="${CONTENT_PATH_DEFAULT}/.." CONTENT_DOC_DATA_FILES=' manual.pdf readme.txt' WINE_PERSISTENT_DIRECTORIES=' users/Public/Documents/Ghost Master/SaveGames' USER_PERSISTENT_DIRECTORIES=' screenshots' USER_PERSISTENT_FILES=' *.cfg' APP_MAIN_EXE='ghost.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' deinterlace video/x-ms-asf audio/x-wma, wmaversion=(int)1 video/x-wmv, wmvversion=(int)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 . "$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-gibbous-a-cthulhu-adventure.sh0000755000000000000000000000404614471751340017501 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Gibbous - A Cthulhu Adventure ### script_version=20240712.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='gibbous-a-cthulhu-adventure' GAME_NAME='Gibbous - A Cthulhu Adventure' ARCHIVE_BASE_0_NAME='gibbous_a_cthulhu_adventure_x86_64_1_8_35773.sh' ARCHIVE_BASE_0_MD5='c92315690df34ee8affa24f184486ccb' ARCHIVE_BASE_0_SIZE='9478807' ARCHIVE_BASE_0_VERSION='1.8-gog35773' ARCHIVE_BASE_0_URL='https://www.gog.com/game/gibbous_a_cthulhu_adventure' UNITY3D_NAME='Gibbous - A Cthulhu Adventure' UNITY3D_PLUGINS=' ScreenSelector.so' ## If libsteam_api.so is not included, the game crashes after the opening video played when starting a new game. 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 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 . "$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-goblins-5.sh0000755000000000000000000001132714471751340013763 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Goblins 5 ### script_version=20240730.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='goblins-5' GAME_ID_PART1="${GAME_ID}-part-1" GAME_ID_PART2="${GAME_ID}-part-2" GAME_ID_PART3="${GAME_ID}-part-3" GAME_ID_PART4="${GAME_ID}-part-4" GAME_NAME='Gobliiins 5: L’invasion des Morglotons' GAME_NAME_PART1="$GAME_NAME - Part 1" GAME_NAME_PART2="$GAME_NAME - Part 2" GAME_NAME_PART3="$GAME_NAME - Part 3" GAME_NAME_PART4="$GAME_NAME - Part 4" ARCHIVE_BASE_0_NAME='Gobliiins5.zip' ARCHIVE_BASE_0_MD5='9ec74c3b393736b3e7ea3b345355d537' ARCHIVE_BASE_0_SIZE='939801' ARCHIVE_BASE_0_VERSION='1.0-itch.2023.11.17' ARCHIVE_BASE_0_URL='https://pierre-gilhodes.itch.io/gobliiins5' ARCHIVE_BASE_DEMO_0_NAME='Gobliiins5-Part1.zip' ARCHIVE_BASE_DEMO_0_MD5='814a2e01fbf5a253fa56dd51c2e4d206' ARCHIVE_BASE_DEMO_0_SIZE='182592' ARCHIVE_BASE_DEMO_0_VERSION='1.0-itch.2023.11.17' ARCHIVE_BASE_DEMO_0_URL='https://pierre-gilhodes.itch.io/gobliiins5' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_PART1_FILES=' Gobliiins5-Part1.ags audio.vox English.tra acsetup.cfg' CONTENT_GAME_PART2_FILES=' Gobliiins5-Part2.ags audio.vox English.tra acsetup.cfg' CONTENT_GAME_PART3_FILES=' Gobliiins5-Part3.ags audio.vox English.tra acsetup.cfg' CONTENT_GAME_PART4_FILES=' Gobliiins5-Part4.ags audio.vox English.tra acsetup.cfg' APP_MAIN_SCUMMID_PART1='ags:gobliiins5-1' APP_MAIN_SCUMMID_PART2='ags:gobliiins5-2' APP_MAIN_SCUMMID_PART3='ags:gobliiins5-3' APP_MAIN_SCUMMID_PART4='ags:gobliiins5-4' APP_MAIN_ICON_PART1='Gobliiins5-Part1.exe' APP_MAIN_ICON_PART2='Gobliiins5-Part2.exe' APP_MAIN_ICON_PART3='Gobliiins5-Part3.exe' APP_MAIN_ICON_PART4='Gobliiins5-Part4.exe' PACKAGES_LIST=' PKG_PART1 PKG_PART2 PKG_PART3 PKG_PART4' PACKAGES_LIST_DEMO=' PKG_PART1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract and include data archive_extraction_default ## Each game part is handled one at a time to prevent unwanted file overwrites. case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) ## The game demo only includes the first part of the game. content_inclusion_icons 'PKG_PART1' content_inclusion 'GAME_PART1' 'PKG_PART1' "$( set_current_package 'PKG_PART1' path_game_data )" ;; (*) ## Allow the content inclusion message to be shown multiple times. information_content_inclusion() { local messages_language message messages_language=$(messages_language) case "$messages_language" in ('fr') message='Inclusion des fichiers du jeu…\n' ;; ('en'|*) message='Including game files…\n' ;; esac print_message 'info' "$message" } ARCHIVE_PART1_PATH="${PLAYIT_WORKDIR}/gamedata/Gobliiins5-Part1.zip" archive_extraction 'ARCHIVE_PART1' content_inclusion_icons 'PKG_PART1' content_inclusion 'GAME_PART1' 'PKG_PART1' "$( set_current_package 'PKG_PART1' path_game_data )" ARCHIVE_PART2_PATH="${PLAYIT_WORKDIR}/gamedata/Gobliiins5-Part2.zip" archive_extraction 'ARCHIVE_PART2' content_inclusion_icons 'PKG_PART2' content_inclusion 'GAME_PART2' 'PKG_PART2' "$( set_current_package 'PKG_PART2' path_game_data )" ARCHIVE_PART3_PATH="${PLAYIT_WORKDIR}/gamedata/Gobliiins5-Part3.zip" archive_extraction 'ARCHIVE_PART3' content_inclusion_icons 'PKG_PART3' content_inclusion 'GAME_PART3' 'PKG_PART3' "$( set_current_package 'PKG_PART3' path_game_data )" ARCHIVE_PART4_PATH="${PLAYIT_WORKDIR}/gamedata/Gobliiins5-Part4.zip" archive_extraction 'ARCHIVE_PART4' content_inclusion_icons 'PKG_PART4' content_inclusion 'GAME_PART4' 'PKG_PART4' "$( set_current_package 'PKG_PART4' path_game_data )" ;; esac rm --force --recursive "${PLAYIT_WORKDIR}/gamedata" # Write launchers case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) ## The game demo only includes the first part of the game. launchers_generation 'PKG_PART1' ;; (*) launchers_generation 'PKG_PART1' launchers_generation 'PKG_PART2' launchers_generation 'PKG_PART3' launchers_generation 'PKG_PART4' ;; esac # Build packages packages_generation ## Ensure that the generic game name is shown, not a package-specific one. unset GAME_NAME_PART1 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-goblins-trilogy.sh0000755000000000000000000001300614471751340015304 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 macaron set -o errexit ### # Goblins series: # - Goblins 1 # - Goblins 2 # - Goblins 3 ### script_version=20240605.2 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID_GOB1='goblins-1' GAME_NAME_GOB1='Gobliiins' GAME_ID_GOB2='goblins-2' GAME_NAME_GOB2='Gobliins 2: The Prince Buffoon' GAME_ID_GOB3='goblins-3' GAME_NAME_GOB3='Goblins 3' # Archives ## Goblins 1 ARCHIVE_BASE_GOB1_0_NAME='setup_gobliiins_1.02_(20270).exe' ARCHIVE_BASE_GOB1_0_MD5='dd4fa52b7ed43b964d82f2056c18b681' ARCHIVE_BASE_GOB1_0_TYPE='innosetup' ARCHIVE_BASE_GOB1_0_SIZE='99000' ARCHIVE_BASE_GOB1_0_VERSION='1.02-gog20270' ARCHIVE_BASE_GOB1_0_URL='https://www.gog.com/game/gobliiins_pack' ## Goblins 2 ARCHIVE_BASE_GOB2_0_NAME='setup_gobliins_2_-_the_prince_buffoon_1.02_(20270).exe' ARCHIVE_BASE_GOB2_0_MD5='3607f4ab042fea51e3b6544775955701' ARCHIVE_BASE_GOB2_0_TYPE='innosetup' ARCHIVE_BASE_GOB2_0_SIZE='110000' ARCHIVE_BASE_GOB2_0_VERSION='1.02-gog20270' ARCHIVE_BASE_GOB2_0_URL='https://www.gog.com/game/gobliiins_pack' ## Goblins 3 ARCHIVE_BASE_GOB3_EN_0_NAME='setup_goblins_quest_3_1.02_(20270).exe' ARCHIVE_BASE_GOB3_EN_0_MD5='9d98b9f643dad9c793416d50bcbd9f17' ARCHIVE_BASE_GOB3_EN_0_TYPE='innosetup' ARCHIVE_BASE_GOB3_EN_0_SIZE='210000' ARCHIVE_BASE_GOB3_EN_0_VERSION='1.02-gog20270' ARCHIVE_BASE_GOB3_EN_0_URL='https://www.gog.com/game/gobliiins_pack' ARCHIVE_BASE_GOB3_FR_0_NAME='setup_goblins_quest_3_1.02_(french)_(20270).exe' ARCHIVE_BASE_GOB3_FR_0_MD5='52649e08b57d8edfdbb4b72bc032e625' ARCHIVE_BASE_GOB3_FR_0_TYPE='innosetup' ARCHIVE_BASE_GOB3_FR_0_SIZE='200000' ARCHIVE_BASE_GOB3_FR_0_VERSION='1.02-gog20270' ARCHIVE_BASE_GOB3_FR_0_URL='https://www.gog.com/game/gobliiins_pack' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_L10N_FILES_GOB3=' ??gob3.itk' CONTENT_GAME_FLOPPY_PATH="${CONTENT_PATH_DEFAULT}/fdd" CONTENT_GAME_FLOPPY_FILES=' *.stk' CONTENT_GAME_CDROM_FILES=' *.itk *.lic *.stk *.mp3' CONTENT_DOC_COMMON_FILES=' *.pdf' # Applications ## Goblins 1 APP_MAIN_SCUMMID_GOB1='gob:gob1' APP_MAIN_ICON_GOB1='goggame-1207662273.ico' ## Goblins 2 APP_MAIN_SCUMMID_GOB2='gob:gob2' APP_MAIN_ICON_GOB2='goggame-1207662293.ico' ## Goblins 3 APP_MAIN_SCUMMID_GOB3='gob:gob3' APP_MAIN_ICON_GOB3='goggame-1207662313.ico' # Packages ## Common PACKAGES_LIST=' PKG_COMMON PKG_FLOPPY PKG_CDROM' PKG_FLOPPY_DEPENDENCIES_SIBLINGS=' PKG_COMMON' PKG_CDROM_DEPENDENCIES_SIBLINGS=' PKG_COMMON' ## Goblins 1 PKG_COMMON_ID_GOB1="${GAME_ID_GOB1}-common" PKG_MAIN_ID_GOB1="$GAME_ID_GOB1" PKG_FLOPPY_ID_GOB1="${PKG_MAIN_ID_GOB1}-floppy" PKG_FLOPPY_PROVIDES_GOB1=" $PKG_MAIN_ID_GOB1" PKG_CDROM_ID_GOB1="${PKG_MAIN_ID_GOB1}-cdrom" PKG_CDROM_PROVIDES_GOB1=" $PKG_MAIN_ID_GOB1" ## Goblins 2 PKG_COMMON_ID_GOB2="${GAME_ID_GOB2}-common" PKG_MAIN_ID_GOB2="$GAME_ID_GOB2" PKG_FLOPPY_ID_GOB2="${PKG_MAIN_ID_GOB2}-floppy" PKG_FLOPPY_PROVIDES_GOB2=" $PKG_MAIN_ID_GOB2" PKG_CDROM_ID_GOB2="${PKG_MAIN_ID_GOB2}-cdrom" PKG_CDROM_PROVIDES_GOB2=" $PKG_MAIN_ID_GOB2" ## Goblins 3 PACKAGES_LIST_GOB3=" PKG_L10N $PACKAGES_LIST" PKG_COMMON_ID_GOB3="${GAME_ID_GOB3}-common" PKG_L10N_BASE_ID="${GAME_ID_GOB3}-l10n" PKG_L10N_ID_GOB3_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_GOB3_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES_GOB3=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_GOB3_EN='English localization' PKG_L10N_DESCRIPTION_GOB3_FR='French localization' PKG_MAIN_ID_GOB3="$GAME_ID_GOB3" PKG_FLOPPY_ID_GOB3="${PKG_MAIN_ID_GOB3}-floppy" PKG_FLOPPY_PROVIDES_GOB3=" $PKG_MAIN_ID_GOB3" PKG_CDROM_ID_GOB3="${PKG_MAIN_ID_GOB3}-cdrom" PKG_CDROM_PROVIDES_GOB3=" $PKG_MAIN_ID_GOB3" PKG_CDROM_DEPENDENCIES_SIBLINGS_GOB3=' PKG_COMMON PKG_L10N_BASE' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Incude game data content_inclusion_icons 'PKG_COMMON' content_inclusion_default # Write launchers launchers_generation 'PKG_FLOPPY' ## Goblins 3 - Set game language based on the available localization. case "$(current_archive)" in ('ARCHIVE_BASE_GOB3_'*) game_exec_line() { cat <<- 'EOF' if [ -e "${PATH_GAME}/frgob3.itk" ]; then scummvm --language=fr --path="$PATH_GAME" "$@" "$SCUMMVM_ID" elif [ -e "${PATH_GAME}/usgob3.itk" ]; then scummvm --language=us --path="$PATH_GAME" "$@" "$SCUMMVM_ID" fi EOF } ;; esac launchers_generation 'PKG_CDROM' # Build packages packages_generation packages_list_floppy='PKG_FLOPPY PKG_COMMON' packages_list_cdrom='PKG_CDROM PKG_COMMON' case "$(current_archive)" in ('ARCHIVE_BASE_GOB3_'*) packages_list_cdrom="$packages_list_cdrom PKG_L10N" ;; esac case "${LANG%_*}" in ('fr') version_string='version %s :' version_floppy='disquette' version_cdrom='CD-ROM' ;; ('en'|*) version_string='%s version:' version_floppy='Floppy' version_cdrom='CD-ROM' ;; esac printf '\n' printf "$version_string" "$version_floppy" print_instructions $packages_list_floppy printf "$version_string" "$version_cdrom" print_instructions $packages_list_cdrom # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-grim-dawn-expansions.sh0000755000000000000000000001663114471751340016241 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Grim Dawn expansions: # - Ashes of Malmouth # - Forgotten Gods ### script_version=20240628.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='grim-dawn' GAME_NAME='Grim Dawn' EXPANSION_ID_ASHES='ashes-of-malmouth' EXPANSION_NAME_ASHES='Ashes of Malmouth' EXPANSION_ID_GODS='forgotten-gods' EXPANSION_NAME_GODS='Forgotten Gods' # Archives ## Ashes of Malmouth ARCHIVE_BASE_ASHES_6_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.1.1_(74365).exe' ARCHIVE_BASE_ASHES_6_MD5='01617f6a1fae6a2d8cd68061a4b7ed71' ARCHIVE_BASE_ASHES_6_TYPE='innosetup' ARCHIVE_BASE_ASHES_6_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.1.1_(74365)-1.bin' ARCHIVE_BASE_ASHES_6_PART1_MD5='d687516b6ab638161aa0f8bd47416b66' ARCHIVE_BASE_ASHES_6_SIZE='2508370' ARCHIVE_BASE_ASHES_6_VERSION='1.2.1.1-gog74365' ARCHIVE_BASE_ASHES_6_URL='https://www.gog.com/game/grim_dawn_ashes_of_malmouth' ARCHIVE_BASE_ASHES_5_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.5a_(71558).exe' ARCHIVE_BASE_ASHES_5_MD5='459923324f4f32779885fe03f192fe3a' ARCHIVE_BASE_ASHES_5_TYPE='innosetup' ARCHIVE_BASE_ASHES_5_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.5a_(71558)-1.bin' ARCHIVE_BASE_ASHES_5_PART1_MD5='11d3e5371bb3b9ecceb0a72b99671a24' ARCHIVE_BASE_ASHES_5_SIZE='2508049' ARCHIVE_BASE_ASHES_5_VERSION='1.2.0.5a-gog71558' ARCHIVE_BASE_ASHES_4_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.5_(71516).exe' ARCHIVE_BASE_ASHES_4_MD5='c692033a7f8a57cfc83fe0caecf763e9' ARCHIVE_BASE_ASHES_4_TYPE='innosetup' ARCHIVE_BASE_ASHES_4_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.5_(71516)-1.bin' ARCHIVE_BASE_ASHES_4_PART1_MD5='270e20c090ddf4a172b3e4c7a869222b' ARCHIVE_BASE_ASHES_4_SIZE='2508622' ARCHIVE_BASE_ASHES_4_VERSION='1.2.0.5-gog71516' ARCHIVE_BASE_ASHES_3_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.3_hotfix_3_(69499).exe' ARCHIVE_BASE_ASHES_3_MD5='921796d60998467c4c753d80f99a6584' ARCHIVE_BASE_ASHES_3_TYPE='innosetup' ARCHIVE_BASE_ASHES_3_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.3_hotfix_3_(69499)-1.bin' ARCHIVE_BASE_ASHES_3_PART1_MD5='618cfba9ba745a2d3fd6e5b9ae744cb2' ARCHIVE_BASE_ASHES_3_SIZE='2510332' ARCHIVE_BASE_ASHES_3_VERSION='1.2.0.3-gog69499' ARCHIVE_BASE_ASHES_2_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.2_hotfix_2_(69134).exe' ARCHIVE_BASE_ASHES_2_MD5='49194993f6649141ac9f118d61eb8f90' ARCHIVE_BASE_ASHES_2_TYPE='innosetup' ARCHIVE_BASE_ASHES_2_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.2_hotfix_2_(69134)-1.bin' ARCHIVE_BASE_ASHES_2_PART1_MD5='798f63fd270edfdac9938fd77d73752c' ARCHIVE_BASE_ASHES_2_SIZE='2509140' ARCHIVE_BASE_ASHES_2_VERSION='1.2.0.2-gog69134' ARCHIVE_BASE_ASHES_1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.1_hotfix_1_(69098).exe' ARCHIVE_BASE_ASHES_1_MD5='f8935c6d6ca9c354a9336d51efd823f9' ARCHIVE_BASE_ASHES_1_TYPE='innosetup' ARCHIVE_BASE_ASHES_1_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.1_hotfix_1_(69098)-1.bin' ARCHIVE_BASE_ASHES_1_PART1_MD5='c2e7bd56299023afa261d43fb89a43f7' ARCHIVE_BASE_ASHES_1_SIZE='2507692' ARCHIVE_BASE_ASHES_1_VERSION='1.2.0.1-gog69098' ARCHIVE_BASE_ASHES_0_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.1.9.8_(65199).exe' ARCHIVE_BASE_ASHES_0_MD5='0754f567005ecc7d758d905992e5d7f7' ARCHIVE_BASE_ASHES_0_TYPE='innosetup' ARCHIVE_BASE_ASHES_0_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.1.9.8_(65199)-1.bin' ARCHIVE_BASE_ASHES_0_PART1_MD5='49bc0c617d4ab9415298994ba4a085b8' ARCHIVE_BASE_ASHES_0_SIZE='2506744' ARCHIVE_BASE_ASHES_0_VERSION='1.1.9.8-gog65199' ## Forgotten Gods ARCHIVE_BASE_GODS_6_NAME='setup_grim_dawn_-_forgotten_gods_1.2.1.1_(74365).exe' ARCHIVE_BASE_GODS_6_MD5='45e52392fb4f503b2078ddf6af6a3411' ARCHIVE_BASE_GODS_6_TYPE='innosetup' ARCHIVE_BASE_GODS_6_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.1.1_(74365)-1.bin' ARCHIVE_BASE_GODS_6_PART1_MD5='195f5f735715d9ae59080774d0a98bd0' ARCHIVE_BASE_GODS_6_SIZE='3221131' ARCHIVE_BASE_GODS_6_VERSION='1.2.1.1-gog74365' ARCHIVE_BASE_GODS_6_URL='https://www.gog.com/game/grim_dawn_forgotten_gods' ARCHIVE_BASE_GODS_5_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.5a_(71558).exe' ARCHIVE_BASE_GODS_5_MD5='f4e80fca2102e244a47a218171c0f336' ARCHIVE_BASE_GODS_5_TYPE='innosetup' ARCHIVE_BASE_GODS_5_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.5a_(71558)-1.bin' ARCHIVE_BASE_GODS_5_PART1_MD5='3199f7442939194091a2d534553b8007' ARCHIVE_BASE_GODS_5_SIZE='3220483' ARCHIVE_BASE_GODS_5_VERSION='1.2.0.5a-gog71558' ARCHIVE_BASE_GODS_4_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.5_(71516).exe' ARCHIVE_BASE_GODS_4_MD5='cef5d93af87d3a4690bca2f78eb6e172' ARCHIVE_BASE_GODS_4_TYPE='innosetup' ARCHIVE_BASE_GODS_4_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.5_(71516)-1.bin' ARCHIVE_BASE_GODS_4_PART1_MD5='8079bd9c7dfbf5234355bd9ecb56d524' ARCHIVE_BASE_GODS_4_SIZE='3220210' ARCHIVE_BASE_GODS_4_VERSION='1.2.0.5-gog71516' ARCHIVE_BASE_GODS_3_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.3_hotfix_3_(69499).exe' ARCHIVE_BASE_GODS_3_MD5='75b0ed8db6996ae3b5fb4df2177b8507' ARCHIVE_BASE_GODS_3_TYPE='innosetup' ARCHIVE_BASE_GODS_3_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.3_hotfix_3_(69499)-1.bin' ARCHIVE_BASE_GODS_3_PART1_MD5='a0c5c5a18b150c8349d247c593fb71d5' ARCHIVE_BASE_GODS_3_SIZE='3220424' ARCHIVE_BASE_GODS_3_VERSION='1.2.0.3-gog69499' ARCHIVE_BASE_GODS_2_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.2_hotfix_2_(69134).exe' ARCHIVE_BASE_GODS_2_MD5='3506b7cfcbb6b475b8c182024932d332' ARCHIVE_BASE_GODS_2_TYPE='innosetup' ARCHIVE_BASE_GODS_2_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.2_hotfix_2_(69134)-1.bin' ARCHIVE_BASE_GODS_2_PART1_MD5='40b9f598aa048680c9f7dc4651b99d71' ARCHIVE_BASE_GODS_2_SIZE='3220892' ARCHIVE_BASE_GODS_2_VERSION='1.2.0.2-gog691341' ARCHIVE_BASE_GODS_1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.1_hotfix_1_(69098).exe' ARCHIVE_BASE_GODS_1_MD5='f0809d0007e3e3634b24dcdbf2bf25fd' ARCHIVE_BASE_GODS_1_TYPE='innosetup' ARCHIVE_BASE_GODS_1_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.1_hotfix_1_(69098)-1.bin' ARCHIVE_BASE_GODS_1_PART1_MD5='82c069ab14fcec774fb075706fa3cce1' ARCHIVE_BASE_GODS_1_SIZE='3218872' ARCHIVE_BASE_GODS_1_VERSION='1.2.0.1-gog69098' ARCHIVE_BASE_GODS_0_NAME='setup_grim_dawn_-_forgotten_gods_1.1.9.8_(65199).exe' ARCHIVE_BASE_GODS_0_MD5='6615eb32a355092c4d0173457f701e31' ARCHIVE_BASE_GODS_0_TYPE='innosetup' ARCHIVE_BASE_GODS_0_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.1.9.8_(65199)-1.bin' ARCHIVE_BASE_GODS_0_PART1_MD5='55ac480dee30aa6cfa6a8b466f521406' ARCHIVE_BASE_GODS_0_SIZE='3220672' ARCHIVE_BASE_GODS_0_VERSION='1.1.9.8-gog65199' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' gdx? survivalmode?' PKG_MAIN_DEPS="$GAME_ID" PKG_MAIN_DEPS_GODS="${PKG_MAIN_DEPS:-} ${GAME_ID}-${EXPANSION_ID_ASHES}" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-grim-dawn.sh0000755000000000000000000001050314471751340014044 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Grim Dawn ### script_version=20240628.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='grim-dawn' GAME_NAME='Grim Dawn' ARCHIVE_BASE_6_NAME='setup_grim_dawn_1.2.1.1_(64bit)_(74365).exe' ARCHIVE_BASE_6_MD5='419c765ff7d14cc19142774ae44c3eb9' ARCHIVE_BASE_6_TYPE='innosetup' ARCHIVE_BASE_6_PART1_NAME='setup_grim_dawn_1.2.1.1_(64bit)_(74365)-1.bin' ARCHIVE_BASE_6_PART1_MD5='e3f6f66a0aa88c6f7a47e9c6a07c208b' ARCHIVE_BASE_6_SIZE='4787490' ARCHIVE_BASE_6_VERSION='1.2.1.1-gog74365' ARCHIVE_BASE_6_URL='https://www.gog.com/game/grim_dawn' ARCHIVE_BASE_5_NAME='setup_grim_dawn_1.2.0.5a_(64bit)_(71558).exe' ARCHIVE_BASE_5_MD5='f232c25a9c69a5776dd4ce65b40df6df' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_PART1_NAME='setup_grim_dawn_1.2.0.5a_(64bit)_(71558)-1.bin' ARCHIVE_BASE_5_PART1_MD5='c78a59aa61b124030e6d96cabaaabd2d' ARCHIVE_BASE_5_SIZE='4768460' ARCHIVE_BASE_5_VERSION='1.2.0.5a-gog71558' ARCHIVE_BASE_4_NAME='setup_grim_dawn_1.2.0.5_(64bit)_(71516).exe' ARCHIVE_BASE_4_MD5='0ec082fed3fa62b70979fcf9fd5ed919' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_PART1_NAME='setup_grim_dawn_1.2.0.5_(64bit)_(71516)-1.bin' ARCHIVE_BASE_4_PART1_MD5='8f7dd61efc9962fddd88dc19da4a8efe' ARCHIVE_BASE_4_SIZE='4767825' ARCHIVE_BASE_4_VERSION='1.2.0.5-gog71516' ARCHIVE_BASE_3_NAME='setup_grim_dawn_1.2.0.3_hotfix_3_(64bit)_(69499).exe' ARCHIVE_BASE_3_MD5='d407d7f0c13b2e9a09c9d507a6dd9406' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_PART1_NAME='setup_grim_dawn_1.2.0.3_hotfix_3_(64bit)_(69499)-1.bin' ARCHIVE_BASE_3_PART1_MD5='cb0b21ec562a0023650928cabd3f2aac' ARCHIVE_BASE_3_SIZE='4716376' ARCHIVE_BASE_3_VERSION='1.2.0.3-gog69499' ARCHIVE_BASE_2_NAME='setup_grim_dawn_1.2.0.2_hotfix_2_(64bit)_(69134).exe' ARCHIVE_BASE_2_MD5='a86614183a27085a644642e73c89dc31' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_grim_dawn_1.2.0.2_hotfix_2_(64bit)_(69134)-1.bin' ARCHIVE_BASE_2_PART1_MD5='d4088f8591111a2aa1c5af081179ec38' ARCHIVE_BASE_2_SIZE='4414600' ARCHIVE_BASE_2_VERSION='1.2.0.2-gog69134' ARCHIVE_BASE_1_NAME='setup_grim_dawn_1.2.0.1_hotfix_1_(64bit)_(69098).exe' ARCHIVE_BASE_1_MD5='0b4edacfee791cc6d83af7a2c36cb11c' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_grim_dawn_1.2.0.1_hotfix_1_(64bit)_(69098)-1.bin' ARCHIVE_BASE_1_PART1_MD5='9450bc1b82d609709356e7b3bb76570f' ARCHIVE_BASE_1_SIZE='4411128' ARCHIVE_BASE_1_VERSION='1.2.0.1-gog69098' ARCHIVE_BASE_0_NAME='setup_grim_dawn_1.1.9.8_(64bit)_(65199).exe' ARCHIVE_BASE_0_MD5='c0fb173132b21833052d1496f6ab832e' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_grim_dawn_1.1.9.8_(64bit)_(65199)-1.bin' ARCHIVE_BASE_0_PART1_MD5='d97de2b8cd7ae7aa723e720ec2fa21f5' ARCHIVE_BASE_0_SIZE='4332472' ARCHIVE_BASE_0_VERSION='1.1.9.8-gog65199' CONTENT_PATH_DEFAULT='.' ## TODO: Set an explicit list of .dll and .exe files. CONTENT_GAME_BIN_FILES=' x64 *.dll *.dlo *.exe' CONTENT_GAME_DATA_FILES=' database resources video *.zip minimap.atn' CONTENT_DOC_DATA_FILES=' grim dawn modding guide.pdf' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Grim Dawn' APP_MAIN_EXE='x64/grim dawn.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Delete unwanted files. rm --recursive \ '__redist' \ 'app' \ 'commonappdata' \ 'tmp' ) # 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-heroes-of-might-and-magic-4.sh0000755000000000000000000001331514471751340017137 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Heroes of Might and Magic 4 ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='heroes-of-might-and-magic-4' GAME_NAME='Heroes of Might and Magic Ⅳ' ARCHIVE_BASE_EN_3_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_win11_(58571).exe' ARCHIVE_BASE_EN_3_MD5='4f342558b1f93f4057666bc510127a3b' ARCHIVE_BASE_EN_3_TYPE='innosetup' ARCHIVE_BASE_EN_3_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_win11_(58571)-1.bin' ARCHIVE_BASE_EN_3_PART1_MD5='c82afd73219eb772ce21f5ab43ef34ce' ARCHIVE_BASE_EN_3_SIZE='1200000' ARCHIVE_BASE_EN_3_VERSION='3.0-gog58571' ARCHIVE_BASE_EN_3_URL='https://www.gog.com/game/heroes_of_might_and_magic_4_complete' ARCHIVE_BASE_FR_3_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_win11_(french)_(58571).exe' ARCHIVE_BASE_FR_3_MD5='27d3987a5001beff61176d39199b9284' ARCHIVE_BASE_FR_3_TYPE='innosetup' ARCHIVE_BASE_FR_3_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_win11_(french)_(58571)-1.bin' ARCHIVE_BASE_FR_3_PART1_MD5='588b0ecacc6b91df76042af7a7667d24' ARCHIVE_BASE_FR_3_SIZE='1200000' ARCHIVE_BASE_FR_3_VERSION='3.0-gog58571' ARCHIVE_BASE_FR_3_URL='https://www.gog.com/game/heroes_of_might_and_magic_4_complete' ARCHIVE_BASE_EN_2_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(25023).exe' ARCHIVE_BASE_EN_2_MD5='2694dfef6827142866fb778588966d8e' ARCHIVE_BASE_EN_2_TYPE='innosetup' ARCHIVE_BASE_EN_2_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(25023)-1.bin' ARCHIVE_BASE_EN_2_PART1_MD5='54bfa42a4e23236729f8b0724216ee83' ARCHIVE_BASE_EN_2_SIZE='1100000' ARCHIVE_BASE_EN_2_VERSION='3.0-gog25023' ARCHIVE_BASE_FR_2_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(french)_(25023).exe' ARCHIVE_BASE_FR_2_MD5='4a90a92d637bc7d1af5354565ae5cd70' ARCHIVE_BASE_FR_2_TYPE='innosetup' ARCHIVE_BASE_FR_2_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(french)_(25023)-1.bin' ARCHIVE_BASE_FR_2_PART1_MD5='46d1239b8491d3adec647a7526f763b2' ARCHIVE_BASE_FR_2_SIZE='1100000' ARCHIVE_BASE_FR_2_VERSION='3.0-gog25023' ARCHIVE_BASE_EN_1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(22812).exe' ARCHIVE_BASE_EN_1_MD5='d5e0a55e2bba4f0ac643ec1fb2ba17cc' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(22812)-1.bin' ARCHIVE_BASE_EN_1_PART1_MD5='3457ead5c208a3d40498d6e1f08bf588' ARCHIVE_BASE_EN_1_SIZE='1100000' ARCHIVE_BASE_EN_1_VERSION='3.0-gog22812' ARCHIVE_BASE_FR_1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(french)_(22812).exe' ARCHIVE_BASE_FR_1_MD5='e15ec7a308ea442bfeeb3410314b39d7' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(french)_(22812)-1.bin' ARCHIVE_BASE_FR_1_PART1_MD5='7abff7182f6bed3199d2b71cdd60d926' ARCHIVE_BASE_FR_1_SIZE='1100000' ARCHIVE_BASE_FR_1_VERSION='3.0-gog22812' ARCHIVE_BASE_EN_0_NAME='setup_homm4_complete_2.0.0.12.exe' ARCHIVE_BASE_EN_0_MD5='74de66eb408bb2916dd0227781ba96dc' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='1100000' ARCHIVE_BASE_EN_0_VERSION='3.0-gog2.0.0.12' ARCHIVE_BASE_FR_0_NAME='setup_homm4_complete_french_2.1.0.14.exe' ARCHIVE_BASE_FR_0_MD5='2af96eb28226e563bbbcd62771f3a319' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_SIZE='1100000' ARCHIVE_BASE_FR_0_VERSION='3.0-gog2.1.0.14' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_EN_0='app' CONTENT_PATH_DEFAULT_FR_0='app' CONTENT_GAME_BIN_FILES=' mp3dec.asi binkw32.dll mss32.dll data/binkw32.dll data/mss32.dll campaign_editor.exe dxcfg.exe heroes4.exe' CONTENT_GAME_DATA_FILES=' data maps' CONTENT_DOC_DATA_FILES=' campaign_editor_help.chm h4gsmanual.pdf h4manual.pdf h4qref.pdf h4towntrees.pdf h4wwmanual.pdf multiplayer.txt readme.txt' USER_PERSISTENT_DIRECTORIES=' games' USER_PERSISTENT_FILES=' data/high_scores.dat' WINE_VIRTUAL_DESKTOP='1280x1024' APP_MAIN_EXE='heroes4.exe' APP_MAIN_ICON='heroes4.exe' APP_EDITOR_ID="${GAME_ID}-campaign-editor" APP_EDITOR_EXE='campaign_editor.exe' APP_EDITOR_ICON='campaign_editor.exe' APP_EDITOR_NAME="$GAME_NAME - campaign editor" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_BASE_ID="$GAME_ID" PKG_BIN_ID_EN="${PKG_BIN_BASE_ID}-en" PKG_BIN_ID_FR="${PKG_BIN_BASE_ID}-fr" PKG_BIN_PROVIDES=" $PKG_BIN_BASE_ID" PKG_BIN_DESCRIPTION_EN='English version' PKG_BIN_DESCRIPTION_FR='French version' ## A dependency on the language-specific variant of the data package is set, ## not on the common name provided by both variants of this package. PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_BASE_ID="${GAME_ID}-data" PKG_DATA_ID_EN="${PKG_DATA_BASE_ID}-en" PKG_DATA_ID_FR="${PKG_DATA_BASE_ID}-fr" PKG_DATA_PROVIDES=" $PKG_DATA_BASE_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 . "$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-heroes-of-might-and-magic-5.sh0000755000000000000000000001736514471751340017151 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Heroes of Might and Magic 5: # - Heroes of Might and Magic 5 (base game) + Hammer of Fate # - Tribes of the East stand-alone expansion ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='heroes-of-might-and-magic-5' GAME_NAME='Heroes of Might and Magic Ⅴ' GAME_ID_TOTE="${GAME_ID}-tribes-of-the-east" GAME_NAME_TOTE="${GAME_NAME} - Tribes of the East" # Archives ## Heroes of Might and Magic 5 (base game) + Hammer of Fate ARCHIVE_BASE_EN_1_NAME='setup_heroes_of_might_and_magic_v_2.1_v2_(28567).exe' ARCHIVE_BASE_EN_1_MD5='657775b4eb545150f5895e61e67eda73' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_PART1_NAME='setup_heroes_of_might_and_magic_v_2.1_v2_(28567)-1.bin' ARCHIVE_BASE_EN_1_PART1_MD5='bb4dd38f472fd94f82aa22cb256f4b9c' ARCHIVE_BASE_EN_1_SIZE='2600000' ARCHIVE_BASE_EN_1_VERSION='2.1-gog28567' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/heroes_of_might_and_magic_5_bundle' ARCHIVE_BASE_FR_1_NAME='setup_heroes_of_might_and_magic_v_2.1_v2_(french)_(28567).exe' ARCHIVE_BASE_FR_1_MD5='78e860af17d9ce220d8c60c1e594cf40' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_PART1_NAME='setup_heroes_of_might_and_magic_v_2.1_v2_(french)_(28567)-1.bin' ARCHIVE_BASE_FR_1_PART1_MD5='9e8017cc5d84231bf8eb9c8c757631f8' ARCHIVE_BASE_FR_1_SIZE='2600000' ARCHIVE_BASE_FR_1_VERSION='2.1-gog28567' ARCHIVE_BASE_FR_1_URL='https://www.gog.com/game/heroes_of_might_and_magic_5_bundle' ARCHIVE_BASE_EN_0_NAME='setup_heroes_of_might_and_magic_v_2.1_(25025).exe' ARCHIVE_BASE_EN_0_MD5='6e36b7fb9f1e8362326688d383e4bdb9' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_heroes_of_might_and_magic_v_2.1_(25025)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='3e38f48f450f58833728cd73e9266d2d' ARCHIVE_BASE_EN_0_SIZE='2600000' ARCHIVE_BASE_EN_0_VERSION='2.1-gog25025' ARCHIVE_BASE_FR_0_NAME='setup_heroes_of_might_and_magic_v_2.1_(french)_(25025).exe' ARCHIVE_BASE_FR_0_MD5='b9e278ee60d574b89068479a4e6c84c1' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_PART1_NAME='setup_heroes_of_might_and_magic_v_2.1_(french)_(25025)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='57ca61178fca9ed2e50a5dc667f6d565' ARCHIVE_BASE_FR_0_SIZE='2600000' ARCHIVE_BASE_FR_0_VERSION='2.1-gog25025' ## Tribes of the East stand-alone expansion ARCHIVE_BASE_TOTE_EN_1_NAME='setup_heroes_of_might_and_magic_v_-_tribes_of_the_east_3.1_v2_(28569).exe' ARCHIVE_BASE_TOTE_EN_1_MD5='9593ad538a39638bacb4d7ef45368ce2' ARCHIVE_BASE_TOTE_EN_1_TYPE='innosetup' ARCHIVE_BASE_TOTE_EN_1_PART1_NAME='setup_heroes_of_might_and_magic_v_-_tribes_of_the_east_3.1_v2_(28569)-1.bin' ARCHIVE_BASE_TOTE_EN_1_PART1_MD5='8e03271dc4aff5834110664b5d6eefde' ARCHIVE_BASE_TOTE_EN_1_SIZE='2300000' ARCHIVE_BASE_TOTE_EN_1_VERSION='3.1-gog28569' ARCHIVE_BASE_TOTE_EN_1_URL='https://www.gog.com/game/heroes_of_might_and_magic_5_bundle' ARCHIVE_BASE_TOTE_FR_1_NAME='setup_heroes_of_might_and_magic_v_-_tribes_of_the_east_3.1_v2_(french)_(28569).exe' ARCHIVE_BASE_TOTE_FR_1_MD5='6a1a915180d1cee32e78419f6917be87' ARCHIVE_BASE_TOTE_FR_1_TYPE='innosetup' ARCHIVE_BASE_TOTE_FR_1_PART1_NAME='setup_heroes_of_might_and_magic_v_-_tribes_of_the_east_3.1_v2_(french)_(28569)-1.bin' ARCHIVE_BASE_TOTE_FR_1_PART1_MD5='f48ed6725126696bf3e67ce327db6263' ARCHIVE_BASE_TOTE_FR_1_SIZE='2300000' ARCHIVE_BASE_TOTE_FR_1_VERSION='3.1-gog28569' ARCHIVE_BASE_TOTE_FR_1_URL='https://www.gog.com/game/heroes_of_might_and_magic_5_bundle' ARCHIVE_BASE_TOTE_EN_0_NAME='setup_heroes_of_might_and_magic_v_-_tribes_of_the_east_3.1_(25025).exe' ARCHIVE_BASE_TOTE_EN_0_MD5='3096f296d5d8b6cb0b4ab479fc06474b' ARCHIVE_BASE_TOTE_EN_0_TYPE='innosetup' ARCHIVE_BASE_TOTE_EN_0_PART1_NAME='setup_heroes_of_might_and_magic_v_-_tribes_of_the_east_3.1_(25025)-1.bin' ARCHIVE_BASE_TOTE_EN_0_PART1_MD5='5f4840b0105bd6b4228ff9b707bc0434' ARCHIVE_BASE_TOTE_EN_0_SIZE='2300000' ARCHIVE_BASE_TOTE_EN_0_VERSION='3.1-gog25025' ARCHIVE_BASE_TOTE_FR_0_NAME='setup_heroes_of_might_and_magic_v_-_tribes_of_the_east_3.1_(french)_(25025).exe' ARCHIVE_BASE_TOTE_FR_0_MD5='a2b5d18f34d3fa1a760de4fa63aa3819' ARCHIVE_BASE_TOTE_FR_0_TYPE='innosetup' ARCHIVE_BASE_TOTE_FR_0_PART1_NAME='setup_heroes_of_might_and_magic_v_-_tribes_of_the_east_3.1_(french)_(25025)-1.bin' ARCHIVE_BASE_TOTE_FR_0_PART1_MD5='08a5ec9aaf674235db4d96072bf373fc' ARCHIVE_BASE_TOTE_FR_0_SIZE='2300000' ARCHIVE_BASE_TOTE_FR_0_VERSION='3.1-gog25025' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bin bina1 bindm fandocuments/*.exe' CONTENT_GAME_L10N_FILES=' data*/*sound.pak data*/*texts.pak music/cs/death-berein.ogg music/cs/death-nico.ogg music/cs/heart-griffin.ogg music/cs/isabel-trap.ogg music/cs/nico-vampire.ogg music/cs/ritual-isabel.ogg video/intro.ogg video/outro.ogg' CONTENT_GAME_DATA_FILES=' customcontentdm data* duelpresets editor hwcursors music profiles video *.bmp' CONTENT_DOC_L10N_FILES=' editor documentation *.pdf *.txt' # Applications APPLICATIONS_LIST='APP_MAIN APP_HOF' APPLICATIONS_LIST_TOTE='APP_MAIN APP_DM APP_SKILLS' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Heroes of Might and Magic V' WINE_PERSISTENT_DIRECTORIES_TOTE=' users/${USER}/Documents/My Games/Heroes of Might and Magic V - Tribes of the East' APP_MAIN_EXE='bin/h5_game.exe' ## Run the game binary from its parent directory APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # Run the game binary from its parent directory cd "$(dirname "$APP_EXE")" APP_EXE=$(basename "$APP_EXE") ' ## Hammer of Fate APP_HOF_ID="${GAME_ID}-hammers-of-fate" APP_HOF_NAME="$GAME_NAME - Hammers of Fate" APP_HOF_EXE='bina1/h5_game.exe' ## Run the game binary from its parent directory APP_HOF_PRERUN="$APP_MAIN_PRERUN" ## Tribes of the East APP_DM_ID="${GAME_ID_TOTE}-dark-messiah" APP_DM_NAME="$GAME_NAME_TOTE - Dark Messiah" APP_DM_EXE='bindm/h5_game.exe' APP_DM_ICON_WRESTOOL_OPTIONS='--type=14 --name=101' ## Run the game binary from its parent directory APP_DM_PRERUN="$APP_MAIN_PRERUN" APP_SKILLS_ID="${GAME_ID_TOTE}-skill-wheel" APP_SKILLS_NAME="$GAME_NAME_TOTE - SkillWheel" APP_SKILLS_EXE='fandocuments/skillwheel.exe' APP_SKILLS_ICON_WRESTOOL_OPTIONS='--type=14 --name=200' ## Run the game binary from its parent directory APP_SKILLS_PRERUN="$APP_MAIN_PRERUN" PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_BASE_ID_TOTE="${GAME_ID_TOTE}-l10n" PKG_L10N_ID_TOTE_EN="${PKG_L10N_BASE_ID_TOTE}-en" PKG_L10N_ID_TOTE_FR="${PKG_L10N_BASE_ID_TOTE}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_PROVIDES_TOTE=" $PKG_L10N_BASE_ID_TOTE" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_L10N_DESCRIPTION_TOTE_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_TOTE_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_TOTE="${GAME_ID_TOTE}-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 . "$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-homeseek.sh0000755000000000000000000000377014471751340013767 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Homeseek ### script_version=20240531.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='homeseek' GAME_NAME='Homeseek' ARCHIVE_BASE_0_NAME='setup_homeseek_1.0.9_(71375).exe' ARCHIVE_BASE_0_MD5='253a29f9d133ce2980797c3b4ec5af65' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_homeseek_1.0.9_(71375)-1.bin' ARCHIVE_BASE_0_PART1_MD5='d9fd40bcd7623d8ae512ed898bd190ab' ARCHIVE_BASE_0_PART2_NAME='setup_homeseek_1.0.9_(71375)-2.bin' ARCHIVE_BASE_0_PART2_MD5='b8bc0abf22d569a5262b7d45e9645f47' ARCHIVE_BASE_0_SIZE='8641921' ARCHIVE_BASE_0_VERSION='1.0.9-gog71375' ARCHIVE_BASE_0_URL='https://www.gog.com/game/homeseek' UNITY3D_NAME='homeseek' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Traptics/Homeseek' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Traptics\Homeseek' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-human-resource-machine.sh0000755000000000000000000000633114471751340016522 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 BetaRays set -o errexit ### # Human Resource Machine ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='human-resource-machine' GAME_NAME='Human Resource Machine' ARCHIVE_BASE_HUMBLE_0_NAME='HumanResourceMachine-Linux-2016-03-23.sh' ARCHIVE_BASE_HUMBLE_0_MD5='ac6013284194203c4732e713dcc0f543' ARCHIVE_BASE_HUMBLE_0_SIZE='73000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0.8262-humble.2016.03.23' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/human-resource-machine' ARCHIVE_BASE_GOG_1_NAME='gog_human_resource_machine_2.0.0.3.sh' ARCHIVE_BASE_GOG_1_MD5='4670105392afc503b880c78d56a2f1ad' ARCHIVE_BASE_GOG_1_SIZE='74000' ARCHIVE_BASE_GOG_1_VERSION='1.0.8262-gog2.0.0.3' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/human_resource_machine' ARCHIVE_BASE_GOG_0_NAME='gog_human_resource_machine_2.0.0.2.sh' ARCHIVE_BASE_GOG_0_MD5='35bc19839c73ddf4b503c58a0a887f98' ARCHIVE_BASE_GOG_0_SIZE='74000' ARCHIVE_BASE_GOG_0_VERSION='1.0.8262-gog2.0.0.2' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_GAME_BIN64_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86_64" CONTENT_GAME_BIN64_FILES=' HumanResourceMachine.bin.x86_64' CONTENT_GAME_BIN32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86" CONTENT_GAME_BIN32_FILES=' HumanResourceMachine.bin.x86' CONTENT_GAME_DATA_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/noarch" CONTENT_GAME_DATA_FILES=' shaders resource.pak icon.png' CONTENT_DOC_DATA_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/noarch" CONTENT_DOC_DATA_FILES=' LICENSE.txt README.linux' APP_MAIN_EXE_BIN64='HumanResourceMachine.bin.x86_64' APP_MAIN_EXE_BIN32='HumanResourceMachine.bin.x86' APP_MAIN_ICON_HUMBLE='noarch/icon.png' APP_MAIN_ICON_GOG='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 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-impression-games-city-builders.sh0000755000000000000000000000646614471751340020233 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Impression Games city builders: # - Zeus: Master of Olympus # - Emperor: Rise of the Middle Kingdom ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID_ZEUS='zeus-master-of-olympus' GAME_NAME_ZEUS='Zeus: Master of Olympus' GAME_ID_EMPEROR='emperor-rise-of-the-middle-kingdom' GAME_NAME_EMPEROR='Emperor: Rise of the Middle Kingdom' # Game archives ## Zeus ARCHIVE_BASE_ZEUS_0_NAME='setup_zeus_and_poseidon_2.1.0.10.exe' ARCHIVE_BASE_ZEUS_0_MD5='f26f9ed5ecaa4e58fca64acb88255107' ARCHIVE_BASE_ZEUS_0_TYPE='innosetup' ARCHIVE_BASE_ZEUS_0_SIZE='800000' ARCHIVE_BASE_ZEUS_0_VERSION='2.1-gog2.1.0.10' ARCHIVE_BASE_ZEUS_0_URL='https://www.gog.com/game/zeus_poseidon' ## Emperor ARCHIVE_BASE_EMPEROR_0_NAME='setup_emperor_rise_of_the_middle_kingdom_2.0.0.2.exe' ARCHIVE_BASE_EMPEROR_0_MD5='5e50e84c028a85eafe5dd5f2aa277fea' ARCHIVE_BASE_EMPEROR_0_TYPE='innosetup' ARCHIVE_BASE_EMPEROR_0_SIZE='820000' ARCHIVE_BASE_EMPEROR_0_VERSION='1.0.1.0-gog2.0.0.2' ARCHIVE_BASE_EMPEROR_0_URL='https://www.gog.com/game/emperor_rise_of_the_middle_kingdom' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' *.asi *.dll *.exe *.ini *.m3d' CONTENT_GAME_DATA_FILES=' adventures audio binks campaigns cities data model res dragon.ico poseidon.ico zeus.ico *.eng *.inf' CONTENT_DOC_DATA_FILES=' *.pdf *.txt' CONTENT_DOC_DATA_FILES=' *readme.txt *editor*.txt *.pdf' # Applications USER_PERSISTENT_DIRECTORIES=' save' USER_PERSISTENT_FILES=' *.ini' ## With the default OpenGL renderer, text boxes are not displayed (WINE 9.0). WINE_DIRECT3D_RENDERER='wined3d/gdi' ## The game window fails to render anything unless the game runs in a WINE virtual desktop (WINE 9.0). WINE_VIRTUAL_DESKTOP='auto' ## Disable CSMT to avoid degraded performances WINE_WINETRICKS_VERBS='csmt=off' APPLICATIONS_LIST='APP_MAIN' ## Zeus APP_MAIN_EXE_ZEUS='zeus.exe' APP_MAIN_ICON_ZEUS='poseidon.ico' ## Emperor APPLICATIONS_LIST_EMPEROR="$APPLICATIONS_LIST APP_EDIT" APP_MAIN_EXE_EMPEROR='emperor.exe' APP_MAIN_ICON_EMPEROR='dragon.ico' APP_EDIT_ID="${GAME_ID_EMPEROR}-editor" APP_EDIT_NAME="$GAME_NAME_EMPEROR - Editor" APP_EDIT_EXE='emperoredit.exe' APP_EDIT_ICON_EMPEROR="$APP_MAIN_ICON_EMPEROR" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID_ZEUS="${GAME_ID_ZEUS}-data" PKG_DATA_ID_EMPEROR="${GAME_ID_EMPEROR}-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 . "$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-infinity-engine-enhanced-edition-expansions.sh0000755000000000000000000000553614471751340022646 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Dawnmist # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Infinity Engine Enhanced Edition expansions: # - Baldur's Gate 1 Enhanced Edition - Siege of Dragonspear # - Baldur's Gate 1 Enhanced Edition - Faces of Good and Evil ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID_DRAGONSPEAR='baldurs-gate-1-enhanced-edition' GAME_NAME_DRAGONSPEAR='Baldurʼs Gate Enhanced Edition' GAME_ID_FACES='baldurs-gate-1-enhanced-edition' GAME_NAME_FACES='Baldurʼs Gate Enhanced Edition' EXPANSION_ID_DRAGONSPEAR='siege-of-dragonspear' EXPANSION_NAME_DRAGONSPEAR='Siege of Dragonspear' EXPANSION_ID_FACES='faces-of-good-and-evil' EXPANSION_NAME_FACES='Faces of Good and Evil' # Archives ## Baldur's Gate 1 Enhanced Edition - Siege of Dragonspear ARCHIVE_BASE_DRAGONSPEAR_1_NAME='baldur_s_gate_siege_of_dragonspear_2_6_6_0_47291.sh' ARCHIVE_BASE_DRAGONSPEAR_1_MD5='36d275f6822b3cd2946ca606c0ebdb67' ARCHIVE_BASE_DRAGONSPEAR_1_SIZE='1900000' ARCHIVE_BASE_DRAGONSPEAR_1_VERSION='2.6.6.0-gog47291' ARCHIVE_BASE_DRAGONSPEAR_1_URL='https://www.gog.com/game/baldurs_gate_siege_of_dragonspear' ARCHIVE_BASE_DRAGONSPEAR_0_NAME='baldur_s_gate_siege_of_dragonspear_2_6_5_0_46477.sh' ARCHIVE_BASE_DRAGONSPEAR_0_MD5='27970876d9252fcb3174df8201db3ca3' ARCHIVE_BASE_DRAGONSPEAR_0_SIZE='1900000' ARCHIVE_BASE_DRAGONSPEAR_0_VERSION='2.6.5.0-gog46477' ## Baldur's Gate 1 Enhanced Edition - Faces of Good and Evil ARCHIVE_BASE_FACES_1_NAME='baldur_s_gate_faces_of_good_and_evil_2_6_6_0_47291.sh' ARCHIVE_BASE_FACES_1_MD5='5bcc622e44bdf9b03af64f5fe0a83d38' ARCHIVE_BASE_FACES_1_SIZE='2500' ARCHIVE_BASE_FACES_1_VERSION='2.6.6.0-gog47291' ARCHIVE_BASE_FACES_1_URL='https://www.gog.com/game/baldurs_gate_faces_of_good_and_evil' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES_DRAGONSPEAR=' sod-dlc.zip' CONTENT_GAME_MAIN_FILES_FACES=' override/yanner2?.bmp override/M_YANN2.lua' PKG_PARENT_ID_DRAGONSPEAR="$GAME_ID_DRAGONSPEAR" PKG_PARENT_ID_FACES="$GAME_ID_FACES" 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 . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-infinity-engine-enhanced-edition-games.sh0000755000000000000000000002063414471751340021547 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Infinity Engine games (Enhanced Edition): # - Baldur's Gate 1 Enhanced Edition # - Baldur's Gate 2 Enhanced Edition # - Icewind Dale 1 Enhanced Edition # - Planescape: Torment Enhanced Edition ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID_BG1='baldurs-gate-1-enhanced-edition' GAME_NAME_BG1='Baldurʼs Gate Enhanced Edition' GAME_ID_BG2='baldurs-gate-2-enhanced-edition' GAME_NAME_BG2='Baldurʼs Gate Ⅱ Enhanced Edition' GAME_ID_IWD1='icewind-dale-1-enhanced-edition' GAME_NAME_IWD1='Icewind Dale Enhanced Edition' GAME_ID_PST='planescape-torment-enhanced-edition' GAME_NAME_PST='Planescape: Torment Enhanced Edition' # Game archives ## Baldur's Gate 1 Enhanced Edition ARCHIVE_BASE_BG1_1_NAME='baldur_s_gate_enhanced_edition_2_6_6_0_47291.sh' ARCHIVE_BASE_BG1_1_MD5='6f7be163ebb80a0fbc9d6331f9c6f09c' ARCHIVE_BASE_BG1_1_SIZE='3300000' ARCHIVE_BASE_BG1_1_VERSION='2.6.6.0-gog47291' ARCHIVE_BASE_BG1_1_URL='https://www.gog.com/game/baldurs_gate_enhanced_edition' ARCHIVE_BASE_BG1_0_NAME='baldur_s_gate_enhanced_edition_2_6_5_0_46477.sh' ARCHIVE_BASE_BG1_0_MD5='a87444f36602b5059e3c885ec2ff50e1' ARCHIVE_BASE_BG1_0_SIZE='3300000' ARCHIVE_BASE_BG1_0_VERSION='2.6.5.0-gog46477' ### Option icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BG1='baldurs-gate-1-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_BG1='58401cf80bc9f1a9e9a0896f5d74b02a' ARCHIVE_OPTIONAL_ICONS_URL_BG1='https://downloads.dotslashplay.it/resources/baldurs-gate-1-enhanced-edition/' CONTENT_ICONS_PATH_BG1='.' CONTENT_ICONS_FILES_BG1=' 16x16 24x42 32x32 48x48 64x64 256x256' ## Baldur's Gate 2 Enhanced Edition ARCHIVE_BASE_BG2_1_NAME='baldur_s_gate_ii_enhanced_edition_2_6_6_0_47292.sh' ARCHIVE_BASE_BG2_1_MD5='43b37a554ffb712176ea8709fc98ed84' ARCHIVE_BASE_BG2_1_SIZE='380000' ARCHIVE_BASE_BG2_1_VERSION='2.6.6.0-gog47292' ARCHIVE_BASE_BG2_1_URL='https://www.gog.com/game/baldurs_gate_2_enhanced_edition' ARCHIVE_BASE_BG2_0_NAME='baldur_s_gate_ii_enhanced_edition_2_6_5_0_46477.sh' ARCHIVE_BASE_BG2_0_MD5='aa62efd4b1c69f074a784e637234e7c4' ARCHIVE_BASE_BG2_0_SIZE='3800000' ARCHIVE_BASE_BG2_0_VERSION='2.6.5.0-gog46477' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BG2='baldurs-gate-2-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_BG2='36055600f9461793995a318e74b133e8' ARCHIVE_OPTIONAL_ICONS_URL_BG2='https://downloads.dotslashplay.it/games/baldurs-gate-2-enhanced-edition/' CONTENT_ICONS_PATH_BG2='.' CONTENT_ICONS_FILES_BG2=' 16x16 32x32 48x48 64x64 128x128 256x256' ## Icewind Dale 1 Enhanced Edition ARCHIVE_BASE_IWD1_1_NAME='icewind_dale_enhanced_edition_2_6_6_0_47290.sh' ARCHIVE_BASE_IWD1_1_MD5='fd7721f10a6d39c545ef46c58d80e2cc' ARCHIVE_BASE_IWD1_1_SIZE='3000000' ARCHIVE_BASE_IWD1_1_VERSION='2.6.6.0-gog47290' ARCHIVE_BASE_IWD1_1_URL='https://www.gog.com/game/icewind_dale_enhanced_edition' ARCHIVE_BASE_IWD1_0_NAME='icewind_dale_enhanced_edition_2_6_5_0_46474.sh' ARCHIVE_BASE_IWD1_0_MD5='7fa481705b5d5b7f5d714a6a19c856e0' ARCHIVE_BASE_IWD1_0_SIZE='3000000' ARCHIVE_BASE_IWD1_0_VERSION='2.6.5.0-gog46474' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_IWD1='icewind-dale-1-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_IWD1='2e7db406aca79f9182c4efa93df80bf4' ARCHIVE_OPTIONAL_ICONS_URL_IWD1='https://downloads.dotslashplay.it/resources/icewind-dale-1-enhanced-edition/' CONTENT_ICONS_PATH_IWD1='.' CONTENT_ICONS_FILES_IWD1=' 16x16 32x32 48x48 64x64 128x128 256x256' ## Planescape: Torment ARCHIVE_BASE_PST_1_NAME='planescape_torment_enhanced_edition_3_1_4_26532.sh' ARCHIVE_BASE_PST_1_MD5='7d42ae99df8c0a4ff460235ae406f2d6' ARCHIVE_BASE_PST_1_SIZE='1800000' ARCHIVE_BASE_PST_1_VERSION='3.1.4-gog26532' ARCHIVE_BASE_PST_1_URL='https://www.gog.com/game/planescape_torment_enhanced_edition' ARCHIVE_BASE_PST_0_NAME='gog_planescape_torment_enhanced_edition_2.1.0.3.sh' ARCHIVE_BASE_PST_0_MD5='649c1bf9d7ccd81553c574ff1bec2cef' ARCHIVE_BASE_PST_0_SIZE='1800000' ARCHIVE_BASE_PST_0_VERSION='3.1.3-gog2.1.0.3' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_PST='planescape-torment-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_PST='ed1c9961e2ecfa401af825d75723fe9c' ARCHIVE_OPTIONAL_ICONS_URL_PST='https://downloads.dotslashplay.it/games/planescape-torment-enhanced-edition/' CONTENT_ICONS_PATH_PST='.' CONTENT_ICONS_FILES_PST=' 16x16 32x32 48x48 64x64 96x96 128x128 256x256' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES_BG1=' BaldursGate' CONTENT_GAME_BIN_FILES_BG2=' BaldursGateII' CONTENT_GAME_BIN_FILES_IWD1=' IcewindDale' CONTENT_GAME_BIN_FILES_PST=' Torment64' CONTENT_GAME_L10N_EN_FILES=' lang/en_US' CONTENT_GAME_L10N_FR_FILES=' lang/fr_FR' CONTENT_GAME_DATA_FILES=' chitin.key engine.lua Manuals movies music scripts data' CONTENT_DOC_DATA_PATH="${CONTENT_PATH_DEFAULT}/../docs" CONTENT_DOC_DATA_FILES='*' APP_MAIN_EXE_BG1='BaldursGate' APP_MAIN_EXE_BG2='BaldursGateII' APP_MAIN_EXE_IWD1='IcewindDale' APP_MAIN_EXE_PST='Torment64' APP_MAIN_ICON='../support/icon.png' ## The game segfaults on launch when SDL_VIDEODRIVER is set to "wayland". ## Forcing the use of system-provided SDL with SDL_DYNAMIC_API does not help. APP_MAIN_PRERUN='# The game segfaults on launch when SDL_VIDEODRIVER is set to "wayland". if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' # Packages PACKAGES_LIST=' PKG_BIN PKG_L10N_EN PKG_L10N_FR PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libexpat.so.1 libgcc_s.so.1 libGL.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' PKG_L10N_EN_DESCRIPTION='English localization' PKG_L10N_FR_DESCRIPTION='French localization' PKG_DATA_DESCRIPTION='data' ## Baldur's Gate 1 Enhanced Edition PKG_L10N_BASE_ID_BG1="${GAME_ID_BG1}-l10n" PKG_L10N_EN_ID_BG1="${PKG_L10N_BASE_ID_BG1}-en" PKG_L10N_FR_ID_BG1="${PKG_L10N_BASE_ID_BG1}-fr" PKG_L10N_PROVIDES_BG1=" $PKG_L10N_BASE_ID_BG1" PKG_L10N_EN_PROVIDES_BG1="$PKG_L10N_PROVIDES_BG1" PKG_L10N_FR_PROVIDES_BG1="$PKG_L10N_PROVIDES_BG1" PKG_DATA_ID_BG1="${GAME_ID_BG1}-data" ## Baldur's Gate 2 Enhanced Edition PKG_L10N_BASE_ID_BG2="${GAME_ID_BG2}-l10n" PKG_L10N_EN_ID_BG2="${PKG_L10N_BASE_ID_BG2}-en" PKG_L10N_FR_ID_BG2="${PKG_L10N_BASE_ID_BG2}-fr" PKG_L10N_PROVIDES_BG2=" $PKG_L10N_BASE_ID_BG2" PKG_L10N_EN_PROVIDES_BG2="$PKG_L10N_PROVIDES_BG2" PKG_L10N_FR_PROVIDES_BG2="$PKG_L10N_PROVIDES_BG2" PKG_DATA_ID_BG2="${GAME_ID_BG2}-data" ## Icewind Dale 1 Enhanced Edition PKG_L10N_BASE_ID_IWD1="${GAME_ID_IWD1}-l10n" PKG_L10N_EN_ID_IWD1="${PKG_L10N_BASE_ID_IWD1}-en" PKG_L10N_FR_ID_IWD1="${PKG_L10N_BASE_ID_IWD1}-fr" PKG_L10N_PROVIDES_IWD1=" $PKG_L10N_BASE_ID_IWD1" PKG_L10N_EN_PROVIDES_IWD1="$PKG_L10N_PROVIDES_IWD1" PKG_L10N_FR_PROVIDES_IWD1="$PKG_L10N_PROVIDES_IWD1" PKG_DATA_ID_IWD1="${GAME_ID_IWD1}-data" ## Planescape: Torment Enhanced Edition PKG_L10N_BASE_ID_PST="${GAME_ID_PST}-l10n" PKG_L10N_EN_ID_PST="${PKG_L10N_BASE_ID_PST}-en" PKG_L10N_FR_ID_PST="${PKG_L10N_BASE_ID_PST}-fr" PKG_L10N_PROVIDES_PST=" $PKG_L10N_BASE_ID_PST" PKG_L10N_EN_PROVIDES_PST="$PKG_L10N_PROVIDES_PST" PKG_L10N_FR_PROVIDES_PST="$PKG_L10N_PROVIDES_PST" PKG_DATA_ID_PST="${GAME_ID_PST}-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 . "$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 case "${LANG%_*}" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_BIN' 'PKG_DATA' 'PKG_L10N_EN' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN' 'PKG_DATA' 'PKG_L10N_FR' # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-infinity-engine-games.sh0000755000000000000000000003645614471751340016364 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Infinity Engine games: # - Baldur's Gate 1 # - Baldur's Gate 2 # - Icewind Dale 1 # - Icewind Dale 2 # - Planescape: Torment ### script_version=20240719.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID_BG1='baldurs-gate-1' GAME_NAME_BG1='Baldurʼs Gate' GAME_ID_BG2='baldurs-gate-2' GAME_NAME_BG2='Baldurʼs Gate Ⅱ' GAME_ID_IWD1='icewind-dale-1' GAME_NAME_IWD1='Icewind Dale' GAME_ID_IWD2='icewind-dale-2' GAME_NAME_IWD2='Icewind Dale Ⅱ' GAME_ID_PST='planescape-torment' GAME_NAME_PST='Planescape: Torment' # Game archives ## Baldur's Gate 1 ARCHIVE_BASE_BG1_EN_1_NAME='baldur_s_gate_the_original_saga_gog_3_23532.sh' ARCHIVE_BASE_BG1_EN_1_MD5='f1750a05b52a5c8bb4810f0dbdb92091' ARCHIVE_BASE_BG1_EN_1_SIZE='3400000' ARCHIVE_BASE_BG1_EN_1_VERSION='1.3.5521-gog23532' ARCHIVE_BASE_BG1_EN_1_URL='https://www.gog.com/game/baldurs_gate_enhanced_edition' ARCHIVE_BASE_BG1_FR_1_NAME='baldur_s_gate_the_original_saga_french_gog_3_23532.sh' ARCHIVE_BASE_BG1_FR_1_MD5='09073e75602383c2c90d7c82436a8d91' ARCHIVE_BASE_BG1_FR_1_VERSION='1.3.5521-gog23532' ARCHIVE_BASE_BG1_FR_1_SIZE='3400000' ARCHIVE_BASE_BG1_FR_1_URL='https://www.gog.com/game/baldurs_gate_enhanced_edition' ARCHIVE_BASE_BG1_PL_1_NAME='baldur_s_gate_the_original_saga_polish_gog_3_23532.sh' ARCHIVE_BASE_BG1_PL_1_MD5='9db5d4dd953e4bc7b42fbb6d0680437a' ARCHIVE_BASE_BG1_PL_1_SIZE='3400000' ARCHIVE_BASE_BG1_PL_1_VERSION='1.3.5521-gog23532' ARCHIVE_BASE_BG1_PL_1_URL='https://www.gog.com/game/baldurs_gate_enhanced_edition' ARCHIVE_BASE_BG1_EN_0_NAME='gog_baldur_s_gate_the_original_saga_2.1.0.10.sh' ARCHIVE_BASE_BG1_EN_0_MD5='6810388ef67960dded254db5750f9aa5' ARCHIVE_BASE_BG1_EN_0_SIZE='3100000' ARCHIVE_BASE_BG1_EN_0_VERSION='1.3.5521-gog2.1.0.10' ARCHIVE_BASE_BG1_FR_0_NAME='gog_baldur_s_gate_the_original_saga_french_2.1.0.10.sh' ARCHIVE_BASE_BG1_FR_0_MD5='87ed67decb79e497b8c0ce9e0b16ac4c' ARCHIVE_BASE_BG1_FR_0_SIZE='3100000' ARCHIVE_BASE_BG1_FR_0_VERSION='1.3.5521-gog2.1.0.10' ## Baldur's Gate 2 ARCHIVE_BASE_BG2_EN_1_NAME='baldur_s_gate_2_complete_gog_3_23651.sh' ARCHIVE_BASE_BG2_EN_1_MD5='030a61ce961ac88cd9506f1fd42135d6' ARCHIVE_BASE_BG2_EN_1_SIZE='3400000' ARCHIVE_BASE_BG2_EN_1_VERSION='2.5.26498-gog23651' ARCHIVE_BASE_BG2_EN_1_URL='https://www.gog.com/game/baldurs_gate_2_enhanced_edition' ARCHIVE_BASE_BG2_FR_1_NAME='baldur_s_gate_2_complete_french_gog_3_23651.sh' ARCHIVE_BASE_BG2_FR_1_MD5='c72eb1b9bae7109de6a7005b3dc44e2c' ARCHIVE_BASE_BG2_FR_1_SIZE='3400000' ARCHIVE_BASE_BG2_FR_1_VERSION='2.5.26498-gog23651' ARCHIVE_BASE_BG2_FR_1_URL='https://www.gog.com/game/baldurs_gate_2_enhanced_edition' ARCHIVE_BASE_BG2_EN_0_NAME='gog_baldur_s_gate_2_complete_2.1.0.7.sh' ARCHIVE_BASE_BG2_EN_0_MD5='e92161d7fc0a2eea234b2c93760c9cdb' ARCHIVE_BASE_BG2_EN_0_SIZE='3000000' ARCHIVE_BASE_BG2_EN_0_VERSION='2.5.26498-gog2.1.0.7' ARCHIVE_BASE_BG2_FR_0_NAME='gog_baldur_s_gate_2_complete_french_2.1.0.7.sh' ARCHIVE_BASE_BG2_FR_0_MD5='6551bda3d8c7330b7ad66842ac1d4ed4' ARCHIVE_BASE_BG2_FR_0_SIZE='3000000' ARCHIVE_BASE_BG2_FR_0_VERSION='2.5.26498-gog2.1.0.7' ## Icewind Dale 1 ARCHIVE_BASE_IWD1_0_NAME='setup_icewind_dale_complete_2.0.0.11.exe' ARCHIVE_BASE_IWD1_0_MD5='b1395109232aac8d7f8455dad418b084' ARCHIVE_BASE_IWD1_0_TYPE='innosetup' ARCHIVE_BASE_IWD1_0_SIZE='2100000' ARCHIVE_BASE_IWD1_0_VERSION='1.42.062714-gog2.0.0.11' ARCHIVE_BASE_IWD1_0_URL='https://www.gog.com/game/icewind_dale_enhanced_edition' ## Icewind Dale 2 ARCHIVE_BASE_IWD2_EN_0_NAME='setup_icewind_dale2_2.1.0.13.exe' ARCHIVE_BASE_IWD2_EN_0_MD5='9a68fdabdaff58bebc67092d47d4174e' ARCHIVE_BASE_IWD2_EN_0_TYPE='innosetup' ARCHIVE_BASE_IWD2_EN_0_SIZE='1500000' ARCHIVE_BASE_IWD2_EN_0_VERSION='2.01.101615-gog2.1.0.13' ARCHIVE_BASE_IWD2_EN_0_URL='https://www.gog.com/game/icewind_dale_2' ARCHIVE_BASE_IWD2_FR_0_NAME='setup_icewind_dale2_french_2.1.0.13.exe' ARCHIVE_BASE_IWD2_FR_0_MD5='04f25433d405671a8975be6540dd55fa' ARCHIVE_BASE_IWD2_FR_0_TYPE='innosetup' ARCHIVE_BASE_IWD2_FR_0_SIZE='1500000' ARCHIVE_BASE_IWD2_FR_0_VERSION='2.01.101615-gog2.1.0.13' ARCHIVE_BASE_IWD2_FR_0_URL='https://www.gog.com/game/icewind_dale_2' ## Planescape: Torment ARCHIVE_BASE_PST_EN_1_NAME='planescape_torment_gog_3_23483.sh' ARCHIVE_BASE_PST_EN_1_MD5='3eb98c2c34d628b7da6e4e914ac8e622' ARCHIVE_BASE_PST_EN_1_SIZE='2700000' ARCHIVE_BASE_PST_EN_1_VERSION='1.1-gog23483' ARCHIVE_BASE_PST_EN_1_URL='https://www.gog.com/game/planescape_torment_enhanced_edition' ARCHIVE_BASE_PST_FR_1_NAME='planescape_torment_french_gog_3_23483.sh' ARCHIVE_BASE_PST_FR_1_MD5='3374385ab6c5ca8aa489ee8de6161637' ARCHIVE_BASE_PST_FR_1_SIZE='2700000' ARCHIVE_BASE_PST_FR_1_VERSION='1.1-gog23483' ARCHIVE_BASE_PST_FR_1_URL='https://www.gog.com/game/planescape_torment_enhanced_edition' ARCHIVE_BASE_PST_RU_1_NAME='planescape_torment_russian_gog_3_23483.sh' ARCHIVE_BASE_PST_RU_1_MD5='6f6744e90691126c884dccf925423e2d' ARCHIVE_BASE_PST_RU_1_SIZE='2700000' ARCHIVE_BASE_PST_RU_1_VERSION='1.1-gog23483' ARCHIVE_BASE_PST_RU_1_URL='https://www.gog.com/game/planescape_torment_enhanced_edition' ARCHIVE_BASE_PST_EN_0_NAME='gog_planescape_torment_2.1.0.9.sh' ARCHIVE_BASE_PST_EN_0_MD5='a48bb772f60da3b5b2cac804b6e92670' ARCHIVE_BASE_PST_EN_0_SIZE='2400000' ARCHIVE_BASE_PST_EN_0_VERSION='1.1-gog2.1.0.9' ARCHIVE_BASE_PST_FR_0_NAME='gog_planescape_torment_french_2.1.0.9.sh' ARCHIVE_BASE_PST_FR_0_MD5='c3af554300a90297d4fca0b591d9c3fd' ARCHIVE_BASE_PST_FR_0_SIZE='2400000' ARCHIVE_BASE_PST_FR_0_VERSION='1.1-gog2.1.0.9' ARCHIVE_BASE_PST_RU_0_NAME='gog_planescape_torment_russian_2.2.0.10.sh' ARCHIVE_BASE_PST_RU_0_MD5='d6fd52fe9946bcc067eed441945127f1' ARCHIVE_BASE_PST_RU_0_SIZE='2400000' ARCHIVE_BASE_PST_RU_0_VERSION='1.1-gog2.2.0.10' CONTENT_PATH_DEFAULT_BG1_EN="data/noarch/prefix/drive_c/GOG Games/Baldur's Gate" CONTENT_PATH_DEFAULT_BG1_FR="data/noarch/prefix/drive_c/GOG Games/Baldur's Gate (French)" CONTENT_PATH_DEFAULT_BG1_PL="data/noarch/prefix/drive_c/GOG Games/Baldur's Gate (Polish)" CONTENT_PATH_DEFAULT_BG2_EN="data/noarch/prefix/drive_c/GOG Games/Baldur's Gate 2" CONTENT_PATH_DEFAULT_BG2_FR="data/noarch/prefix/drive_c/GOG Games/Baldur's Gate 2 (French)" CONTENT_PATH_DEFAULT_IWD1='app' CONTENT_PATH_DEFAULT_IWD2='app' CONTENT_PATH_DEFAULT_PST_EN='data/noarch/prefix/drive_c/GOG Games/Planescape Torment' CONTENT_PATH_DEFAULT_PST_RU='data/noarch/prefix/drive_c/GOG Games/Planescape Torment (Russian)' CONTENT_PATH_DEFAULT_PST_FR='data/noarch/prefix/drive_c/GOG Games/Planescape Torment (French)' CONTENT_GAME_BIN_FILES=' luaauto.cfg lasnil32.dll 3dfx.dll binkw32.dll autonote.ini baldur.ini beast.ini icewind.ini icewind2.ini keymap.ini layout.ini quests.ini torment.ini script compiler *.exe' CONTENT_GAME_L10N_FILES=' cachemos.bif crefiles.bif cs_0404.bif interface.bif sound.bif voice.bif language.ini party.ini language.txt characters override movies mpsave save sounds cd2/data/*.mve cd2/data/sndvo.bif data/*sound*.bif data/25npcso.bif data/areas.bif data/genmova.bif data/movies?.bif data/npcsocd?.bif data/npchd0so.bif data/objanim.bif data/scripts.bif data/movies *.key *.tlk' CONTENT_GAME_DATA_FILES=' baldur.ico var.var cd2 cd3 data music scripts *.bif *.mpi' CONTENT_DOC_L10N_FILES=' *.htm *.pdf *.txt' CONTENT_DOC0_L10N_PATH_BG1_EN='data/noarch/docs/english' CONTENT_DOC0_L10N_PATH_BG1_FR='data/noarch/docs/french' CONTENT_DOC0_L10N_PATH_BG1_PL='data/noarch/docs/polish' CONTENT_DOC0_L10N_PATH_BG1_EN_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_BG1_FR_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_BG2_EN='data/noarch/docs/english' CONTENT_DOC0_L10N_PATH_BG2_FR='data/noarch/docs/french' CONTENT_DOC0_L10N_PATH_BG2_EN_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_BG2_FR_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_PST_EN='data/noarch/docs/english' CONTENT_DOC0_L10N_PATH_PST_FR='data/noarch/docs/french' CONTENT_DOC0_L10N_PATH_PST_RU='data/noarch/docs/russian' CONTENT_DOC0_L10N_PATH_PST_EN_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_PST_FR_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_PST_RU_0='data/noarch/docs' ## FIXME: An explicit files list should be given. CONTENT_DOC0_L10N_FILES_BG1=' *' CONTENT_DOC0_L10N_FILES_BG2=' *' CONTENT_DOC0_L10N_FILES_PST=' *' # Applications USER_PERSISTENT_FILES=' *.ini' USER_PERSISTENT_DIRECTORIES=' characters mpsave save' ## Disable the multi-threaded command stream feature, as it has a very severe impact on performances. WINE_WINETRICKS_VERBS='csmt=off' APPLICATIONS_LIST='APP_MAIN APP_CONFIG' APPLICATIONS_LIST_PST='APP_MAIN' APP_CONFIG_CAT='Settings' ## Baldur's Gate 1 APP_MAIN_EXE_BG1='bgmain2.exe' APP_MAIN_ICON_BG1='baldur.exe' APP_CONFIG_ID_BG1="${GAME_ID_BG1}-config" APP_CONFIG_NAME_BG1="$GAME_NAME_BG1 - configuration" APP_CONFIG_EXE_BG1='config.exe' APP_CONFIG_ICON_BG1='config.exe' ## Baldur's Gate 2 APP_MAIN_EXE_BG2='bgmain.exe' APP_MAIN_ICON_BG2='baldur.exe' ## Merge "data" and "data/data". ## TODO: The symbolic link could probably be shipped in the package instead. APP_MAIN_PRERUN_BG2=' # Merge "data" and "data/data" ln --symbolic --force --no-target-directory . "data/data" ' APP_CONFIG_ID_BG2="${GAME_ID_BG2}-config" APP_CONFIG_NAME_BG2="$GAME_NAME_BG2 - configuration" APP_CONFIG_EXE_BG2='bgconfig.exe' APP_CONFIG_ICON_BG2='bgconfig.exe' ## Icewind Dale 1 APP_MAIN_EXE_IWD1='idmain.exe' APP_MAIN_ICON_IWD1='idmain.exe' APP_CONFIG_ID_IWD1="${GAME_ID_IWD1}-config" APP_CONFIG_NAME_IWD1="$GAME_NAME_IWD1 - configuration" APP_CONFIG_EXE_IWD1='config.exe' APP_CONFIG_ICON_IWD1='config.exe' ## Icewind Dale 2 APP_MAIN_EXE_IWD2='iwd2.exe' APP_MAIN_ICON_IWD2='iwd2.exe' APP_CONFIG_ID_IWD2="${GAME_ID_IWD2}-config" APP_CONFIG_NAME_IWD2="$GAME_NAME_IWD2 - configuration" APP_CONFIG_EXE_IWD2='config.exe' APP_CONFIG_ICON_IWD2='config.exe' ## Planescape: Torment APP_MAIN_EXE_PST='torment.exe' APP_MAIN_ICON_PST='torment.exe' # Packages ## Common PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_L10N_DESCRIPTION_PL='Polish localization' PKG_L10N_DESCRIPTION_RU='Russian localization' PKG_DATA_DESCRIPTION='data' ## Baldur's Gate 1 PKG_L10N_BASE_ID_BG1="${GAME_ID_BG1}-l10n" PKG_L10N_ID_BG1_EN="${PKG_L10N_BASE_ID_BG1}-en" PKG_L10N_ID_BG1_FR="${PKG_L10N_BASE_ID_BG1}-fr" PKG_L10N_ID_BG1_PL="${PKG_L10N_BASE_ID_BG1}-pl" PKG_L10N_PROVIDES_BG1=" $PKG_L10N_BASE_ID_BG1" PKG_L10N_DESCRIPTION_BG1_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_BG1_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_BG1_PL="$PKG_L10N_DESCRIPTION_PL" PKG_DATA_ID_BG1="${GAME_ID_BG1}-data" ## Baldur's Gate 2 PKG_L10N_BASE_ID_BG2="${GAME_ID_BG2}-l10n" PKG_L10N_ID_BG2_EN="${PKG_L10N_BASE_ID_BG2}-en" PKG_L10N_ID_BG2_FR="${PKG_L10N_BASE_ID_BG2}-fr" PKG_L10N_PROVIDES_BG2=" $PKG_L10N_BASE_ID_BG2" PKG_L10N_DESCRIPTION_BG2_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_BG2_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_BG2="${GAME_ID_BG2}-data" ## Icewind Dale 1 PKG_L10N_BASE_ID_IWD1="${GAME_ID_IWD1}-l10n" PKG_L10N_ID_IWD1="${PKG_L10N_BASE_ID_IWD1}-en" PKG_L10N_PROVIDES_IWD1=" $PKG_L10N_BASE_ID_IWD1" PKG_L10N_DESCRIPTION_IWD1="$PKG_L10N_DESCRIPTION_EN" PKG_DATA_ID_IWD1="${GAME_ID_IWD1}-data" ## Icewind Dale 2 PKG_L10N_BASE_ID_IWD2="${GAME_ID_IWD2}-l10n" PKG_L10N_ID_IWD2_EN="${PKG_L10N_BASE_ID_IWD2}-en" PKG_L10N_ID_IWD2_FR="${PKG_L10N_BASE_ID_IWD2}-fr" PKG_L10N_PROVIDES_IWD2=" $PKG_L10N_BASE_ID_IWD2" PKG_L10N_DESCRIPTION_IWD2_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_IWD2_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_IWD2="${GAME_ID_IWD2}-data" ## Planescape: Torment PKG_L10N_BASE_ID_PST="${GAME_ID_PST}-l10n" PKG_L10N_ID_PST_EN="${PKG_L10N_BASE_ID_PST}-en" PKG_L10N_ID_PST_FR="${PKG_L10N_BASE_ID_PST}-fr" PKG_L10N_ID_PST_RU="${PKG_L10N_BASE_ID_PST}-ru" PKG_L10N_PROVIDES_PST=" $PKG_L10N_BASE_ID_PST" PKG_L10N_DESCRIPTION_PST_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_PST_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_PST_RU="$PKG_L10N_DESCRIPTION_RU" PKG_DATA_ID_PST="${GAME_ID_PST}-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 . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Delete unwanted files. ## TODO: Check if the explicit removal is still required. rm --force --recursive \ '__support' \ 'gameuxinstallhelper.dll' \ 'goggame.dll' \ 'goggame-'*'.dll' \ 'ddrawfix' \ 'setup-ddrawfix.exe' ## Mojosetup installers ## - Convert all file names to lowercase if [ "$(archive_type "$(current_archive)")" = 'mojosetup' ]; then tolower . fi ## Baldur's Gate 2 ## - Delete broken symbolic links ## - Merge "data" and "data/data" case "$(current_archive)" in ('ARCHIVE_BASE_BG2_'*) rm --force --recursive \ 'mpsave' \ 'temp' if [ -e 'data/data' ]; then cp --link --recursive --update=none 'data/data/'* 'data/' rm --force --recursive 'data/data' fi ;; esac ## Generate a minimal configuration file/ case "$(current_archive)" in ('ARCHIVE_BASE_BG1_'*) config_file='baldur.ini' ;; ('ARCHIVE_BASE_BG2_'*) config_file='baldur.ini' ;; ('ARCHIVE_BASE_IWD1_'*) config_file='icewind.ini' ;; ('ARCHIVE_BASE_IWD2_'*) config_file='icewind2.ini' ;; ('ARCHIVE_BASE_PST_'*) config_file='torment.ini' ;; esac game_path="C:\\$(game_id)" case "$(current_archive)" in ('ARCHIVE_BASE_BG1_'*) cat > "$config_file" <<- EOF [Alias] HD0:=${game_path}\\ CD1:=${game_path}\\data\\ CD2:=${game_path}\\data\\ CD3:=${game_path}\\data\\ CD4:=${game_path}\\data\\ CD5:=${game_path}\\data\\ CD6:=${game_path}\\data\\ EOF ;; ('ARCHIVE_BASE_BG2_'*) cat > "$config_file" <<- EOF [Alias] HD0:=${game_path}\\ CD1:=${game_path}\\data\\ CD2:=${game_path}\\data\\ CD3:=${game_path}\\data\\ CD4:=${game_path}\\data\\ CD5:=${game_path}\\data\\ CD6:=${game_path}\\data\\ EOF ;; ('ARCHIVE_BASE_IWD1_'*) cat > "$config_file" <<- EOF [Alias] HD0:=${game_path}\\ CD1:=${game_path}\\ CD2:=${game_path}\\cd2\\ CD3:=${game_path}\\cd3\\ EOF ;; ('ARCHIVE_BASE_IWD2_'*) cat > "$config_file" <<- EOF [Alias] HD0:=${game_path}\\ CD1:=${game_path}\\data\\ CD2:=${game_path}\\cd2\\ [Movies] INTRO=1 EOF ;; ('ARCHIVE_BASE_PST_'*) cat > "$config_file" <<- EOF [Alias] HD0:=${game_path}\\ CD1:=${game_path}\\data\\ CD2:=${game_path}\\data\\ CD3:=${game_path}\\data\\ CD4:=${game_path}\\data\\ CD5:=${game_path}\\data\\ EOF ;; esac ## The native windowed mode is used instead of a WINE virtual desktop, ## as using a WINE virtual desktop would cause cursor flickering (WINE 9.0). ## cf. https://bugs.winehq.org/show_bug.cgi?id=56986 cat >> "$config_file" <<- EOF [Program Options] Full Screen=0 EOF ) # 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-into-the-breach.sh0000755000000000000000000001050514471751340015132 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 Hoël Bézier set -o errexit ### # Into the Breach ### script_version=20240504.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='into-the-breach' GAME_NAME='Into the Breach' ARCHIVE_BASE_HUMBLE_4_NAME='IntoTheBreach_1_2_76_Linux.zip' ARCHIVE_BASE_HUMBLE_4_MD5='79f506d656c088c67dbf9286936e0e97' ARCHIVE_BASE_HUMBLE_4_SIZE='540000' ARCHIVE_BASE_HUMBLE_4_VERSION='1.2.76-humble.2022.08.02' ARCHIVE_BASE_HUMBLE_4_URL='https://subsetgames.com/itb.html#HumbleWidgetBox5' ARCHIVE_BASE_HUMBLE_3_NAME='IntoTheBreach_1_2_75_Linux.zip' ARCHIVE_BASE_HUMBLE_3_MD5='b9912dc0b9bdd2013704b918ce438592' ARCHIVE_BASE_HUMBLE_3_SIZE='540000' ARCHIVE_BASE_HUMBLE_3_VERSION='1.2.75-humble.2022.07.28' ARCHIVE_BASE_HUMBLE_2_NAME='IntoTheBreach_1_2_71_Linux.zip' ARCHIVE_BASE_HUMBLE_2_MD5='afa9f960d757ec72c537f306a2065d4f' ARCHIVE_BASE_HUMBLE_2_SIZE='540000' ARCHIVE_BASE_HUMBLE_2_VERSION='1.2.71-humble.2022.07.19' ARCHIVE_BASE_HUMBLE_1_NAME='Into_the_Breach_Linux.1.2.23.zip' ARCHIVE_BASE_HUMBLE_1_MD5='35cbc7ad39661ac97f41760f77f71fab' ARCHIVE_BASE_HUMBLE_1_SIZE='320000' ARCHIVE_BASE_HUMBLE_1_VERSION='1.2.23-humble.2020.05.15' ARCHIVE_BASE_HUMBLE_0_NAME='Into_the_Breach_Linux.1.2.20.zip' ARCHIVE_BASE_HUMBLE_0_MD5='5a8b33e1ccbc2953c99aacf0ad38ca37' ARCHIVE_BASE_HUMBLE_0_SIZE='320000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.2.20-humble.2020.04.20' ARCHIVE_BASE_GOG_1_NAME='into_the_breach_1_2_75_57446.sh' ARCHIVE_BASE_GOG_1_MD5='4cfb207c03f337e6f04faa1fa5bd5aea' ARCHIVE_BASE_GOG_1_SIZE='540000' ARCHIVE_BASE_GOG_1_VERSION='1.2.75-gog57446' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/into_the_breach' ARCHIVE_BASE_GOG_0_NAME='into_the_breach_1_2_24_38624.sh' ARCHIVE_BASE_GOG_0_MD5='dbc8142ec1da82284b7959a48b50d512' ARCHIVE_BASE_GOG_0_SIZE='320000' ARCHIVE_BASE_GOG_0_VERSION='1.2.24-gog38624' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='into-the-breach_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='ce72ae946c4708feabb324493dc197b1' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/into-the-breach/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48 64x64 128x128 256x256' CONTENT_PATH_DEFAULT_HUMBLE='.' CONTENT_PATH_DEFAULT_HUMBLE_1='Into the Breach' CONTENT_PATH_DEFAULT_HUMBLE_0='Into the Breach Linux' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_LIBS_BIN_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/linux_x64" CONTENT_LIBS_BIN_PATH_HUMBLE_1="${CONTENT_PATH_DEFAULT_HUMBLE_1}/linux_x64" CONTENT_LIBS_BIN_PATH_HUMBLE_0="${CONTENT_PATH_DEFAULT_HUMBLE_0}/linux_x64" CONTENT_LIBS_BIN_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/linux_x64" ## Using the system-provided libSDL2-2.0.so.0 instead of the shipped one triggers a segfault on a Debian Trixie/Sid. CONTENT_LIBS_BIN_FILES=' libfmod.so.10 libfmodstudio.so.10 libSDL2-2.0.so.0' CONTENT_GAME_BIN_FILES=' Breach' CONTENT_GAME_DATA_FILES=' maps resources scripts shadersOGL' CONTENT_DOC_DATA_FILES=' licenses' APP_MAIN_EXE='Breach' ## The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". APP_MAIN_PRERUN='# The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.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 . "$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-ironclad-tactics.sh0000755000000000000000000000472714471751340015415 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Ironclad Tactics ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='ironclad-tactics' GAME_NAME='Ironclad Tactics' ARCHIVE_BASE_0_NAME='gog_ironclad_tactics_deluxe_edition_2.0.0.4.sh' ARCHIVE_BASE_0_MD5='a0a0e2195364e57bc39e180d442e1f6b' ARCHIVE_BASE_0_SIZE='953272' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.4' ARCHIVE_BASE_0_URL='https://www.gog.com/game/ironclad_tactics_deluxe_edition' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libRotor.so' ## libRotor.so is linked against libsteam_api.so, so we have to include it too. CONTENT_LIBS0_BIN_FILES=' libsteam_api.so' CONTENT_GAME_BIN_FILES=' mono' CONTENT_GAME_DATA_FILES=' Comic Fonts Music Sounds Sprites *.dll *.dll.config *.exe *.exe.config *.glsl' CONTENT_DOC_DATA_FILES=' LICENSE.txt' ## The shipped mono build is used instead of the system-provided one to avoid a crash when trying to display the game introduction. ## See notes/ironclad-tactics for details. APP_MAIN_EXE='mono' APP_MAIN_OPTIONS='Game.exe' APP_MAIN_ICON='Game.exe' APP_MAIN_PRERUN=' # Set environment for shipped mono binary export MONO_PATH=.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libSDL2_mixer-2.0.so.0 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Apply common Mono tweaks. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(mono_launcher_tweaks)" launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-ixion.sh0000755000000000000000000000526314471751340013314 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Ixion ### script_version=20240531.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='ixion' GAME_NAME='Ixion' ARCHIVE_BASE_0_NAME='setup_ixion_1.0.6.5_(64bit)_(69670).exe' ARCHIVE_BASE_0_MD5='753b96e6b35d4adea73ca842f2e8f0e7' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_ixion_1.0.6.5_(64bit)_(69670)-1.bin' ARCHIVE_BASE_0_PART1_MD5='54d9f45d4ed211a14aea70797d1400c1' ARCHIVE_BASE_0_PART2_NAME='setup_ixion_1.0.6.5_(64bit)_(69670)-2.bin' ARCHIVE_BASE_0_PART2_MD5='c4b119088ea2190b1d99e5efd38bd7ac' ARCHIVE_BASE_0_SIZE='12480607' ARCHIVE_BASE_0_VERSION='1.0.6.5-gog69670' ARCHIVE_BASE_0_URL='https://www.gog.com/game/ixion' UNITY3D_NAME='ixion' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_SHAREDASSETS1_FILES=" ${UNITY3D_NAME}_data/sharedassets?.*" CONTENT_GAME_DATA_SHAREDASSETS2_FILES=" ${UNITY3D_NAME}_data/sharedassets??.*" WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/BulwarkStudios/Ixion' ## The game menu background fails to render with wined3d. WINE_DIRECT3D_RENDERER='dxvk' PACKAGES_LIST=' PKG_BIN PKG_DATA_SHAREDASSETS1 PKG_DATA_SHAREDASSETS2 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_SHAREDASSETS_ID="${PKG_DATA_ID}-sharedassets" PKG_DATA_SHAREDASSETS1_ID="${PKG_DATA_SHAREDASSETS_ID}-1" PKG_DATA_SHAREDASSETS2_ID="${PKG_DATA_SHAREDASSETS_ID}-2" PKG_DATA_SHAREDASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - shared assets" PKG_DATA_SHAREDASSETS1_DESCRIPTION="$PKG_DATA_SHAREDASSETS_DESCRIPTION - 1" PKG_DATA_SHAREDASSETS2_DESCRIPTION="$PKG_DATA_SHAREDASSETS_DESCRIPTION - 2" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_SHAREDASSETS1_ID $PKG_DATA_SHAREDASSETS2_ID" PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" ## TODO: Check if some specific GStreamer decoders are required. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-jade-empire.sh0000755000000000000000000001300714471751340014343 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Jade Empire ### script_version=20240720.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='jade-empire' GAME_NAME='Jade Empire' ARCHIVE_BASE_EN_1_NAME='setup_jade_empire_1.00_(15538).exe' ARCHIVE_BASE_EN_1_MD5='e68f17f59bde2254ab1e9b70c078e9f1' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_PART1_NAME='setup_jade_empire_1.00_(15538)-1.bin' ARCHIVE_BASE_EN_1_PART1_MD5='6470aa8dac5486d7c66336686e2e442d' ARCHIVE_BASE_EN_1_PART1_TYPE='innosetup' ARCHIVE_BASE_EN_1_PART2_NAME='setup_jade_empire_1.00_(15538)-2.bin' ARCHIVE_BASE_EN_1_PART2_MD5='57f4931e55373a9c994b67d14f43dc1c' ARCHIVE_BASE_EN_1_PART2_TYPE='innosetup' ARCHIVE_BASE_EN_1_SIZE='7454315' ARCHIVE_BASE_EN_1_VERSION='1.00-gog15538' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/jade_empire_special_edition' ARCHIVE_BASE_FR_1_NAME='setup_jade_empire_french_1.00_(15538).exe' ARCHIVE_BASE_FR_1_MD5='872f400a6af8bae9af9bf0b2025d29f4' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_PART1_NAME='setup_jade_empire_french_1.00_(15538)-1.bin' ARCHIVE_BASE_FR_1_PART1_MD5='39182b7e8651b92b1703e6c2b89c783c' ARCHIVE_BASE_FR_1_PART1_TYPE='innosetup' ARCHIVE_BASE_FR_1_PART2_NAME='setup_jade_empire_french_1.00_(15538)-2.bin' ARCHIVE_BASE_FR_1_PART2_MD5='428bf4eba51fde69fa6fe6fb05aadb96' ARCHIVE_BASE_FR_1_PART2_TYPE='innosetup' ARCHIVE_BASE_FR_1_SIZE='7608886' ARCHIVE_BASE_FR_1_VERSION='1.00-gog15538' ARCHIVE_BASE_FR_1_URL='https://www.gog.com/game/jade_empire_special_edition' ARCHIVE_BASE_EN_0_NAME='setup_jade_empire_2.0.0.4.exe' ARCHIVE_BASE_EN_0_MD5='8f9db8c43a9cab6cd00de3d6e69fbda5' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_jade_empire_2.0.0.4-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='9fbfbc9b047288ebcbac9551a5f27ae8' ARCHIVE_BASE_EN_0_PART1_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART2_NAME='setup_jade_empire_2.0.0.4-2.bin' ARCHIVE_BASE_EN_0_PART2_MD5='94af70b645c525b7263258c91d95cd92' ARCHIVE_BASE_EN_0_PART2_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART3_NAME='setup_jade_empire_2.0.0.4-3.bin' ARCHIVE_BASE_EN_0_PART3_MD5='3efd05ca48fc9d2dfe79b2fab2456df0' ARCHIVE_BASE_EN_0_PART3_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART4_NAME='setup_jade_empire_2.0.0.4-4.bin' ARCHIVE_BASE_EN_0_PART4_MD5='a480e87364cc8ab2a519c1f09a2da2c9' ARCHIVE_BASE_EN_0_PART4_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART5_NAME='setup_jade_empire_2.0.0.4-5.bin' ARCHIVE_BASE_EN_0_PART5_MD5='081042ad8561b599add7b2f366cf3da8' ARCHIVE_BASE_EN_0_PART5_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='7800000' ARCHIVE_BASE_EN_0_VERSION='1.0-gog2.0.0.4' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' binkw32.dll d3d9.dll ogg.dll vorbis.dll vorbisfile.dll jadeempire.exe jadeempireconfig.exe jadeempirelauncher.exe' CONTENT_GAME_L10N_FILES=' sound data/bips movies/attract.bik movies/c01_cutzu.bik movies/c04_princisfox.bik movies/c06_partycall.bik movies/cut_c3escape*.bik movies/j00_cut_open_c1.bik movies/j00_cut_open_c6.bik movies/j01_jiahand_01.bik movies/j04_cut_lotfin*.bik movies/j04_pop_*.bik movies/j06_recover_01.bik movies/j07_cut_drop01.bik movies/j07_cut_final06b.bik movies/j07_cut_final06.bik movies/j07_cut_final06c.bik movies/j07_cut_final06d.bik movies/j07_cut_final06e.bik movies/j07_cut_final06f.bik movies/j07_cut_final06g.bik movies/j08_cut_ending3.bik movies/j08_cut_final_01.bik movies/j08_cut_stone_01.bik movies/j08_ending3_*.bik movies/j08_final_01_*.bik movies/j08_stone_01_*.bik *.tlk' CONTENT_GAME_DATA_FILES=' data fonts movies override shaderpc *.key' CONTENT_DOC_L10N_PATH="${CONTENT_PATH_DEFAULT}/docs" CONTENT_DOC_L10N_FILES=' *' CONTENT_DOC_DATA_FILES=' *.txt' USER_PERSISTENT_DIRECTORIES=' logs persistent save scratch' USER_PERSISTENT_FILES=' *.ini data/*.xml' APP_MAIN_EXE='jadeempire.exe' APP_CONFIG_EXE='jadeempireconfig.exe' APP_CONFIG_CAT='Settings' APP_CONFIG_ID="${GAME_ID}-config" APP_CONFIG_GAME="$GAME_NAME - Configuration" PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Automatically spawn game settings window on first launch ## Using desktop_field_exec here ensures that we get a path already escaped if required. settings_cmd=$(desktop_field_exec 'APP_CONFIG') APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Automatically spawn game settings window on first launch settings_file="JadeEmpire.ini" if [ ! -e "$settings_file" ]; then '"${settings_cmd}"' fi' # 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-jazz-jackrabbit-2.sh0000755000000000000000000001415714471751340015377 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Jazz Jackrabbit 2 ### script_version=20240605.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='jazz-jackrabbit-2' GAME_NAME='Jazz Jackrabbit 2' GAME_ID_JJ2PLUS="${GAME_ID}-jj2plus" GAME_NAME_JJ2PLUS="$GAME_NAME - JJ2+" GAME_ID_CHRISTMAS="${GAME_ID}-the-christmas-chronicles" GAME_NAME_CHRISTMAS="$GAME_NAME - The Christmas Chronicles" # Game archives ## Jazz Jackrabbit 2 (including The Secret Files) ARCHIVE_BASE_1_NAME='setup_jazz_jackrabbit_2_1.24hf_(16886).exe' ARCHIVE_BASE_1_MD5='45be80bad040ea821bc6096abe6f3196' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='66986' ARCHIVE_BASE_1_VERSION='1.24-gog16886' ARCHIVE_BASE_1_URL='https://www.gog.com/game/jazz_jackrabbit_2_collection' ## Support for this archive can only be restored after ./play.it gains support for multiple archives with an identical name. ## cf. https://forge.dotslashplay.it/play.it/scripts/-/issues/355 #ARCHIVE_BASE_0_NAME='setup_jazz_jackrabbit_2_1.24hf_(16886).exe' #ARCHIVE_BASE_0_MD5='48a48258ed60b24068cbbb2f110b049b' #ARCHIVE_BASE_0_TYPE='innosetup' #ARCHIVE_BASE_0_SIZE='67000' #ARCHIVE_BASE_0_VERSION='1.24-gog16886' ## Jazz Jackrabbit 2 (including The Secret Files) + JJ2+ expansion ARCHIVE_BASE_JJ2PLUS_0_NAME='setup_jazz_jackrabbit_2_1.24_jj2_(5.9)_(46861).exe' ARCHIVE_BASE_JJ2PLUS_0_MD5='94f8477d51e35b4cdc6b3d999b502580' ARCHIVE_BASE_JJ2PLUS_0_TYPE='innosetup' ARCHIVE_BASE_JJ2PLUS_0_SIZE='78000' ARCHIVE_BASE_JJ2PLUS_0_VERSION='1.24-gog46861' ARCHIVE_BASE_JJ2PLUS_0_URL='https://www.gog.com/game/jazz_jackrabbit_2_collection' ## Jazz Jackrabbit 2 - The Christmas Chronicles ARCHIVE_BASE_CHRISTMAS_0_NAME='setup_jazz_jackrabbit_2_cc_1.2x_(16742).exe' ARCHIVE_BASE_CHRISTMAS_0_MD5='3289263ea6bad8bc35f02176e22109f2' ARCHIVE_BASE_CHRISTMAS_0_TYPE='innosetup' ARCHIVE_BASE_CHRISTMAS_0_SIZE='70000' ARCHIVE_BASE_CHRISTMAS_0_VERSION='1.2x-gog16742' ARCHIVE_BASE_CHRISTMAS_0_URL='https://www.gog.com/game/jazz_jackrabbit_2_collection' ## Jazz² Resurrection (native engine) ARCHIVE_JAZZ2NATIVE_1_NAME='Jazz2_2.6.0_Linux.zip' ARCHIVE_JAZZ2NATIVE_1_MD5='ff2ff3acc2213f4133ca8138603feb67' ARCHIVE_JAZZ2NATIVE_1_SIZE='29553' ARCHIVE_JAZZ2NATIVE_1_VERSION='2.6.0' ARCHIVE_JAZZ2NATIVE_1_URL='http://deat.tk/jazz2/' ARCHIVE_JAZZ2NATIVE_0_NAME='Jazz2_1.0.0_Linux.zip' ARCHIVE_JAZZ2NATIVE_0_MD5='868ce9ac55ee3a085eed5503d7647a67' ARCHIVE_JAZZ2NATIVE_0_VERSION='1.0.0' ARCHIVE_JAZZ2NATIVE_0_SIZE='8000' # Archives content ## Jazz Jackrabbit 2 CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_PATH_DEFAULT_CHRISTMAS_0='app' CONTENT_GAME_DATA_FILES=' html jcshelp tiles userlevels *.asc *.it *.j2? *.j2as *.mo3 *.mod *.mut *.pal *.s3m *.wav' CONTENT_DOC_DATA_FILES=' *.doc *.html *.pdf *.txt' ## Jazz² Resurrection CONTENT_GAME_BIN_PATH='x64' CONTENT_GAME_BIN_PATH_JAZZ2NATIVE_0='64-bit' CONTENT_GAME_BIN_FILES=' Content jazz2 jazz2_sdl2' ## TODO: Distinct packages could be built for the default build and the SDL one. APP_MAIN_EXE='jazz2' APP_MAIN_ICON='jazz2.exe' APP_SDL_EXE='jazz2_sdl2' APP_SDL_ICON='jazz2.exe' APP_SDL_ID="${GAME_ID}-sdl" APP_SDL_ID_JJ2PLUS="${GAME_ID_JJ2PLUS}-sdl" APP_SDL_ID_CHRISTMAS="${GAME_ID_CHRISTMAS}-sdl" APP_SDL_NAME="$GAME_NAME (SDL)" APP_SDL_NAME_JJ2PLUS="$GAME_NAME_JJ2PLUS (SDL)" APP_SDL_NAME_CHRISTMAS="$GAME_NAME_CHRISTMAS (SDL)" 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 libglfw.so.3 libm.so.6 libopenal.so.1 libOpenGL.so.0 libopenmpt.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libvorbisfile.so.3 libz.so.1' PKG_BIN_DEPENDENCIES_LIBRARIES_JAZZ2NATIVE_0=' libc.so.6 libgcc_s.so.1 libGLEW.so.2.2 libglfw.so.3 libGL.so.1 libGLX.so.0 libICE.so.6 libm.so.6 libopenal.so.1 libOpenGL.so.0 libopenmpt.so.0 libSDL2-2.0.so.0 libSM.so.6 libstdc++.so.6 libX11.so.6 libXext.so.6 libz.so.1' ## Ensure smooth upgrades from packages generated with pre-20240430.10 game scripts PKG_BIN_PROVIDES="${PKG_BIN_PROVIDES:-} jazz-jackrabbit-2-bin" PKG_BIN_PROVIDES_CHRISTMAS="${PKG_BIN_PROVIDES_CHRISTMAS:-} jazz-jackrabbit-2-the-christmas-chronicles-bin" ### This one is not actually required, but prevents the JJ2+ package from conflicting with the regular one. PKG_BIN_PROVIDES_JJ2PLUS="${PKG_BIN_PROVIDES_JJ2PLUS:-} jazz-jackrabbit-2-jj2plus-bin" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_JJ2PLUS="${GAME_ID_JJ2PLUS}-data" PKG_DATA_ID_CHRISTMAS="${GAME_ID_CHRISTMAS}-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 . "$PLAYIT_LIB2" # Check for the presence of required extra archives archive_initialize_required \ 'ARCHIVE_JAZZ2NATIVE' \ 'ARCHIVE_JAZZ2NATIVE_1' \ 'ARCHIVE_JAZZ2NATIVE_0' installer_release=$(package_version | cut --delimiter='-' --fields=2) case "$(archive_name 'ARCHIVE_JAZZ2NATIVE')" in ("$(archive_name 'ARCHIVE_JAZZ2NATIVE_1')") export "$(current_archive)_VERSION=${ARCHIVE_JAZZ2NATIVE_1_VERSION}-${installer_release}" ;; ("$(archive_name 'ARCHIVE_JAZZ2NATIVE_0')") export "$(current_archive)_VERSION=${ARCHIVE_JAZZ2NATIVE_0_VERSION}-${installer_release}" export CONTENT_GAME_BIN_PATH="$CONTENT_GAME_BIN_PATH_JAZZ2NATIVE_0" export PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES_JAZZ2NATIVE_0" ;; esac # Extract game data archive_extraction_default archive_extraction 'ARCHIVE_JAZZ2NATIVE' # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion 'GAME_DATA' 'PKG_DATA' "$(path_game_data)/Source" 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-kapital-sparks-of-revolution.sh0000755000000000000000000000356614471751340017726 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Kapital: Sparks of Revolution ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='kapital-sparks-of-revolution' GAME_NAME='Kapital: Sparks of Revolution' ARCHIVE_BASE_0_NAME='kapital_sparks_of_revolution_1_06_56968.sh' ARCHIVE_BASE_0_MD5='2ee255c7cbba173270dbead455c07099' ARCHIVE_BASE_0_SIZE='636808' ARCHIVE_BASE_0_VERSION='1.06-gog56968' ARCHIVE_BASE_0_URL='https://www.gog.com/game/kapital_sparks_of_revolution' UNITY3D_NAME='Kapital' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Prevent the inclusion of the shipped Steam library. rm --recursive "$(unity3d_name)_Data/Plugins" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-kingdom-rush.sh0000755000000000000000000000727214471751340014577 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Kingdom Rush games: # - Kingdom Rush # - Kingdom Rush: Frontiers # - Kingdom Rush: Origins ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID_ORIGINAL='kingdom-rush' GAME_NAME_ORIGINAL='Kingdom Rush' GAME_ID_FRONTIERS='kingdom-rush-frontiers' GAME_NAME_FRONTIERS='Kingdom Rush: Frontiers' GAME_ID_ORIGINS='kingdom-rush-origins' GAME_NAME_ORIGINS='Kingdom Rush: Origins' # Archives ## Kingdom Rush (original game) ARCHIVE_BASE_ORIGINAL_2_NAME='kingdom_rush_5_6_12_52189.sh' ARCHIVE_BASE_ORIGINAL_2_MD5='ca0bd3ede3d5768d51b66c366d4c68cb' ARCHIVE_BASE_ORIGINAL_2_SIZE='378545' ARCHIVE_BASE_ORIGINAL_2_VERSION='5.6.12-gog52189' ARCHIVE_BASE_ORIGINAL_2_URL='https://www.gog.com/game/kingdom_rush' ARCHIVE_BASE_ORIGINAL_1_NAME='kingdom_rush_4_2_33_43930.sh' ARCHIVE_BASE_ORIGINAL_1_MD5='1423a27078042c5fc9d7ee45d06a5744' ARCHIVE_BASE_ORIGINAL_1_SIZE='380000' ARCHIVE_BASE_ORIGINAL_1_VERSION='4.2.33-gog43930' ARCHIVE_BASE_ORIGINAL_0_NAME='kingdom_rush_4_2_15_40260.sh' ARCHIVE_BASE_ORIGINAL_0_MD5='025031489b81493e3816e077ab62214a' ARCHIVE_BASE_ORIGINAL_0_SIZE='380000' ARCHIVE_BASE_ORIGINAL_0_VERSION='4.2.15-gog40260' ## Kingdom Rush: Frontiers ARCHIVE_BASE_FRONTIERS_0_NAME='kingdom_rush_frontiers_4_2_33_43930.sh' ARCHIVE_BASE_FRONTIERS_0_MD5='6e00968ec07cec1bbafd8c43ed4416cb' ARCHIVE_BASE_FRONTIERS_0_SIZE='449652' ARCHIVE_BASE_FRONTIERS_0_VERSION='4.2.33-gog43930' ARCHIVE_BASE_FRONTIERS_0_URL='https://www.gog.com/game/kingdom_rush_frontiers' ## Kingdom Rush: Origins ARCHIVE_BASE_ORIGINS_0_NAME='kingdom_rush_origins_4_2_15_40260.sh' ARCHIVE_BASE_ORIGINS_0_MD5='864fb8a387081304df1d0674c40d718e' ARCHIVE_BASE_ORIGINS_0_SIZE='497827' ARCHIVE_BASE_ORIGINS_0_VERSION='4.2.15-gog40260' ARCHIVE_BASE_ORIGINS_0_URL='https://www.gog.com/game/kingdom_rush_origins' CONTENT_PATH_DEFAULT='data/noarch/game' ## System-provided love2d runtime can not be used, it crashes on launch with the following error: ## Error: [love "boot.lua"]:276: Syntax error: conf.lua: cannot load incompatible bytecode CONTENT_LIBS_MAIN_FILES=' liblove.so.0' ## System-provided libluajit-5.1.so.2 can not be used, as it triggers a crash on launch. CONTENT_LIBS0_MAIN_FILES=' libluajit-5.1.so.2' CONTENT_GAME_MAIN_FILES=' icon.png Kingdom Rush Kingdom Rush Frontiers Kingdom Rush Origins' CONTENT_DOC_MAIN_PATH=' license-kr-desktop.txt' APP_MAIN_EXE_ORIGINAL='Kingdom Rush' APP_MAIN_EXE_FRONTIERS='Kingdom Rush Frontiers' APP_MAIN_EXE_ORIGINS='Kingdom Rush Origins' APP_MAIN_ICON='icon.png' PKG_MAIN_ARCH='64' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libfreetype.so.6 libgcc_s.so.1 libmodplug.so.1 libmpg123.so.0 libm.so.6 libogg.so.0 libopenal.so.1 libphysfs.so.1 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libtheoradec.so.1 libvorbisfile.so.3 libvorbis.so.0 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-little-inferno-expansions.sh0000755000000000000000000000317614471751340017307 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Little Inferno expansions: # - Ho Ho Holiday ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='little-inferno' GAME_NAME='Little Inferno' EXPANSION_ID_HOHOHOLIDAY='ho-ho-holiday' EXPANSION_NAME_HOHOHOLIDAY='Ho Ho Holiday' # Archives ## Ho Ho Holiday ARCHIVE_BASE_HOHOHOLIDAY_0_NAME='LittleInfernoHoHoHoliday-Linux-2022-12-07.sh' ARCHIVE_BASE_HOHOHOLIDAY_0_MD5='7124105953b1a899f239a0fdbd492458' ARCHIVE_BASE_HOHOHOLIDAY_0_SIZE='381' ARCHIVE_BASE_HOHOHOLIDAY_0_VERSION='1.0-humble.2022.12.07' ARCHIVE_BASE_HOHOHOLIDAY_0_URL='http://tomorrowcorporation.com/littleinferno#hohoholiday' CONTENT_PATH_DEFAULT='data/noarch' CONTENT_GAME_MAIN_FILES=' .tcgame-4097.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-little-inferno.sh0000755000000000000000000001173214471751340015117 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 VA # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Little Inferno ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='little-inferno' GAME_NAME='Little Inferno' ARCHIVE_BASE_HUMBLE_1_NAME='LittleInferno_Linux_v2.0.3.sh' ARCHIVE_BASE_HUMBLE_1_MD5='2d104de7966405f905d36bfbc7722808' ARCHIVE_BASE_HUMBLE_1_SIZE='274737' ARCHIVE_BASE_HUMBLE_1_VERSION='2.0.3-humble.2022.12.08' ARCHIVE_BASE_HUMBLE_1_URL='https://www.humblebundle.com/store/little-inferno' ARCHIVE_BASE_HUMBLE_0_NAME='little-inferno_0_20130509-0ubuntu1_i386.deb' ARCHIVE_BASE_HUMBLE_0_MD5='cd7eac96e33de3089c665915b1a7239c' ARCHIVE_BASE_HUMBLE_0_SIZE='200000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.3.20130509-humble1' ARCHIVE_BASE_GOG_0_NAME='gog_little_inferno_2.0.0.2.sh' ARCHIVE_BASE_GOG_0_MD5='29375d30d03f12db44d09a1c32398d33' ARCHIVE_BASE_GOG_0_SIZE='200000' ARCHIVE_BASE_GOG_0_VERSION='1.3.20130509-gog2.0.0.2' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/little_inferno' CONTENT_PATH_DEFAULT_HUMBLE='data/noarch' CONTENT_PATH_DEFAULT_HUMBLE_0='opt/little-inferno' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_GAME_BIN64_PATH_HUMBLE='data/x86_64' CONTENT_GAME_BIN64_FILES=' LittleInferno.bin.x86_64' CONTENT_GAME_BIN32_PATH_HUMBLE='data/x86' ## This is required to override the previous CONTENT_GAME_BIN32_PATH_HUMBLE declaration. CONTENT_GAME_BIN32_PATH_HUMBLE_0="$CONTENT_PATH_DEFAULT_HUMBLE_0" CONTENT_GAME_BIN32_FILES=' LittleInferno.bin.x86' CONTENT_GAME_DATA_FILES=' shaders .tc-edition icon.png *.pak' CONTENT_DOC_DATA_FILES=' LICENSE.txt README.linux' ## Include shipped libvorbis.so.0 for game build 1.x, the game segfaults when using a system-provided library instead. CONTENT_LIBS_BIN32_PATH_HUMBLE_0="${CONTENT_PATH_DEFAULT_HUMBLE_0}/lib" CONTENT_LIBS_BIN32_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib" CONTENT_LIBS_BIN32_FILES_OLD=' libvorbis.so.0' CONTENT_LIBS_BIN32_FILES_HUMBLE_0="$CONTENT_LIBS_BIN32_FILES_OLD" CONTENT_LIBS_BIN32_FILES_GOG="$CONTENT_LIBS_BIN32_FILES_OLD" APP_MAIN_EXE_BIN64='LittleInferno.bin.x86_64' APP_MAIN_EXE_BIN32='LittleInferno.bin.x86' APP_MAIN_ICON='icon.png' APP_MAIN_ICONS_LIST_HUMBLE_0='APP_MAIN_ICON_HUMBLE_16 APP_MAIN_ICON_HUMBLE_32 APP_MAIN_ICON_HUMBLE_64 APP_MAIN_ICON_HUMBLE_128' APP_MAIN_ICON_HUMBLE_16='../../usr/share/icons/hicolor/16x16/apps/little-inferno.png' APP_MAIN_ICON_HUMBLE_32='../../usr/share/icons/hicolor/32x32/apps/little-inferno.png' APP_MAIN_ICON_HUMBLE_64='../../usr/share/icons/hicolor/64x64/apps/little-inferno.png' APP_MAIN_ICON_HUMBLE_128='../../usr/share/icons/hicolor/128x128/apps/little-inferno.png' APP_MAIN_ICONS_LIST_GOG='APP_MAIN_ICON_GOG' APP_MAIN_ICON_GOG='../support/icon.png' PACKAGES_LIST=' PKG_BIN32 PKG_BIN64 PKG_DATA' PACKAGES_LIST_HUMBLE_0=' PKG_BIN32 PKG_DATA' PACKAGES_LIST_GOG=' 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 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6' PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN_DEPENDENCIES_LIBRARIES_OLD=' libc.so.6 libcurl.so.4 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libstdc++.so.6 libvorbis.so.0 libX11.so.6' ## Include shipped libvorbis.so.0 for game build 1.x, the game segfaults when using a system-provided library instead. PKG_BIN_DEPENDENCIES_LIBRARIES_OLD="${PKG_BIN_DEPENDENCIES_LIBRARIES_OLD:-} libc.so.6 libm.so.6 libogg.so.0" PKG_BIN32_DEPENDENCIES_LIBRARIES_HUMBLE_0="$PKG_BIN_DEPENDENCIES_LIBRARIES_OLD" PKG_BIN32_DEPENDENCIES_LIBRARIES_GOG="$PKG_BIN_DEPENDENCIES_LIBRARIES_OLD" 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 . "$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_0'|'ARCHIVE_BASE_GOG_'*) ## Old 1.x builds provide a 32-bit binary only. launchers_generation 'PKG_BIN32' ;; (*) 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-loop-hero.sh0000755000000000000000000000733614471751340014075 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Loop Hero ### script_version=20240605.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='loop-hero' GAME_NAME='Loop Hero' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" # Archives ## Full game (gog.com) ARCHIVE_BASE_2_NAME='loop_hero_1_1054_55873.sh' ARCHIVE_BASE_2_MD5='28197c34cb00548770b6878f95f69b89' ARCHIVE_BASE_2_SIZE='220000' ARCHIVE_BASE_2_VERSION='1.1054-gog55873' ARCHIVE_BASE_2_URL='https://www.gog.com/game/loop_hero' ARCHIVE_BASE_1_NAME='loop_hero_1_105_50560.sh' ARCHIVE_BASE_1_MD5='7ce0680d3dc6d945b0db0e3719addb21' ARCHIVE_BASE_1_SIZE='160000' ARCHIVE_BASE_1_VERSION='1.105-gog50560' ARCHIVE_BASE_0_NAME='loop_hero_1_102_48813.sh' ARCHIVE_BASE_0_MD5='fc860d85d59d02360d2d6aeb57cc8538' ARCHIVE_BASE_0_SIZE='160000' ARCHIVE_BASE_0_VERSION='1.102-gog48813' ## Demo (itch.io) ARCHIVE_BASE_DEMO_0_NAME='LooPatHerO_demo_linux.zip' ARCHIVE_BASE_DEMO_0_MD5='8698b73828300da7a519b026cd85d4aa' ARCHIVE_BASE_DEMO_0_SIZE='23000' ARCHIVE_BASE_DEMO_0_VERSION='1.0-itch1' ARCHIVE_BASE_DEMO_0_URL='https://fourquarters.itch.io/loopathero-demo' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_PATH_DEFAULT_DEMO='.' CONTENT_GAME_BIN_FILES=' Loop_Hero' CONTENT_GAME_BIN_FILES_DEMO=' LooPatHerO' CONTENT_GAME_DATA_FILES=' assets/*.dat assets/*.ini assets/*.png assets/*.unx assets/fonts assets/local' APP_MAIN_EXE='Loop_Hero' ## The demo crashes on launch. ## Thread 1 "LooPatHerO" received signal SIGFPE, Arithmetic exception. ## gdb trace: ## #0 0x000000000064bf80 in ?? () ## #1 0x000000000064be69 in ?? () ## #2 0x000000000064b80f in ?? () ## #3 0x000000000072db2e in ?? () ## #4 0x0000000000744415 in ?? () ## #5 0x00000000005ad6da in ?? () ## #6 0x00007ffff6efcc8a in __libc_start_call_main (main=main@entry=0x5acfc0, argc=argc@entry=1, argv=argv@entry=0x7fffffffde38) at ../sysdeps/nptl/libc_start_call_main.h:58 ## #7 0x00007ffff6efcd45 in __libc_start_main_impl (main=0x5acfc0, argc=1, argv=0x7fffffffde38, init=, fini=, rtld_fini=, stack_end=0x7fffffffde28) at ../csu/libc-start.c:360 ## #8 0x00000000004098ea in ?? () APP_MAIN_EXE_DEMO='LooPatHerO' APP_MAIN_ICON='assets/icon.png' ## Work around broken support for non-US locales. APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # Work around broken support for non-US locales export LANG=C' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ID="$GAME_ID" PKG_BIN_ID_DEMO="$GAME_ID_DEMO" PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl.so.4 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libssl.so.1.1 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_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 . "$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-mask-of-the-rose-expansions.sh0000755000000000000000000000510014471751340017422 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Mask of the Rose expansions: # - The Murder Crow ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='mask-of-the-rose' GAME_NAME='Mask of the Rose' EXPANSION_ID_CROW='murder-crow' EXPANSION_NAME_CROW='The Murder Crow' # Archives ## The Murder Crow ARCHIVE_BASE_CROW_5_NAME='mask_of_the_rose_the_murder_crow_1_6_1043_linux_70837.sh' ARCHIVE_BASE_CROW_5_MD5='1e492aad8f1b246055c485c924fb607b' ARCHIVE_BASE_CROW_5_SIZE='999' ARCHIVE_BASE_CROW_5_VERSION='1.6.1043-gog70837' ARCHIVE_BASE_CROW_4_NAME='mask_of_the_rose_the_murder_crow_1_6_1024_linux_70649.sh' ARCHIVE_BASE_CROW_4_MD5='f6b9cd36e7c57a775170d6953eeff7e2' ARCHIVE_BASE_CROW_4_SIZE='999' ARCHIVE_BASE_CROW_4_VERSION='1.6.1024-gog70649' ARCHIVE_BASE_CROW_3_NAME='mask_of_the_rose_the_murder_crow_1_5_943_linux_68850.sh' ARCHIVE_BASE_CROW_3_MD5='d528ab03cbfb76463b5c49774de1be0e' ARCHIVE_BASE_CROW_3_SIZE='1300' ARCHIVE_BASE_CROW_3_VERSION='1.5.943-gog68850' ARCHIVE_BASE_CROW_2_NAME='mask_of_the_rose_the_murder_crow_1_4_835_linux_66472.sh' ARCHIVE_BASE_CROW_2_MD5='1141e6eb61e618486cfe01d78bc2db90' ARCHIVE_BASE_CROW_2_SIZE='1300' ARCHIVE_BASE_CROW_2_VERSION='1.4.835-gog66472' ARCHIVE_BASE_CROW_1_NAME='mask_of_the_rose_the_murder_crow_1_3_765_linux_65488.sh' ARCHIVE_BASE_CROW_1_MD5='93ea92a56956663cd42b66ea9b04820a' ARCHIVE_BASE_CROW_1_SIZE='1300' ARCHIVE_BASE_CROW_1_VERSION='1.3.765-gog65488' ARCHIVE_BASE_CROW_0_NAME='mask_of_the_rose_the_murder_crow_1_2_666_linux_65143.sh' ARCHIVE_BASE_CROW_0_MD5='43b3b6e5025d8b2521f4d72c337aff3c' ARCHIVE_BASE_CROW_0_SIZE='1300' ARCHIVE_BASE_CROW_0_VERSION='1.2.666-gog65143' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' goggame-1879903382.info' PKG_MAIN_DEPS="$GAME_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-mask-of-the-rose.sh0000755000000000000000000000621714471751340015247 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Mask of the Rose ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='mask-of-the-rose' GAME_NAME='Mask of the Rose' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" # Archives ## Full game ARCHIVE_BASE_5_NAME='mask_of_the_rose_1_6_1043_linux_70837.sh' ARCHIVE_BASE_5_MD5='f7fc5f6adb0621cc0c3560658de3f372' ARCHIVE_BASE_5_SIZE='2674740' ARCHIVE_BASE_5_VERSION='1.6.1043-gog70837' ARCHIVE_BASE_5_URL='https://www.gog.com/game/mask_of_the_rose' ARCHIVE_BASE_4_NAME='mask_of_the_rose_1_6_1024_linux_70649.sh' ARCHIVE_BASE_4_MD5='6342815fe4de7b9e2998d6563e27ec6f' ARCHIVE_BASE_4_SIZE='2674723' ARCHIVE_BASE_4_VERSION='1.6.1024-gog70649' ARCHIVE_BASE_3_NAME='mask_of_the_rose_1_5_943_linux_68850.sh' ARCHIVE_BASE_3_MD5='950ad3b9a759c4c21fd31b155cb85f2c' ARCHIVE_BASE_3_SIZE='2676548' ARCHIVE_BASE_3_VERSION='1.5.943-gog68850' ARCHIVE_BASE_2_NAME='mask_of_the_rose_1_4_835_linux_66472.sh' ARCHIVE_BASE_2_MD5='2b132223cfe6558d100b1edc410be00a' ARCHIVE_BASE_2_SIZE='2700000' ARCHIVE_BASE_2_VERSION='1.4.835-gog66472' ARCHIVE_BASE_1_NAME='mask_of_the_rose_1_3_765_linux_65488.sh' ARCHIVE_BASE_1_MD5='d793ec177ee72e9ea04c025775896842' ARCHIVE_BASE_1_SIZE='2700000' ARCHIVE_BASE_1_VERSION='1.3.765-gog65488' ARCHIVE_BASE_0_NAME='mask_of_the_rose_1_2_666_linux_65143.sh' ARCHIVE_BASE_0_MD5='5c9b396ead2343237ff588f9ad784cff' ARCHIVE_BASE_0_SIZE='2700000' ARCHIVE_BASE_0_VERSION='1.2.666-gog65143' ## Demo ## This game demo is no longer available from GOG. ARCHIVE_BASE_DEMO_0_NAME='mask_of_the_rose_demo_0_1_94_56552.sh' ARCHIVE_BASE_DEMO_0_MD5='81da92a188178423523e0d1f1251e094' ARCHIVE_BASE_DEMO_0_SIZE='1500000' ARCHIVE_BASE_DEMO_0_VERSION='0.1.94-gog56552' UNITY3D_NAME='Mask of the Rose' UNITY3D_NAME_DEMO='Mask of the Rose Demo' UNITY3D_PLUGINS=' lib_burst_generated.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPS_DEMO="$PKG_DATA_ID_DEMO" 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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-monkey-island-3.sh0000755000000000000000000000701414471751340015074 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Monkey Island 3 ### script_version=20240528.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='monkey-island-3' GAME_NAME='Monkey Island 3: The Curse of Monkey Island' ARCHIVE_BASE_EN_1_NAME='setup_the_curse_of_monkey_islandtm_1.0l_(20628).exe' ARCHIVE_BASE_EN_1_MD5='fcd4a7cd9c0304c15a0a059f6eb299e8' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_PART1_NAME='setup_the_curse_of_monkey_islandtm_1.0l_(20628)-1.bin' ARCHIVE_BASE_EN_1_PART1_MD5='931e6e35fdc7e0a14f2559984620f8f3' ARCHIVE_BASE_EN_1_SIZE='1200000' ARCHIVE_BASE_EN_1_VERSION='1.0l-gog20628' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/the_curse_of_monkey_island' ARCHIVE_BASE_FR_1_NAME='setup_the_curse_of_monkey_islandtm_1.0l_(french)_(20628).exe' ARCHIVE_BASE_FR_1_MD5='a0ebaa26154de4a76d20b0ef882445cf' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_PART1_NAME='setup_the_curse_of_monkey_islandtm_1.0l_(french)_(20628)-1.bin' ARCHIVE_BASE_FR_1_PART1_MD5='10356610b119b917dbba13df9ed207a5' ARCHIVE_BASE_FR_1_SIZE='1200000' ARCHIVE_BASE_FR_1_VERSION='1.0l-gog20628' ARCHIVE_BASE_FR_1_URL='https://www.gog.com/game/the_curse_of_monkey_island' ARCHIVE_BASE_EN_0_NAME='setup_the_curse_of_monkey_island_1.0_(18253).exe' ARCHIVE_BASE_EN_0_MD5='20c74e5f60bd724182ec2bdbae6d9a49' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='1200000' ARCHIVE_BASE_EN_0_VERSION='1.0-gog18253' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_EN_0='app' CONTENT_GAME_L10N_FILES=' resource/bbsan.san resource/curserng.san resource/finale.san resource/language.tab resource/lavaride.san resource/liftcrse.san resource/moreslaw.san resource/newboots.san resource/opening.san resource/sinkshp.san resource/voxdisk1.bun resource/voxdisk2.bun resource/wrecksan.san' CONTENT_GAME_MAIN_FILES=' comi.la? resource' CONTENT_DOC_L10N_FILES=' *.pdf' APP_MAIN_SCUMMID='scumm:comi' APP_MAIN_ICON='app/goggame-1528148981.ico' PACKAGES_LIST=' PKG_L10N PKG_MAIN' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_MAIN_DEPS="$PKG_L10N_ID" # Work around "insufficient image data" issue with convert from imagemagick SCRIPT_DEPS="${SCRIPT_DEPS:-} icotool" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data ## Work around "insufficient image data" issue with convert from imagemagick. icon_extract_png_from_ico() { local icon destination icon="$1" destination="$2" local icon_file icon_file=$(icon_full_path "$icon") icotool --extract --output="$destination" "$icon_file" 2>/dev/null } content_inclusion_icons 'PKG_MAIN' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-monkey-island-4.sh0000755000000000000000000001425414471751340015101 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 macaron set -o errexit ### # Monkey Island 4 ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='monkey-island-4' GAME_NAME='Monkey Island 4: Escape from Monkey Island' # Archives ## Monkey Island 4 (game installer) ARCHIVE_BASE_EN_0_NAME='setup_escape_from_monkey_islandtm_1.1_(20987).exe' ARCHIVE_BASE_EN_0_MD5='54978965b60294d5c1639b71c0a8159a' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_escape_from_monkey_islandtm_1.1_(20987)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='21bc4e362f73b76e6808649167ee9d20' ARCHIVE_BASE_EN_0_SIZE='1300000' ARCHIVE_BASE_EN_0_VERSION='1.1-gog20987' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/escape_from_monkey_island' ARCHIVE_BASE_FR_0_NAME='setup_escape_from_monkey_islandtm_1.1_(french)_(20987).exe' ARCHIVE_BASE_FR_0_MD5='5ca039d42d53ad7fe206b289abe15deb' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_PART1_NAME='setup_escape_from_monkey_islandtm_1.1_(french)_(20987)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='c5bf233f09cca2a8e33d78d25cf58329' ARCHIVE_BASE_FR_0_SIZE='1300000' ARCHIVE_BASE_FR_0_VERSION='1.1-gog20987' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/escape_from_monkey_island' ## ScummVM patches ARCHIVE_REQUIRED_PATCH_EN_NAME='MonkeyUpdate.exe' ARCHIVE_REQUIRED_PATCH_EN_MD5='7c7dbd2349d49e382a2dea40bed448e0' ARCHIVE_REQUIRED_PATCH_EN_URL='https://downloads.scummvm.org/frs/extras/patches/' ARCHIVE_REQUIRED_PATCH_FR_NAME='MonkeyUpdate_FRA.exe' ARCHIVE_REQUIRED_PATCH_FR_MD5='cc5ff3bb8f78a0eb4b8e0feb9cdd2e87' ARCHIVE_REQUIRED_PATCH_FR_URL='https://downloads.scummvm.org/frs/extras/patches/' # Archives content CONTENT_PATH_DEFAULT='.' CONTENT_GAME_L10N_FILES=' movies art???.m4b i9n.m4b lip.m4b voice???.m4b' CONTENT_GAME_DATA_FILES=' textures local.m4b patch.m4b sfx.m4b' CONTENT_DOC_L10N_FILES=' *.pdf *.txt' ## WINE CONTENT_GAME_BIN_WINE_FILES=' *.asi *.dll *.exe *.flt' CONTENT_GAME0_BIN_WINE_PATH='__support/save' CONTENT_GAME0_BIN_WINE_FILES=' saves' # Launchers ## ScummVM APP_SCUMMVM_SCUMMID='grim:monkey4' APP_SCUMMVM_ICON='monkey4.exe' ## WINE USER_PERSISTENT_DIRECTORIES=' saves' WINE_VIRTUAL_DESKTOP='auto' APP_WINE_EXE='monkey4.exe' # Packages PACKAGES_LIST=' PKG_BIN_SCUMMVM PKG_BIN_WINE PKG_L10N PKG_DATA' PKG_BIN_BASE_ID="$GAME_ID" PKG_BIN_PROVIDES=" $PKG_BIN_BASE_ID" ## A dependency on the language-specific variant of the localization package is set, ## not on the common name provided by both variants of this package. PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' ## ScummVM PKG_BIN_SCUMMVM_BASE_ID="${PKG_BIN_BASE_ID}-scummvm" PKG_BIN_SCUMMVM_ID_EN="${PKG_BIN_SCUMMVM_BASE_ID}-en" PKG_BIN_SCUMMVM_ID_FR="${PKG_BIN_SCUMMVM_BASE_ID}-fr" PKG_BIN_SCUMMVM_PROVIDES="$PKG_BIN_BASE_PROVIDES" PKG_BIN_SCUMMVM_DESCRIPTION_EN='English version' PKG_BIN_SCUMMVM_DESCRIPTION_FR='French version' PKG_BIN_SCUMMVM_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" ## WINE PKG_BIN_WINE_ARCH='32' PKG_BIN_WINE_BASE_ID="${PKG_BIN_BASE_ID}-wine" PKG_BIN_WINE_ID_EN="${PKG_BIN_WINE_BASE_ID}-en" PKG_BIN_WINE_ID_FR="${PKG_BIN_WINE_BASE_ID}-fr" PKG_BIN_WINE_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_WINE_DESCRIPTION_EN='English version' PKG_BIN_WINE_DESCRIPTION_FR='French version' PKG_BIN_WINE_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" # WINE - Register install path install_path="C:\\\\${GAME_ID}" registry_dump_installpath_file='registry-dumps/install-path.reg' registry_dump_installpath_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\LucasArts Entertainment Company LLC\Monkey4\Retail] "Install path"="'"${install_path}"'"' CONTENT_GAME_BIN_WINE_FILES="${CONTENT_GAME_BIN_WINE_FILES:-} $registry_dump_installpath_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_installpath_file" SCRIPT_DEPS="${SCRIPT_DEPS:-} iconv" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Check for the presence of required extra archives case "$(current_archive)" in ('ARCHIVE_BASE_EN_'*) archive_initialize_required \ 'ARCHIVE_PATCH' \ 'ARCHIVE_REQUIRED_PATCH_EN' ;; ('ARCHIVE_BASE_FR_'*) archive_initialize_required \ 'ARCHIVE_PATCH' \ 'ARCHIVE_REQUIRED_PATCH_FR' ;; esac # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Delete unwanted files. ## TODO: Check if this can be dropped in favour of a more explicit list of files to include. rm --force --recursive \ '__redist' \ 'commonappdata' \ 'install' \ 'tmp' ## WINE - Register install path. mkdir --parents "$(dirname "$registry_dump_installpath_file")" printf '%s' "$registry_dump_installpath_content" | \ iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_installpath_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## ScummVM - Include required patch. install -D --mode=644 \ "$(archive_path 'ARCHIVE_PATCH')" \ "$(package_path 'PKG_BIN_SCUMMVM')$(path_game_data)/$(archive_name 'ARCHIVE_PATCH')" # Write launchers launchers_generation 'PKG_BIN_SCUMMVM' 'APP_SCUMMVM' launchers_generation 'PKG_BIN_WINE' 'APP_WINE' # Build packages packages_generation printf '\n' printf 'ScummVM:' print_instructions 'PKG_DATA' 'PKG_L10N' 'PKG_BIN_SCUMMVM' printf 'WINE:' print_instructions 'PKG_DATA' 'PKG_L10N' 'PKG_BIN_WINE' # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-monkey-island-special-edition.sh0000755000000000000000000000725214471751340020007 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 macaron # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Monkey Island Special Edition: # - Monkey Island 1 # - Monkey Island 2 ### script_version=20240531.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID_MONKEY1='monkey-island-1-special-edition' GAME_NAME_MONKEY1='Monkey Island 1 Special Edition: The Secret of Monkey Island' GAME_ID_MONKEY2='monkey-island-2-special-edition' GAME_NAME_MONKEY2='Monkey Island 2 Special Edition: LeChuckʼs Revenge' # Archives ## Monkey Island 1 ARCHIVE_BASE_MONKEY1_0_NAME='setup_monkey_island_1_se_1.0_(18587).exe' ARCHIVE_BASE_MONKEY1_0_TYPE='innosetup' ARCHIVE_BASE_MONKEY1_0_MD5='ff2eaa21af8f59371583b007b439b873' ARCHIVE_BASE_MONKEY1_0_PART1_NAME='setup_monkey_island_1_se_1.0_(18587)-1.bin' ARCHIVE_BASE_MONKEY1_0_PART1_MD5='6a3ca78328b99ae0d9d0a3d7a4fb3cd9' ARCHIVE_BASE_MONKEY1_0_SIZE='2600000' ARCHIVE_BASE_MONKEY1_0_VERSION='1.0-gog18587' ARCHIVE_BASE_MONKEY1_0_URL='https://www.gog.com/game/the_secret_of_monkey_island_special_edition' ## Monkey Island 2 ARCHIVE_BASE_MONKEY2_0_NAME='setup_monkey_island2_se_2.0.0.10.exe' ARCHIVE_BASE_MONKEY2_0_MD5='20a0bc39dcf543856f0d463649c482c4' ARCHIVE_BASE_MONKEY2_0_TYPE='innosetup' ARCHIVE_BASE_MONKEY2_0_SIZE='2300000' ARCHIVE_BASE_MONKEY2_0_VERSION='1.0-gog2.0.0.10' ARCHIVE_BASE_MONKEY2_0_URL='https://www.gog.com/game/monkey_island_2_special_edition_lechucks_revenge' # Archive contents CONTENT_PATH_DEFAULT='app' ## Monkey Island 1 CONTENT_GAME_BIN_FILES_MONKEY1=' mise.exe' CONTENT_GAME_DATA_FILES_MONKEY1=' audio localization monkey1.pak' CONTENT_DOC_DATA_FILES_MONKEY1=' *.pdf' ## Monkey Island 2 CONTENT_GAME_BIN_FILES_MONKEY2=' monkey2.exe lang.ini' CONTENT_GAME_DATA_FILES_MONKEY2=' audio ui monkey2.pak' USER_PERSISTENT_FILES_MONKEY2=' monkey2.bin' WINE_PERSISTENT_DIRECTORIES_MONKEY1=' users/${USER}/AppData/Roaming/LucasArts/The Secret of Monkey Island Special Edition' WINE_PERSISTENT_DIRECTORIES_MONKEY2=' users/${USER}/AppData/Roaming/LucasArts/Monkey Island 2 Special Edition' ## Native d3dcompiler_47 is required to prevent a crash on launch: ## 0024:err:d3dcompiler:D3DCompile2 Failed to compile shader, vkd3d result -4. ## 0024:err:d3dcompiler:D3DCompile2 Shader log: ## 0024:err:d3dcompiler:D3DCompile2 :7:1: E5000: syntax error, unexpected KW_SAMPLER_STATE ## 0024:err:d3dcompiler:D3DCompile2 WINE_WINETRICKS_VERBS='d3dcompiler_47' APP_MAIN_EXE_MONKEY1='mise.exe' APP_MAIN_EXE_MONKEY2='monkey2.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID_MONKEY1="${GAME_ID_MONKEY1}-data" PKG_DATA_ID_MONKEY2="${GAME_ID_MONKEY2}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS_MONKEY1="$PKG_DATA_ID_MONKEY1" PKG_BIN_DEPS_MONKEY2="$PKG_DATA_ID_MONKEY2" PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' audioconvert audio/x-wma, wmaversion=(int)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 . "$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-myst.sh0000755000000000000000000002150514471751340013157 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2020 Fabien Givors set -o errexit ### # Myst series: # - Myst (Masterpiece Edition) # - realMyst: Masterpiece Edition # - Riven: The Sequel to Myst # - Myst 3: Exile ### script_version=20240627.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID_MYST1='myst-1' GAME_NAME_MYST1='Myst' GAME_ID_REALMYSTME='myst-1-realmyst-masterpiece-edition' GAME_NAME_REALMYSTME='realMyst: Masterpiece Edition' GAME_ID_RIVEN='myst-2-riven' GAME_NAME_RIVEN='Riven: The Sequel to Myst' GAME_ID_EXILE='myst-3-exile' GAME_NAME_EXILE='Myst Ⅲ: Exile' # Archives ## Myst (Masterpiece Edition) ARCHIVE_BASE_MYST1_1_NAME='setup_myst_masterpiece_edition_1.0_svm_update_4_(22598).exe' ARCHIVE_BASE_MYST1_1_MD5='e3c62eeb19abd2c9a947aee8300e995d' ARCHIVE_BASE_MYST1_1_TYPE='innosetup' ARCHIVE_BASE_MYST1_1_PART1_NAME='setup_myst_masterpiece_edition_1.0_svm_update_4_(22598)-1.bin' ARCHIVE_BASE_MYST1_1_PART1_MD5='4b84a68ec57e55bcc9b522c6333c669c' ARCHIVE_BASE_MYST1_1_SIZE='1500000' ARCHIVE_BASE_MYST1_1_VERSION='1.0.4-gog22598' ARCHIVE_BASE_MYST1_1_URL='https://www.gog.com/game/myst_masterpiece_edition' ARCHIVE_BASE_MYST1_0_NAME='setup_myst_masterpiece_2.0.0.22.exe' ARCHIVE_BASE_MYST1_0_MD5='e7a979dc6ca044eaec2984877ac032c5' ARCHIVE_BASE_MYST1_0_TYPE='innosetup' ARCHIVE_BASE_MYST1_0_SIZE='620000' ARCHIVE_BASE_MYST1_0_VERSION='1.0-gog2.0.0.22' ## realMyst: Masterpiece Edition ARCHIVE_BASE_REALMYSTME_0_NAME='setup_real_myst_masterpiece_edition_2.2_rev_10535_(64bit)_(23829).exe' ARCHIVE_BASE_REALMYSTME_0_MD5='fcb23e0256ab826e9a2ba9cad00d9a66' ARCHIVE_BASE_REALMYSTME_0_TYPE='innosetup' ARCHIVE_BASE_REALMYSTME_0_PART1_NAME='setup_real_myst_masterpiece_edition_2.2_rev_10535_(64bit)_(23829)-1.bin' ARCHIVE_BASE_REALMYSTME_0_PART1_MD5='038b24ec51a18b325574293d7f2d0ec2' ARCHIVE_BASE_REALMYSTME_0_VERSION='2.2.10535-gog23829' ARCHIVE_BASE_REALMYSTME_0_SIZE='2800000' ARCHIVE_BASE_REALMYSTME_0_URL='https://www.gog.com/game/real_myst_masterpiece_edition' ## Riven: The Sequel to Myst ARCHIVE_BASE_RIVEN_1_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_no_launcher_(55114).exe' ARCHIVE_BASE_RIVEN_1_MD5='879b8aaa724f4f422661634186ee2534' ARCHIVE_BASE_RIVEN_1_TYPE='innosetup' ARCHIVE_BASE_RIVEN_1_PART1_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_no_launcher_(55114)-1.bin' ARCHIVE_BASE_RIVEN_1_PART1_MD5='dd91f1256d819d6f26d9d0bcaa81548f' ARCHIVE_BASE_RIVEN_1_PART2_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_no_launcher_(55114)-2.bin' ARCHIVE_BASE_RIVEN_1_PART2_MD5='2d03d82b784666472e1a3f436ed20924' ARCHIVE_BASE_RIVEN_1_SIZE='6947081' ARCHIVE_BASE_RIVEN_1_VERSION='1.2-gog55114' ARCHIVE_BASE_RIVEN_1_URL='https://www.gog.com/game/riven_the_sequel_to_myst' ARCHIVE_BASE_RIVEN_0_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_update3_(22594).exe' ARCHIVE_BASE_RIVEN_0_MD5='0520fac1f2ae966aa5c490850b51930f' ARCHIVE_BASE_RIVEN_0_TYPE='innosetup' ARCHIVE_BASE_RIVEN_0_PART1_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_update3_(22594)-1.bin' ARCHIVE_BASE_RIVEN_0_PART1_MD5='4ee339ad50203020e717a78ff95bb590' ARCHIVE_BASE_RIVEN_0_PART2_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_update3_(22594)-2.bin' ARCHIVE_BASE_RIVEN_0_PART2_MD5='2ff2d7d25f2e8c2995c17d8b122d672c' ARCHIVE_BASE_RIVEN_0_SIZE='6954413' ARCHIVE_BASE_RIVEN_0_VERSION='1.2-gog22594' ## Myst 3: Exile ARCHIVE_BASE_EXILE_0_NAME='setup_myst_3_exile_1.27_rvm_(21807).exe' ARCHIVE_BASE_EXILE_0_MD5='e2b8e962326b8802009d3e30b9e4c8ff' ARCHIVE_BASE_EXILE_0_TYPE='innosetup' ARCHIVE_BASE_EXILE_0_PART1_NAME='setup_myst_3_exile_1.27_rvm_(21807)-1.bin' ARCHIVE_BASE_EXILE_0_PART1_MD5='c69e2780274f2830ab210d230889e5bb' ARCHIVE_BASE_EXILE_0_SIZE='2422163' ARCHIVE_BASE_EXILE_0_VERSION='1.27-gog21807' ARCHIVE_BASE_EXILE_0_URL='https://www.gog.com/game/myst_3_exile' # Archives content CONTENT_PATH_DEFAULT='.' ## Myst (Masterpiece Edition) CONTENT_PATH_DEFAULT_MYST1_0='app' CONTENT_GAME_MAIN_FILES_MYST1=' qtw channel.dat credits.dat dunny.dat help.dat intro.dat mechan.dat menu.dat myst.dat selen.dat stone.dat' CONTENT_DOC_MAIN_FILES_MYST1=' manual.pdf readme.txt' ## realMyst: Masterpiece Edition UNITY3D_NAME_REALMYSTME='realmyst' ## Riven: The Sequel to Myst ## TODO: System-provided fonts should be used instead, ScummVM expects to find them in the game directory. CONTENT_FONTS_DATA_FILES_RIVEN=' freesans.ttf mplus-2c-regular.ttf' CONTENT_GAME_DATA_FILES_RIVEN=' riven.exe a_data.mhk b_data.mhk b2_data.mhk g_data.mhk j_data1.mhk j_data2.mhk o_data.mhk p_data.mhk r_data.mhk t_data1.mhk t_data2.mhk a_sounds.mhk b_sounds.mhk g_sounds.mhk j_sounds.mhk o_sounds.mhk p_sounds.mhk r_sounds.mhk t_sounds.mhk extras.mhk' ## The following localization files must be included, or ScummVM fails to detect the correct game version. CONTENT_GAME0_DATA_FILES_RIVEN=' a_data_french.mhk a_data_german.mhk a_data_italian.mhk a_data_japanese.mhk a_data_polish.mhk a_data_russian.mhk a_data_spanish.mhk' CONTENT_GAME_BIN_FR_FILES_RIVEN=' b_data_french.mhk j_data_french.mhk o_data_french.mhk p_data_french.mhk r_data_french.mhk t_data_french.mhk' CONTENT_DOC_DATA_FILES_RIVEN=' manual.pdf readme.txt' ## Myst 3: Exile CONTENT_GAME_MAIN_FILES_EXILE=' data m3data' CONTENT_DOC_MAIN_FILES_EXILE=' manual.pdf' WINE_PERSISTENT_DIRECTORIES_REALMYSTME=' users/${USER}/AppData/LocalLow/Cyan Worlds/realMyst' APP_MAIN_SCUMMID_MYST1='mohawk:myst' APP_MAIN_SCUMMID_RIVEN='mohawk:riven' APP_MAIN_SCUMMID_EXILE='myst3:myst3' APP_MAIN_ICON_MYST1='app/goggame-1207658818.ico' APP_MAIN_ICON_MYST1_0='myst.exe' APP_MAIN_ICON_RIVEN='app/goggame-1207658819.ico' APP_MAIN_ICON_EXILE='app/goggame-1766899243.ico' APP_MAIN_OPTIONS_BIN_EN_RIVEN='--language=en' APP_MAIN_OPTIONS_BIN_FR_RIVEN='--language=fr' # Packages ## realMyst: Masterpiece Edition PACKAGES_LIST_REALMYSTME=' PKG_BIN PKG_DATA' PKG_DATA_ID_REALMYSTME="${GAME_ID_REALMYSTME}-data" PKG_DATA_DESCRIPTION_REALMYSTME='data' PKG_BIN_ARCH_REALMYSTME='64' PKG_BIN_DEPS_REALMYSTME="$PKG_DATA_ID_REALMYSTME" ## Riven: The Sequel to Myst PACKAGES_LIST_RIVEN=' PKG_BIN_EN PKG_BIN_FR PKG_DATA' PKG_BIN_ID_RIVEN="$GAME_ID_RIVEN" PKG_BIN_EN_ID_RIVEN="${PKG_BIN_ID_RIVEN}-en" PKG_BIN_FR_ID_RIVEN="${PKG_BIN_ID_RIVEN}-fr" PKG_BIN_PROVIDES_RIVEN=" $PKG_BIN_ID_RIVEN" PKG_BIN_EN_PROVIDES_RIVEN="$PKG_BIN_PROVIDES_RIVEN" PKG_BIN_FR_PROVIDES_RIVEN="$PKG_BIN_PROVIDES_RIVEN" PKG_BIN_EN_DESCRIPTION_RIVEN='English localization' PKG_BIN_EN_DESCRIPTION_RIVEN='French localization' PKG_DATA_ID_RIVEN="${GAME_ID_RIVEN}-data" PKG_DATA_DESCRIPTION_RIVEN='Common data' PKG_BIN_DEPS_RIVEN="${PKG_BIN_DEPS_RIVEN:-} $PKG_DATA_ID_RIVEN" PKG_BIN_EN_DEPS_RIVEN="$PKG_BIN_DEPS_RIVEN" PKG_BIN_FR_DEPS_RIVEN="$PKG_BIN_DEPS_RIVEN" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data case "$(current_archive)" in ('ARCHIVE_BASE_REALMYSTME_'*|'ARCHIVE_BASE_RIVEN_'*) content_inclusion_icons 'PKG_DATA' ;; (*) content_inclusion_icons ;; esac content_inclusion_default ## Riven - Link the fonts in the hardcoded path the game engine expects. case "$(current_archive)" in ('ARCHIVE_BASE_RIVEN_'*) fonts_source=$(path_fonts_ttf) fonts_destination="$(package_path 'PKG_DATA')$(path_game_data)" mkdir --parents "$fonts_destination" for font_file in \ 'freesans.ttf' \ 'mplus-2c-regular.ttf' do ln --symbolic "${fonts_source}/${font_file}" "$fonts_destination" done ;; esac # Write launchers case "$(current_archive)" in ('ARCHIVE_BASE_REALMYSTME_'*) launchers_generation 'PKG_BIN' ;; ('ARCHIVE_BASE_RIVEN_'*) APP_MAIN_OPTIONS_BIN_EN=$(context_value 'APP_MAIN_OPTIONS_BIN_EN') APP_MAIN_OPTIONS_BIN_FR=$(context_value 'APP_MAIN_OPTIONS_BIN_FR') launchers_generation 'PKG_BIN_EN' launchers_generation 'PKG_BIN_FR' ;; (*) launchers_generation ;; esac # Build packages packages_generation case "$(current_archive)" in ('ARCHIVE_BASE_RIVEN_'*) case "$(messages_language)" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_DATA' 'PKG_BIN_EN' printf "$lang_string" "$lang_fr" print_instructions 'PKG_DATA' 'PKG_BIN_FR' ;; (*) print_instructions ;; esac # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-off-world-resource-base.sh0000755000000000000000000000472514471751340016624 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Off-World Resource Base ### script_version=20240720.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='off-world-resource-base' GAME_NAME='O.R.B.: Off-World Resource Base' ARCHIVE_BASE_0_NAME='setup_orb_2.0.0.5.exe' ARCHIVE_BASE_0_MD5='b1cab44f6fe398ed008dda23e1538c03' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='651435' ARCHIVE_BASE_0_VERSION='1.04-gog2.0.0.5' ARCHIVE_BASE_0_URL='https://www.gog.com/game/orb_offworld_resource_base' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' bobo.dat binkw32.dll c4dll-d.dll dbghelp.dll mss32.dll msvcrtd.dll msvcrt.dll orb.exe orbscenarioeditor.exe orbsetup.exe lensflares.ini netcolors.ini orb.ini orbsetup.ini *.asi *.flt *.m3d' CONTENT_GAME_DATA_FILES=' orbdata cdkey game.positions credits.txt *.bmp *.flg *.sup' CONTENT_DOC_DATA_FILES=' readme.txt scen_eula.txt *.pdf' ## The intro video and game menu fail to render unless a virtual desktop is used (WINE 9.0). WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='orb.exe' APP_EDITOR_ID="${GAME_ID}-editor" APP_EDITOR_NAME="$GAME_NAME - Scenario editor" APP_EDITOR_EXE='orbscenarioeditor.exe' APP_SETUP_ID="${GAME_ID}-setup" APP_SETUP_NAME="$GAME_NAME - Settings" APP_SETUP_CAT='Settings' APP_SETUP_EXE='orbsetup.exe' USER_PERSISTENT_DIRECTORIES=' orbdata/players orbdata/scenarios' USER_PERSISTENT_FILES=' orb.ini orbdata/frontend/players.dat orbdata/language/current.lang' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-oil-rush.sh0000755000000000000000000001041614471751340013724 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Oil Rush ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='oil-rush' GAME_NAME='Oil Rush' ## This archive used to be provided by Humble Bundle, but it is no longer available for sale. ARCHIVE_BASE_0_NAME='OilRush_1.35_Linux_1370041755.run' ARCHIVE_BASE_0_MD5='5a38d0545a64e0d21ddfe4afc15253a8' ARCHIVE_BASE_0_SIZE='1351677' ARCHIVE_BASE_0_VERSION='1.35-humble1' CONTENT_PATH_DEFAULT='.' CONTENT_LIBS_BIN64_PATH="${CONTENT_PATH_DEFAULT}/bin" CONTENT_LIBS_BIN64_FILES=' libOilRush_x64.so libQtCoreUnigine_x64.so.4 libQtGuiUnigine_x64.so.4 libQtNetworkUnigine_x64.so.4 libQtWebKitUnigine_x64.so.4 libQtXmlUnigine_x64.so.4 libRakNet_x64.so libUnigine_x64.so' CONTENT_LIBS_BIN32_PATH="${CONTENT_PATH_DEFAULT}/bin" CONTENT_LIBS_BIN32_FILES=' libOilRush_x86.so libQtCoreUnigine_x86.so.4 libQtGuiUnigine_x86.so.4 libQtNetworkUnigine_x86.so.4 libQtWebKitUnigine_x86.so.4 libQtXmlUnigine_x86.so.4 libRakNet_x86.so libUnigine_x86.so' CONTENT_GAME_BIN64_FILES=' bin/launcher_x64 bin/OilRush_x64' CONTENT_GAME_BIN32_FILES=' bin/launcher_x86 bin/OilRush_x86' CONTENT_GAME_DATA_FILES=' data oilrush.cfg' CONTENT_DOC_DATA_PATH="${CONTENT_PATH_DEFAULT}/documentation" CONTENT_DOC_DATA_FILES=' user_manual.pdf' USER_PERSISTENT_FILES=' oilrush.cfg data/launcher/launcher*.xml' APP_MAIN_EXE_BIN64='bin/launcher_x64' APP_MAIN_EXE_BIN32='bin/launcher_x86' APP_MAIN_OPTIONS='-config ../data/launcher/launcher.xml' APP_MAIN_ICON='data/launcher/oilrush.png' ## Run the game binary from its parent directory APP_MAIN_PRERUN=' # Run the game binary from its parent directory cd "$(dirname "$APP_EXE")" APP_EXE=$(basename "$APP_EXE") ' 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 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXext.so.6 libXinerama.so.1 libXrandr.so.2 libXrender.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 . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Set the execution bit on the game binaries. chmod 755 'bin/OilRush_x86' 'bin/OilRush_x64' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Copy the real game binary into the game prefix. ## (bin/OilRush_x64 instead of bin/launcher_x64) native_launcher_binary_copy() { cat <<- 'EOF' # Copy the game binary into the user prefix exe_destination="${PATH_PREFIX}/bin/OilRush_x64" if [ -h "$exe_destination" ]; then exe_source=$(realpath "$exe_destination") cp --remove-destination "$exe_source" "$exe_destination" fi unset exe_destination exe_source EOF } launchers_generation 'PKG_BIN64' ## Copy the real game binary into the game prefix. ## (bin/OilRush_x86 instead of bin/launcher_x86) native_launcher_binary_copy() { cat <<- 'EOF' # Copy the game binary into the user prefix exe_destination="${PATH_PREFIX}/bin/OilRush_x86" if [ -h "$exe_destination" ]; then exe_source=$(realpath "$exe_destination") cp --remove-destination "$exe_source" "$exe_destination" fi unset exe_destination exe_source EOF } launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-orwell.sh0000755000000000000000000000737214471751340013475 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Orwell series: # - Orwell # - Orwell: Ignorance is Strength ### script_version=20240628.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID_ORWELL1='orwell-1' GAME_NAME_ORWELL1='Orwell' GAME_ID_ORWELL2='orwell-2' GAME_NAME_ORWELL2='Orwell: Ignorance is Strength' # Archives ## Orwell ARCHIVE_BASE_ORWELL1_2_NAME='orwell_1_4_7424_39231.sh' ARCHIVE_BASE_ORWELL1_2_MD5='8ac1915d9de7532717730b7f33a544b9' ARCHIVE_BASE_ORWELL1_2_SIZE='570000' ARCHIVE_BASE_ORWELL1_2_VERSION='1.4.7424.gog39231' ARCHIVE_BASE_ORWELL1_2_URL='https://www.gog.com/game/orwell' ARCHIVE_BASE_ORWELL1_1_NAME='orwell_en_1_21_21014.sh' ARCHIVE_BASE_ORWELL1_1_MD5='8fcd84cd3989175d1da377c78e1b4ff2' ARCHIVE_BASE_ORWELL1_1_SIZE='360000' ARCHIVE_BASE_ORWELL1_1_VERSION='1.21-gog21014' ARCHIVE_BASE_ORWELL1_0_NAME='gog_orwell_2.0.0.1.sh' ARCHIVE_BASE_ORWELL1_0_MD5='471470546952015fce024bdcb5431a07' ARCHIVE_BASE_ORWELL1_0_SIZE='630000' ARCHIVE_BASE_ORWELL1_0_VERSION='1.1-gog2.0.0.1' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_ORWELL1='orwell-1_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_ORWELL1='acb6711e5f6b26828097b2828f74e522' ARCHIVE_OPTIONAL_ICONS_URL_ORWELL1='https://downloads.dotslashplay.it/games/orwell-1/' CONTENT_ICONS_PATH_ORWELL1='.' CONTENT_ICONS_FILES_ORWELL1=' 128x128' ## Orwell: Ignorance is Strength ARCHIVE_BASE_ORWELL2_1_NAME='orwell_ignorance_is_strength_en_1_1_6771_23686_22333.sh' ARCHIVE_BASE_ORWELL2_1_MD5='a69fb6e02fdce982cb3a56b2b32a70e6' ARCHIVE_BASE_ORWELL2_1_SIZE='730000' ARCHIVE_BASE_ORWELL2_1_VERSION='1.1.6771.23686-gog22333' ARCHIVE_BASE_ORWELL2_1_URL='https://www.gog.com/game/orwell_ignorance_is_strength' ARCHIVE_BASE_ORWELL2_0_NAME='orwell_ignorance_is_strength_en_1_11_21014.sh' ARCHIVE_BASE_ORWELL2_0_MD5='3d50e953ad7029ac9a292bcc9b137426' ARCHIVE_BASE_ORWELL2_0_SIZE='730000' ARCHIVE_BASE_ORWELL2_0_VERSION='1.1.6717.28986-gog21014' UNITY3D_NAME_ORWELL1='Orwell' UNITY3D_NAME_ORWELL2='Ignorance' UNITY3D_PLUGINS_ORWELL1=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_DOC_DATA_FILES=' *.txt' ## Both games use the same path. FAKE_HOME_PERSISTENT_DIRECTORIES=' My Games/Orwell' ## Orwell 1 - The original game icon is not provided by the GOG installer for Orwell 1.4. ## Other archives can use the default icon path for Unity3D games. APP_MAIN_ICON_ORWELL1_2='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID_ORWELL1="${GAME_ID_ORWELL1}-data" PKG_DATA_ID_ORWELL2="${GAME_ID_ORWELL2}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS_ORWELL1="$PKG_DATA_ID_ORWELL1" PKG_BIN_DEPS_ORWELL2="$PKG_DATA_ID_ORWELL2" 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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-painkiller.sh0000755000000000000000000000553614471751340014323 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Painkiller ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' 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_PATH="${CONTENT_PATH_DEFAULT}/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 . "$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-pandora-first-contact.sh0000755000000000000000000000614214471751340016365 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Pandora: First Contact ### script_version=20240504.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='pandora-first-contact' GAME_NAME='Pandora: First Contact' ARCHIVE_BASE_0_NAME='pandora_first_contact_en_1_6_7_16815.sh' ARCHIVE_BASE_0_MD5='0d9343d1693fc561823811a0cd3e279c' ARCHIVE_BASE_0_SIZE='720000' ARCHIVE_BASE_0_VERSION='1.6.7-gog16815' ARCHIVE_BASE_0_URL='https://www.gog.com/game/pandora' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='pandora-first-contact_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='66b1d99166b738b2130449a49b9cd58c' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/resources/pandora-first-contact/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 256x256' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_PATH="${CONTENT_PATH_DEFAULT}/Binaries" CONTENT_LIBS_BIN_FILES=' libavcodec.so.53 libavformat.so.53 libavutil.so.51 libboost_date_time.so.1.58.0 libboost_filesystem.so.1.58.0 libboost_locale.so.1.58.0 libboost_regex.so.1.58.0 libboost_system.so.1.58.0 libboost_thread.so.1.58.0 libGLEW.so.1.6 libjpeg.so.8 libpng15.so.15 libswscale.so.2' CONTENT_GAME_BIN_FILES=' Binaries/Pandora.bin Binaries/PandoraServer.bin' CONTENT_GAME_DATA_FILES=' Data' CONTENT_DOC_DATA_PATH="${CONTENT_PATH_DEFAULT}/Documents" CONTENT_DOC_DATA_FILES=' Dutch English French German Italian Licenses PandoraWebsite.url' APP_MAIN_EXE='Binaries/Pandora.bin' APP_MAIN_ICON='../support/icon.png' ## Run the game binary from its parent directory APP_MAIN_PRERUN='# Run the game binary from its parent directory cd "$(dirname "$APP_EXE")" APP_EXE=$(basename "$APP_EXE") ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libbz2.so.1 libc.so.6 libcurl.so.4 libfreetype.so.6 libgcc_s.so.1 libglfw.so.3 libGL.so.1 libGLU.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libstdc++.so.6 libvorbisfile.so.3 libX11.so.6 libXi.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Set the required execution permissions on the server binary. chmod 755 'Binaries/PandoraServer.bin' ) # 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-pharaoh.sh0000755000000000000000000001210014471751340013574 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Pharaoh ### script_version=20240720.3 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='pharaoh' GAME_NAME='Pharaoh' # Archives ## Pharaoh + Cleopatra ARCHIVE_BASE_0_NAME='setup_pharaoh_gold_2.1.0.15.exe' ARCHIVE_BASE_0_MD5='62298f00f1f2268c8d5004f5b2e9fc93' ## innoextract --lowercase option should not be used, or Akhenaten will fail to find some required files. ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_SIZE='804849' ARCHIVE_BASE_0_VERSION='2.1-gog2.1.0.15' ARCHIVE_BASE_0_URL='https://www.gog.com/game/pharaoh_cleopatra' ## Akhenaten ## cf. https://github.com/dalerank/Akhenaten ### version 784 ARCHIVE_OPTIONAL_AKHENATEN_2_NAME='akhenaten.linux' ARCHIVE_OPTIONAL_AKHENATEN_2_MD5='eebce8cd3a284399d271b1f9e2b02461' ARCHIVE_OPTIONAL_AKHENATEN_2_SIZE='64301' ARCHIVE_OPTIONAL_AKHENATEN_2_URL='https://dalerank.itch.io/akhenaten' ### version 205 ARCHIVE_OPTIONAL_AKHENATEN_1_NAME='akhenaten.linux' ARCHIVE_OPTIONAL_AKHENATEN_1_MD5='cdd40aa1ab541035b1a2c5e02cbe5064' ARCHIVE_OPTIONAL_AKHENATEN_1_SIZE='34006' ### version 108 (still called "Ozyamandias") ARCHIVE_OPTIONAL_AKHENATEN_0_NAME='ozymandias.linux' ARCHIVE_OPTIONAL_AKHENATEN_0_MD5='7e52e2e90f5b00069cd312507d55c518' ARCHIVE_OPTIONAL_AKHENATEN_0_SIZE='31820' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_WINE_FILES=' MP3DEC.ASI BINKW32.DLL mss16.dll mss32.dll SMACKW32.DLL Pharaoh.exe Pharaoh.ini mssb16.tsk *.M3D' CONTENT_GAME_DATA_FILES=' AUDIO BINKS Data Maps cleoicon.ico auto reason phrases.txt campaign.txt eventmsg.txt Figure_model.txt Figure_model_*.txt music.txt Pharaoh_MM.txt Pharaoh_Model_*.txt Pharaoh_Text.txt Tax_Sentiment_Model_*.txt trade_recommends.txt Pharaoh2.emp Pharaoh_MM.eng Pharaoh_Text.eng mission1.pak *.inf' CONTENT_DOC_DATA_FILES=' Mission Editor Guide.txt Readme.txt *.pdf' USER_PERSISTENT_DIRECTORIES=' Save' USER_PERSISTENT_FILES=' *.ini' ## WINE - With the default OpenGL renderer, the game menu is not displayed (WINE 9.0). WINE_DIRECT3D_RENDERER='wined3d/gdi' ## WINE - The game window fails to render anything unless the game runs in a WINE virtual desktop (WINE 9.0). WINE_VIRTUAL_DESKTOP='auto' ## WINE - Disable CSMT to avoid degraded performances. WINE_WINETRICKS_VERBS='csmt=off' APP_MAIN_EXE_BIN_LINUX='akhenaten.linux' APP_MAIN_EXE_BIN_WINE='Pharaoh.exe' APP_MAIN_ICON='cleoicon.ico' PACKAGES_LIST=' PKG_BIN_WINE PKG_DATA' PACKAGES_LIST_AKHENATEN=" PKG_BIN_LINUX $PACKAGES_LIST" PKG_BIN_ID="$GAME_ID" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_LINUX_ID="${PKG_BIN_ID}-akhenaten" PKG_BIN_LINUX_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_LINUX_DESCRIPTION='using the Akhenaten engine' PKG_BIN_LINUX_ARCH='64' PKG_BIN_LINUX_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_LINUX_DEPENDENCIES_LIBRARIES=' libc.so.6 libm.so.6 libSDL2-2.0.so.0 libSDL2_mixer-2.0.so.0' ## Ensure smooth upgrades from packages generated with pre-20231105.3 game scripts PKG_BIN_LINUX_PROVIDES="${PKG_BIN_LINUX_PROVIDES:-} pharaoh-ozymandias" PKG_BIN_WINE_ID="${PKG_BIN_ID}-wine" PKG_BIN_WINE_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_WINE_DESCRIPTION='using WINE' PKG_BIN_WINE_ARCH='32' PKG_BIN_WINE_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" 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 . "$PLAYIT_LIB2" # Check for the presence of the Akhenaten native engine binary (optional) archive_initialize_optional \ 'ARCHIVE_AKHENATEN' \ 'ARCHIVE_OPTIONAL_AKHENATEN_2' \ 'ARCHIVE_OPTIONAL_AKHENATEN_1' \ 'ARCHIVE_OPTIONAL_AKHENATEN_0' if archive_is_available 'ARCHIVE_AKHENATEN'; then export PACKAGES_LIST="$PACKAGES_LIST_AKHENATEN" fi # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default if archive_is_available 'ARCHIVE_AKHENATEN'; then application_exe=$( set_current_package 'PKG_BIN_LINUX' application_exe 'APP_MAIN' ) install -D --mode=755 \ "$(archive_path 'ARCHIVE_AKHENATEN')" \ "$(package_path 'PKG_BIN_LINUX')$(path_game_data)/${application_exe}" fi # Write launchers launchers_generation 'PKG_BIN_WINE' if archive_is_available 'ARCHIVE_AKHENATEN'; then launchers_generation 'PKG_BIN_LINUX' fi # Build packages packages_generation printf '\n' if archive_is_available 'ARCHIVE_AKHENATEN'; then printf 'Akhenaten:' print_instructions 'PKG_DATA' 'PKG_BIN_LINUX' printf 'WINE:' print_instructions 'PKG_DATA' 'PKG_BIN_WINE' else print_instructions fi # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-pillars-of-eternity-1-expansions.sh0000755000000000000000000001427514471751340020425 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Pillars of Eternity 1 expansions: # - Kickstarter item # - Kickstarter pet # - Pre-order item and pet # - The White March, Part 1 # - The White March, Part 2 # - Deadfire Pack ### script_version=20240717.4 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='pillars-of-eternity-1' GAME_NAME='Pillars of Eternity' EXPANSION_ID_TIER1BACKER='kickstarter-item' EXPANSION_NAME_TIER1BACKER='Kickstarter item' EXPANSION_ID_TIER2BACKER='kickstarter-pet' EXPANSION_NAME_TIER2BACKER='Kickstarter pet' EXPANSION_ID_PREORDER='preorder-content' EXPANSION_NAME_PREORDER='Pre-order item and pet' EXPANSION_ID_TWM1='the-white-march-part-1' EXPANSION_NAME_TWM1='The White March Part Ⅰ' EXPANSION_ID_TWM2='the-white-march-part-2' EXPANSION_NAME_TWM2='The White March Part Ⅱ' EXPANSION_ID_DEADFIRE='deadfire-pack' EXPANSION_NAME_DEADFIRE='Deadfire Pack' # Archives ## Kickstarter item ARCHIVE_BASE_TIER1BACKER_0_NAME='gog_pillars_of_eternity_kickstarter_item_dlc_2.0.0.2.sh' ARCHIVE_BASE_TIER1BACKER_0_MD5='b4c29ae17c87956471f2d76d8931a4e5' ARCHIVE_BASE_TIER1BACKER_0_SIZE='924' ARCHIVE_BASE_TIER1BACKER_0_VERSION='1.0-gog2.0.0.2' ## Kickstarter pet ARCHIVE_BASE_TIER2BACKER_0_NAME='gog_pillars_of_eternity_kickstarter_pet_dlc_2.0.0.2.sh' ARCHIVE_BASE_TIER2BACKER_0_MD5='3653fc2a98ef578335f89b607f0b7968' ARCHIVE_BASE_TIER2BACKER_0_SIZE='924' ARCHIVE_BASE_TIER2BACKER_0_VERSION='1.0-gog2.0.0.2' ## Pre-order item and pet ARCHIVE_BASE_PREORDER_0_NAME='gog_pillars_of_eternity_preorder_item_and_pet_dlc_2.0.0.2.sh' ARCHIVE_BASE_PREORDER_0_MD5='b86ad866acb62937d2127407e4beab19' ARCHIVE_BASE_PREORDER_0_SIZE='924' ARCHIVE_BASE_PREORDER_0_VERSION='1.0-gog2.0.0.2' ## The White March, Part 1 ARCHIVE_BASE_TWM1_3_NAME='pillars_of_eternity_white_march_part_1_dlc_en_3_07_0_1318_17464.sh' ARCHIVE_BASE_TWM1_3_MD5='cc72f59ee20238ff05c47646b4618f01' ARCHIVE_BASE_TWM1_3_SIZE='5507108' ARCHIVE_BASE_TWM1_3_VERSION='3.7.0.1318-gog17464' ARCHIVE_BASE_TWM1_3_URL='https://www.gog.com/game/pillars_of_eternity_the_white_march_part_1' ARCHIVE_BASE_TWM1_2_NAME='pillars_of_eternity_white_march_part_1_dlc_en_3_07_16598.sh' ARCHIVE_BASE_TWM1_2_MD5='054b6af430da1ed2635b9c6b4ed56866' ARCHIVE_BASE_TWM1_2_SIZE='5500000' ARCHIVE_BASE_TWM1_2_VERSION='3.7.0.1284-gog16598' ARCHIVE_BASE_TWM1_1_NAME='gog_pillars_of_eternity_white_march_part_1_dlc_2.10.0.12.sh' ARCHIVE_BASE_TWM1_1_MD5='8fafcb549fffd2de24f381a85e859622' ARCHIVE_BASE_TWM1_1_SIZE='5500000' ARCHIVE_BASE_TWM1_1_VERSION='3.06.0.1254-gog2.10.0.12' ARCHIVE_BASE_TWM1_0_NAME='gog_pillars_of_eternity_white_march_part_1_dlc_2.9.0.11.sh' ARCHIVE_BASE_TWM1_0_MD5='98424615626c82ed723860d421f187b6' ARCHIVE_BASE_TWM1_0_SIZE='5500000' ARCHIVE_BASE_TWM1_0_VERSION='3.05.0.1186-gog2.9.0.11' ## The White March, Part 2 ARCHIVE_BASE_TWM2_3_NAME='pillars_of_eternity_white_march_part_2_dlc_en_3_07_0_1318_17464.sh' ARCHIVE_BASE_TWM2_3_MD5='03067ebdd878cc16c283f63ddf015e90' ARCHIVE_BASE_TWM2_3_SIZE='4360158' ARCHIVE_BASE_TWM2_3_VERSION='3.7.0.1318-gog17464' ARCHIVE_BASE_TWM2_3_URL='https://www.gog.com/game/pillars_of_eternity_the_white_march_part_2' ARCHIVE_BASE_TWM2_2_NAME='pillars_of_eternity_white_march_part_2_dlc_en_3_07_16598.sh' ARCHIVE_BASE_TWM2_2_MD5='db3a345b2b2782e2ad075dd32567f303' ARCHIVE_BASE_TWM2_2_SIZE='4300000' ARCHIVE_BASE_TWM2_2_VERSION='3.7.0.1284-gog16598' ARCHIVE_BASE_TWM2_1_NAME='gog_pillars_of_eternity_white_march_part_2_dlc_2.6.0.7.sh' ARCHIVE_BASE_TWM2_1_MD5='fdc1446661a358961379fbec24c44680' ARCHIVE_BASE_TWM2_1_SIZE='4400000' ARCHIVE_BASE_TWM2_1_VERSION='3.06.1254-gog2.6.0.7' ARCHIVE_BASE_TWM2_0_NAME='gog_pillars_of_eternity_white_march_part_2_dlc_2.5.0.6.sh' ARCHIVE_BASE_TWM2_0_MD5='483d4b8cc046a07ec91a6306d3409e23' ARCHIVE_BASE_TWM2_0_SIZE='4400000' ARCHIVE_BASE_TWM2_0_VERSION='3.05.1186-gog2.5.0.6' ## Deadfire Pack ARCHIVE_BASE_DEADFIRE_2_NAME='pillars_of_eternity_deadfire_pack_dlc_en_3_07_0_1318_20099.sh' ARCHIVE_BASE_DEADFIRE_2_MD5='da315aba26784e55aa51139cebb7f9d2' ARCHIVE_BASE_DEADFIRE_2_SIZE='922' ARCHIVE_BASE_DEADFIRE_2_VERSION='3.07.0.1318-gog20099' ARCHIVE_BASE_DEADFIRE_2_URL='https://www.gog.com/game/pillars_of_eternity_deadfire_pack' ARCHIVE_BASE_DEADFIRE_1_NAME='pillars_of_eternity_deadfire_pack_dlc_en_3_07_0_1318_17462.sh' ARCHIVE_BASE_DEADFIRE_1_MD5='021362da5912dc8a3e47473e97726f7f' ARCHIVE_BASE_DEADFIRE_1_SIZE='1300' ARCHIVE_BASE_DEADFIRE_1_VERSION='3.07.0.1318-gog17462' ARCHIVE_BASE_DEADFIRE_0_NAME='pillars_of_eternity_deadfire_pack_dlc_en_3_07_16380.sh' ARCHIVE_BASE_DEADFIRE_0_MD5='2fc0dc21648953be1c571e28b1e3d002' ARCHIVE_BASE_DEADFIRE_0_SIZE='1300' ARCHIVE_BASE_DEADFIRE_0_VERSION='3.07-gog16380' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' PillarsOfEternity_Data' PKG_PARENT_ID="$GAME_ID" PKG_TWM1_ID="${GAME_ID}-${EXPANSION_ID_TWM1}" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' PKG_MAIN_DEPENDENCIES_SIBLINGS_TWM2="$PKG_MAIN_DEPENDENCIES_SIBLINGS PKG_TWM1" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## The White March, Part 2 - Remove a file already provided by a dependency. case "$(current_archive)" in ('ARCHIVE_BASE_TWM2_'*) rm --force 'PillarsOfEternity_Data/assetbundles/prefabs/objectbundle/px1_cre_blight_ice_terror.unity3d' ;; esac ## Deadfire Pack - Fix a typo in a file path. case "$(current_archive)" in ('ARCHIVE_BASE_DEADFIRE_'*) if [ -e 'PillarsOfEternity_data' ]; then mv 'PillarsOfEternity_data' 'PillarsOfEternity_Data' fi ;; esac ) # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-pillars-of-eternity-1.sh0000755000000000000000000000531114471751340016227 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Pillars of Eternity 1 ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='pillars-of-eternity-1' GAME_NAME='Pillars of Eternity' ARCHIVE_BASE_3_NAME='pillars_of_eternity_en_3_07_0_1318_17461.sh' ARCHIVE_BASE_3_MD5='57164ad0cbc53d188dde0b38e7491916' ARCHIVE_BASE_3_SIZE='14801525' ARCHIVE_BASE_3_VERSION='3.7.0.1318-gog17461' ARCHIVE_BASE_3_URL='https://www.gog.com/game/pillars_of_eternity_hero_edition' ARCHIVE_BASE_2_NAME='pillars_of_eternity_en_3_07_16405.sh' ARCHIVE_BASE_2_MD5='e4271b5e72f1ecc9fbbc4d90937ede05' ARCHIVE_BASE_2_SIZE='15000000' ARCHIVE_BASE_2_VERSION='3.7.0.1284-gog16405' ARCHIVE_BASE_1_NAME='gog_pillars_of_eternity_2.16.0.20.sh' ARCHIVE_BASE_1_MD5='0d21cf95bda070bdbfbe3e79f8fc32d6' ARCHIVE_BASE_1_SIZE='15000000' ARCHIVE_BASE_1_VERSION='3.06.1254-gog2.16.0.20' ARCHIVE_BASE_0_NAME='gog_pillars_of_eternity_2.15.0.19.sh' ARCHIVE_BASE_0_MD5='2000052541abb1ef8a644049734e8526' ARCHIVE_BASE_0_SIZE='15000000' ARCHIVE_BASE_0_VERSION='3.05.1186-gog2.15.0.19' UNITY3D_NAME='PillarsOfEternity' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_DATA_AREAS_FILES=" ${UNITY3D_NAME}_Data/assetbundles/st_ar_*" PACKAGES_LIST=' PKG_BIN PKG_DATA_AREAS 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 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_AREAS' PKG_DATA_AREAS_ID="${PKG_DATA_ID}-areas" PKG_DATA_AREAS_DESCRIPTION='areas' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-prince-of-persia-2008.sh0000755000000000000000000002277614471751340015730 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Prince of Persia (2008) ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='prince-of-persia-2008' GAME_NAME='Prince of Persia' ARCHIVE_BASE_0_NAME='setup_prince_of_persia_1.0_v2_(28572).exe' ARCHIVE_BASE_0_MD5='65143fe6dfb653d5fa95bb79c8022630' ## Conversion of file paths to lowercase should be skipped, to prevent a game crash on launch. ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_PART1_NAME='setup_prince_of_persia_1.0_v2_(28572)-1.bin' ARCHIVE_BASE_0_PART1_MD5='caab8ceb59b30c75533ebd29ccd7a199' ARCHIVE_BASE_0_PART2_NAME='setup_prince_of_persia_1.0_v2_(28572)-2.bin' ARCHIVE_BASE_0_PART2_MD5='ddc7e15fd6daf47e3085e2c66a4ca6cd' ARCHIVE_BASE_0_SIZE='8237644' ARCHIVE_BASE_0_VERSION='1.0-gog28572' ARCHIVE_BASE_0_URL='https://www.gog.com/game/prince_of_persia' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' Launcher/regvs.cmd Launcher/detectionapi_rd.dll Launcher/directx9tests_rd.dll Launcher/local.dll Launcher/Launcher.exe Launcher/gameinterpreters_rd.intr Launcher/directxtests_rd.tst Launcher/systemtests_rd.tst Support binkw32.dll eax.dll Prince of Persia.exe PrinceOfPersia_Launcher.exe' CONTENT_GAME_L10N_EN_FILES=' Launcher/localization/EN/interpreter_local.ini Resources/us/GameUpdate.us DataPC_StreamedSoundsEng.forge' CONTENT_GAME_L10N_FR_FILES=' Launcher/localization/FR/interpreter_local.ini Resources/fr/GameUpdate.fr Videos/fre DataPC_StreamedSoundsFre.forge' CONTENT_GAME_DATA_FILES=' Videos/ArtGallery.bik Videos/ArtGallery_CityofLight.bik Videos/ArtGallery_DesertTemple.bik Videos/ArtGallery_RoyalePalace.bik Videos/ArtGallery_RuinedCitadel.bik Videos/ArtGallery_Vale.bik Videos/AttractMode.bik Videos/ComboList.bik Videos/Controls.bik Videos/Credits.bik Videos/DE1_001_CINV_GameIntro.bik Videos/Display.bik Videos/Extras.bik Videos/LoadGame.bik Videos/MainMenuE3.bik Videos/Options.bik Videos/SkinsManager.bik Videos/Sound.bik Videos/StartScreenE3.bik Videos/Ubi_Logo.bik Videos/VideoBlack.bik Videos/Vision1.bik Videos/Vision2.bik Videos/Vision3.bik Videos/Vision4.bik Videos/Vision5.bik ekshaderspccompress.bin DataPC.forge DataPC_Default.forge DataPC_DE.forge DataPC_Ext.forge DataPC_HC.forge DataPC_JCT.forge DataPC_lod.forge DataPC_LR.forge DataPC_OB.forge DataPC_POP0WORLD_Ext.forge DataPC_POP0WORLD.forge DataPC_RC.forge DataPC_StreamedSounds.forge' CONTENT_DOC_DATA_FILES=' ubisoft.html manual.pdf ReadMe.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Prince of Persia' APP_MAIN_EXE='Prince of Persia.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N_EN PKG_L10N_FR PKG_DATA' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_EN_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_FR_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_EN_DESCRIPTION='English localization' PKG_L10N_FR_DESCRIPTION='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_L10N_ID $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 . "$PLAYIT_LIB2" # Set mandatory registry keys registry_dump_init_file='registry-dumps/init.reg' APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_init_file" SCRIPT_DEPS="${SCRIPT_DEPS:-} iconv" check_deps ## English localization registry_dump_init_file_en='registry-dumps/init-en.reg' registry_dump_init_content_en='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia] "Executable"="C:\\'"$(game_id)"'\\PrinceOfPersia_Launcher.exe" "InstallDir"="C:\\'"$(game_id)"'" "Language"="English" [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia\1.0\Engine] "LNG_Language"=dword:00000001 [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia\GameUpdate] "execPath"="C:\\'"$(game_id)"'\\Prince of Persia.exe" "info"="08a0f1c01d540ee143f7ee48a91898fa" "installdir"="C:\\'"$(game_id)"'" "language"="us" ' CONTENT_GAME_L10N_EN_FILES="$(content_files 'GAME_L10N_EN') $registry_dump_init_file_en" ## French localization registry_dump_init_file_fr='registry-dumps/init-fr.reg' registry_dump_init_content_fr='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia] "Executable"="C:\\'"$(game_id)"'\\PrinceOfPersia_Launcher.exe" "InstallDir"="C:\\'"$(game_id)"'" "Language"="French" [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia\1.0\Engine] "LNG_Language"=dword:00000002 [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia\GameUpdate] "execPath"="C:\\'"$(game_id)"'\\Prince of Persia.exe" "info"="08a0f1c01d540ee143f7ee48a91898fa" "installdir"="C:\\'"$(game_id)"'" "language"="fr" ' CONTENT_GAME_L10N_FR_FILES="$(content_files 'GAME_L10N_FR') $registry_dump_init_file_fr" # Set default settings registry_dump_settings_file='registry-dumps/settings.reg' APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_settings_file" SCRIPT_DEPS="${SCRIPT_DEPS:-} iconv" check_deps ## English localization registry_dump_settings_file_en='registry-dumps/settings-en.reg' registry_dump_settings_content_en='Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Ubisoft\Prince of Persia\1.0\Engine] "AlternateVerticalSync"=dword:00000001 "AlternateVerticalSyncThreshold"=dword:00000000 "Antialiasing"=dword:00000000 "AspectRatioOverride"=dword:000000a6 "DegradedTextures"=dword:00000000 "LNG_Language"=dword:00000001 "ParticleEffectNumber"=dword:00000064 "PostEffects"=dword:00000002 "ScreenResolutionHeight"=dword:00000300 "ScreenResolutionWidth"=dword:00000500 "Shadows"=dword:00000002 "VerticalSync"=dword:00000001 [HKEY_CURRENT_USER\Software\Ubisoft\Prince of Persia\1.0\Launcher] "AspectRatioOverrideCHKB"=dword:00000000 "DefaultSetting"=dword:00000001 "LauncherVersion"=dword:00000004 "LNG_Language"=dword:00000001 "Texture_lvl"=dword:00000001 "VerticalSync_lvl"=dword:00000001 "VisualQualityLvl"=dword:00000002 ' CONTENT_GAME_L10N_EN_FILES="$(content_files 'GAME_L10N_EN') $registry_dump_settings_file_en" ## French localization registry_dump_settings_file_fr='registry-dumps/settings-fr.reg' registry_dump_settings_content_fr='Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Ubisoft\Prince of Persia\1.0\Engine] "AlternateVerticalSync"=dword:00000001 "AlternateVerticalSyncThreshold"=dword:00000000 "Antialiasing"=dword:00000000 "AspectRatioOverride"=dword:000000a6 "DegradedTextures"=dword:00000000 "LNG_Language"=dword:00000002 "ParticleEffectNumber"=dword:00000064 "PostEffects"=dword:00000002 "ScreenResolutionHeight"=dword:00000300 "ScreenResolutionWidth"=dword:00000500 "Shadows"=dword:00000002 "VerticalSync"=dword:00000001 [HKEY_CURRENT_USER\Software\Ubisoft\Prince of Persia\1.0\Launcher] "AspectRatioOverrideCHKB"=dword:00000000 "DefaultSetting"=dword:00000001 "LauncherVersion"=dword:00000004 "LNG_Language"=dword:00000002 "Texture_lvl"=dword:00000001 "VerticalSync_lvl"=dword:00000001 "VisualQualityLvl"=dword:00000002 ' CONTENT_GAME_L10N_FR_FILES="$(content_files 'GAME_L10N_FR') $registry_dump_settings_file_fr" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Set mandatory registry keys mkdir --parents "$(dirname "$registry_dump_init_file_en")" printf '%s' "$registry_dump_init_content_en" | \ iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_init_file_en" mkdir --parents "$(dirname "$registry_dump_init_file_fr")" printf '%s' "$registry_dump_init_content_fr" | \ iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_init_file_fr" ## Set default settings mkdir --parents "$(dirname "$registry_dump_settings_file_en")" printf '%s' "$registry_dump_settings_content_en" | \ iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_settings_file_en" mkdir --parents "$(dirname "$registry_dump_settings_file_fr")" printf '%s' "$registry_dump_settings_content_fr" | \ iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_settings_file_fr" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Set mandatory registry keys ( cd "$(package_path 'PKG_L10N_EN')$(path_game_data)" mv "$registry_dump_init_file_en" "$registry_dump_init_file" ) ( cd "$(package_path 'PKG_L10N_FR')$(path_game_data)" mv "$registry_dump_init_file_fr" "$registry_dump_init_file" ) ## Set default settings ( cd "$(package_path 'PKG_L10N_EN')$(path_game_data)" mv "$registry_dump_settings_file_en" "$registry_dump_settings_file" ) ( cd "$(package_path 'PKG_L10N_FR')$(path_game_data)" mv "$registry_dump_settings_file_fr" "$registry_dump_settings_file" ) # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation case "${LANG%_*}" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_L10N_EN' 'PKG_DATA' 'PKG_BIN' printf "$lang_string" "$lang_fr" print_instructions 'PKG_L10N_FR' 'PKG_DATA' 'PKG_BIN' # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-prince-of-persia-the-sands-of-time.sh0000755000000000000000000001136014471751340020546 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Prince of Persia: The Sands of Time ### script_version=20240529.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='prince-of-persia-the-sands-of-time' GAME_NAME='Prince of Persia: The Sands of Time' ARCHIVE_BASE_FR_0_NAME='setup_prince_of_persia_-_the_sands_of_time_181_(french)_(28548).exe' ARCHIVE_BASE_FR_0_MD5='b71ed96b13461f56c8a47e16fbecadbb' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_PART1_NAME='setup_prince_of_persia_-_the_sands_of_time_181_(french)_(28548)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='691e5144e34bf71ab15d45de11089b34' ARCHIVE_BASE_FR_0_SIZE='1500000' ARCHIVE_BASE_FR_0_VERSION='1.00.181-gog28548' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/prince_of_persia_the_sands_of_time' ARCHIVE_BASE_EN_0_NAME='setup_prince_of_persia_-_the_sands_of_time_181_(28548).exe' ARCHIVE_BASE_EN_0_MD5='008b4359cafb21dd4e437860dc23e2cf' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_prince_of_persia_-_the_sands_of_time_181_(28548)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='639fd428677dc8fb52e864422cbfe26d' ARCHIVE_BASE_EN_0_SIZE='1500000' ARCHIVE_BASE_EN_0_VERSION='1.00.181-gog28548' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/prince_of_persia_the_sands_of_time' CONTENT_PATH_DEFAULT='.' ## TODO: An explicit list of .dll files should be set. CONTENT_GAME_BIN_FILES=' *.dll *.exe *.tst' CONTENT_GAME0_BIN_PATH='__support/app' ## "Hardware.ini" instead of "hardware.ini" is not a typo. CONTENT_GAME0_BIN_FILES=' Hardware.ini sound/dare.ini' CONTENT_GAME_L10N_FILES=' poplauncherres.dll popdata.bf sound/soundlocal.big sound/soundlocal.fat video/loading.int' CONTENT_GAME_DATA_FILES=' profiles sound video prince.bf' CONTENT_DOC_L10N_FILES=' manual.pdf licence.txt readme.txt' USER_PERSISTENT_FILES=' Hardware.ini sound/dare.ini' USER_PERSISTENT_DIRECTORIES=' profiles' APP_MAIN_EXE='princeofpersia.exe' ## Work around fog rendering issues. APP_MAIN_PRERUN='# Work around fog rendering issues config_file="Hardware.ini" dos2unix --quiet "$config_file" sed \ --in-place \ --expression="s/InvertFogRange=.*/InvertFogRange=0/" \ "$config_file" unix2dos --quiet "$config_file" ' ## Work around override of configuration file. APP_MAIN_POSTRUN='# Work around override of configuration file config_file="Hardware.ini" config_file_persistent="${USER_PERSISTENT_PATH}/${config_file}" if \ [ -f "$config_file" ] \ && [ ! -h "$config_file" ] then cp --remove-destination "$config_file" "$config_file_persistent" rm "$config_file" ln --symbolic "$config_file_persistent" "$config_file" fi ' PACKAGES_LIST=' PKG_L10N PKG_BIN PKG_DATA' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' ## Ensure a smooth upgrade from packages generated with pre-20231018.1 scripts. PKG_L10N_PROVIDES="${PKG_L10N_PROVIDES:-} prince-of-persia-l10n" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## Ensure a smooth upgrade from packages generated with pre-20231018.1 scripts. PKG_DATA_PROVIDES="${PKG_DATA_PROVIDES:-} prince-of-persia-data" PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_L10N_ID $PKG_DATA_ID" ## Work around fog rendering issues. PKG_BIN_DEPENDENCIES_COMMANDS="${PKG_BIN_DEPENDENCIES_COMMANDS:-} dos2unix" ## Ensure a smooth upgrade from packages generated with pre-20231018.1 scripts. PKG_BIN_PROVIDES="${PKG_BIN_PROVIDES:-} prince-of-persia" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Avoid inclusion of unwanted files. rm --force --recursive \ '__redist' \ '__support/6800' \ '__support/nvidia' \ 'commonappdata' \ 'tmp' ) ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME0_BIN')" ## Work around case issues caused by file deletion-creation instead of in-place edition. mv 'hardware.ini' 'Hardware.ini' ) # 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-pyre.sh0000755000000000000000000000704514471751340013145 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Pyre ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='pyre' GAME_NAME='Pyre' ARCHIVE_BASE_ITCH_1_NAME='pyre-linux.zip' ARCHIVE_BASE_ITCH_1_MD5='44e0fe30a9d8bcf73c4fa288dd4324ab' ARCHIVE_BASE_ITCH_1_SIZE='8051755' ARCHIVE_BASE_ITCH_1_VERSION='1.50476-itch.2019.03.19' ARCHIVE_BASE_ITCH_1_URL='https://supergiant-games.itch.io/pyre' ARCHIVE_BASE_GOG_1_NAME='pyre_1_50427_11957_23366.sh' ARCHIVE_BASE_GOG_1_MD5='ae34d8b4c069ffd7a98f295af4596e1f' ARCHIVE_BASE_GOG_1_SIZE='8104850' ARCHIVE_BASE_GOG_1_VERSION='1.50427-gog23366' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/pyre' ARCHIVE_BASE_GOG_0_NAME='pyre_en_1_0_18732.sh' ARCHIVE_BASE_GOG_0_MD5='83ea264e95e2519aba72078d35290d49' ARCHIVE_BASE_GOG_0_SIZE='8100000' ARCHIVE_BASE_GOG_0_VERSION='1.0-gog18732' CONTENT_PATH_DEFAULT_ITCH='.' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_LIBS_FILES=' libBink2.so libFModPlugins.so libfmod.so.8 libfmodstudio.so.8 liblua52.so libMonoPosixHelper.so' CONTENT_LIBS_BIN64_PATH_ITCH="${CONTENT_PATH_DEFAULT_ITCH}/lib64" CONTENT_LIBS_BIN64_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib64" CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_BIN32_PATH_ITCH="${CONTENT_PATH_DEFAULT_ITCH}/lib" CONTENT_LIBS_BIN32_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib" CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_BIN64_FILES=' Pyre.bin.x86_64' CONTENT_GAME_BIN32_FILES=' Pyre.bin.x86' CONTENT_GAME_DATA_FILES=' gamecontrollerdb.txt monoconfig monomachineconfig Content *.bmp *.config *.cur *.dll *.exe *.pdb *.xml' CONTENT_DOC_DATA_FILES=' Linux.README ReadMe.txt' ## The shipped binaries are used instead of system-provided Mono to avoid a crash on initial loading. ## See notes/pyre for more details. APP_MAIN_EXE_BIN64='Pyre.bin.x86_64' APP_MAIN_EXE_BIN32='Pyre.bin.x86' APP_MAIN_ICON='PyreIcon.bmp' 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 libopenal.so.1 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libSDL2_image-2.0.so.0 libstdc++.so.6 libudev.so.1 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Apply common Mono tweaks. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(mono_launcher_tweaks)" launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-raji-an-ancient-epic.sh0000755000000000000000000000762614471751340016051 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Raji: An Ancient Epic ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='raji-an-ancient-epic' GAME_NAME='Raji: An Ancient Epic' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" # Archives ## Raji: An Ancient Epic (full game) ARCHIVE_BASE_1_NAME='setup_raji_an_ancient_epic_1.6.0_(64bit)_(57469).exe' ARCHIVE_BASE_1_MD5='d05e588d8f7a32b5471a0c193ca10adb' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_raji_an_ancient_epic_1.6.0_(64bit)_(57469)-1.bin' ARCHIVE_BASE_1_PART1_MD5='84f8c041aba726936ce450c481a1962c' ARCHIVE_BASE_1_PART2_NAME='setup_raji_an_ancient_epic_1.6.0_(64bit)_(57469)-2.bin' ARCHIVE_BASE_1_PART2_MD5='3dc293acb794752426baa2e6174b25dc' ARCHIVE_BASE_1_SIZE='6400000' ARCHIVE_BASE_1_VERSION='1.6.0-gog57469' ARCHIVE_BASE_1_URL='https://www.gog.com/game/raji_an_ancient_epic' ARCHIVE_BASE_0_NAME='setup_raji_an_ancient_epic_1.4.0_(64bit)_(45493).exe' ARCHIVE_BASE_0_MD5='5defde7fed6a972c5f40f7b58a4631a9' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_raji_an_ancient_epic_1.4.0_(64bit)_(45493)-1.bin' ARCHIVE_BASE_0_PART1_MD5='db0573d9b6647e12989ef8d46842bdce' ARCHIVE_BASE_0_PART2_NAME='setup_raji_an_ancient_epic_1.4.0_(64bit)_(45493)-2.bin' ARCHIVE_BASE_0_PART2_MD5='dfabd86fda6c240335eea1d2338c6b5f' ARCHIVE_BASE_0_SIZE='5900000' ARCHIVE_BASE_0_VERSION='1.4.0-gog45493' ## Raji: An Ancient Epic (demo) ARCHIVE_BASE_DEMO_0_NAME='Raji Demo v11.zip' ARCHIVE_BASE_DEMO_0_MD5='b021b724963d80b4e4690fe096969a32' ARCHIVE_BASE_DEMO_0_SIZE='3100000' ARCHIVE_BASE_DEMO_0_VERSION='11-itch.2020.10.21' ARCHIVE_BASE_DEMO_0_URL='https://rajithegame.itch.io/raji-an-ancient-epic' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='raji-an-ancient-epic_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='befa06adad5d44a2946cc19f54b0a267' ARCHIVE_OPTIONAL_ICONS_URL='http://downloads.dotslashplay.it/games/raji-an-ancient-epic/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 256x256' UNREALENGINE4_NAME='raji' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_DEMO='Raji Demo v11' APP_MAIN_EXE="${UNREALENGINE4_NAME}.exe" ## The rendering is done using Direct3D 12 by default starting with game version 1.6.0. ## We force Direct3D 11 instead as it is better supported by current WINE builds. APP_MAIN_OPTIONS='-d3d11' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Convert all file paths to lowercase. tolower . ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Convert icon file name for the game demo. case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) icon_source="$(package_path 'PKG_DATA')$(path_icons)/256x256/apps/${GAME_ID}.png" icon_destination="$(package_path 'PKG_DATA')$(path_icons)/256x256/apps/$(game_id).png" if [ -e "$icon_source" ]; then mv "$icon_source" "$icon_destination" fi ;; esac # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-rayman-1.sh0000755000000000000000000000706314471751340013613 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Rayman 1 ### script_version=20240724.1 GAME_ID='rayman-1' GAME_NAME='Rayman' PLAYIT_COMPATIBILITY_LEVEL='2.30' ARCHIVE_BASE_1_NAME='setup_rayman_forever_1.21_(28045).exe' ARCHIVE_BASE_1_MD5='304cca5f14923730c76bb61f669be575' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='279703' ARCHIVE_BASE_1_VERSION='1.21-gog28045' ARCHIVE_BASE_1_URL='https://www.gog.com/game/rayman_forever' ARCHIVE_BASE_0_NAME='setup_rayman_forever_2.0.0.15.exe' ARCHIVE_BASE_0_MD5='96e71ea03261646f7f5ce4cb27d6a222' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='290000' ARCHIVE_BASE_0_VERSION='1.21-gog2.0.0.15' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' GAME.GOG GAME.INS MUSIC RAYFAN RAYKIT RAYMAN' CONTENT_DOC_DATA_FILES=' MANUAL.PDF' GAME_IMAGE='GAME.INS' USER_PERSISTENT_FILES=' RAYMAN/VIGNET.DAT *.CFG *.SAV' APP_MAIN_EXE='RAYMAN/RAYMAN.EXE' APP_MAIN_OPTIONS='save=C:\RAYMAN' APP_MAIN_ICON='GOGGAME-1207658919.ICO' APP_MAIN_ICON_0='GFW_HIGH.ICO' ## Run the game binary from its parent directory. APP_MAIN_PRERUN=' # Run the game binary from its parent directory APP_EXE_DIRECTORY=$(dirname "$APP_EXE") APP_EXE=$(basename "$APP_EXE") ' APP_MAIN_DOSBOX_PRERUN=' cd $APP_EXE_DIRECTORY' ## Use fixed cpu cycles, to improve performances. APP_MAIN_DOSBOX_PRERUN="${APP_MAIN_DOSBOX_PRERUN:-} config -set cpu cycles=fixed 80000" APP_FAN_ID="${GAME_ID}-rayfan" APP_FAN_NAME="$GAME_NAME - Rayman by his Fans" APP_FAN_EXE='RAYFAN/RAYFAN.EXE' APP_FAN_OPTIONS='ver=usa' APP_FAN_ICON='RAYFAN/RAYFAN.ICO' ## Run the game binary from its parent directory. APP_FAN_PRERUN=' # Run the game binary from its parent directory APP_EXE_DIRECTORY=$(dirname "$APP_EXE") APP_EXE=$(basename "$APP_EXE") ' APP_FAN_DOSBOX_PRERUN=' cd $APP_EXE_DIRECTORY' ## Use fixed cpu cycles, to improve performances. APP_FAN_DOSBOX_PRERUN="${APP_FAN_DOSBOX_PRERUN:-} config -set cpu cycles=fixed 20000" APP_KIT_ID="${GAME_ID}-raykit" APP_KIT_NAME="$GAME_NAME - Rayman Designer" APP_KIT_EXE='RAYKIT/RAYKIT.EXE' APP_KIT_OPTIONS='ver=usa' APP_KIT_ICON='RAYKIT/RAYKIT.ICO' ## Run the game binary from its parent directory. APP_KIT_PRERUN=' # Run the game binary from its parent directory APP_EXE_DIRECTORY=$(dirname "$APP_EXE") APP_EXE=$(basename "$APP_EXE") ' APP_KIT_DOSBOX_PRERUN=' cd $APP_EXE_DIRECTORY' ## Use fixed cpu cycles, to improve performances. APP_KIT_DOSBOX_PRERUN="${APP_KIT_DOSBOX_PRERUN:-} config -set cpu cycles=fixed 20000" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Convert all file paths to uppercase. toupper . ## Force the name of the disk image table of contents. if [ -e 'GAME.INST' ]; then mv 'GAME.INST' "$GAME_IMAGE" fi ) # 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-rayman-origins.sh0000755000000000000000000001015714471751340015123 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Rayman Origins ### script_version=20240620.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='rayman-origins' GAME_NAME='Rayman Origins' ARCHIVE_BASE_HUMBLE_0_NAME='RaymanOrigins_windows.zip' ARCHIVE_BASE_HUMBLE_0_MD5='f9e657afbfac436fe2aea720cdc72196' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0.32504-humble' ARCHIVE_BASE_HUMBLE_0_SIZE='2400000' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/rayman-origins' ARCHIVE_BASE_GOG_0_NAME='setup_rayman_origins_1.0.32504_(18757).exe' ARCHIVE_BASE_GOG_0_MD5='a1021275180a433cd26ccb708c03dde4' ARCHIVE_BASE_GOG_0_TYPE='innosetup' ARCHIVE_BASE_GOG_0_PART1_NAME='setup_rayman_origins_1.0.32504_(18757)-1.bin' ARCHIVE_BASE_GOG_0_PART1_MD5='813c51f290371869157b62b26abad411' ARCHIVE_BASE_GOG_0_SIZE='2500000' ARCHIVE_BASE_GOG_0_VERSION='1.0.32504-gog18757' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/rayman_origins' CONTENT_PATH_DEFAULT_GOG='app' CONTENT_PATH_DEFAULT_HUMBLE='game' CONTENT_GAME_BIN_FILES=' *.dll *.exe *.ini' CONTENT_GAME_DATA_FILES=' gamedata' CONTENT_DOC_DATA_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/support" CONTENT_DOC_DATA_FILES_GOG=' *.pdf *.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Rayman Origins' ## Work around rendering issues making the game menu unusable. WINE_WINETRICKS_VERBS='d3dcompiler_47' APPLICATIONS_LIST='APP_MAIN' APPLICATIONS_LIST_GOG="$APPLICATIONS_LIST APP_L10N" APP_MAIN_EXE='rayman origins.exe' ## This application is only provided by the gog.com archive. APP_L10N_ID="${GAME_ID}-language-setup" APP_L10N_NAME="${GAME_NAME} - Language setup" APP_L10N_CAT='Settings' APP_L10N_EXE='language_setup.exe' APP_L10N_ICON='rayman origins.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # Set extra tools required to extract data from the Humble Bundle archive SCRIPT_DEPS_HUMBLE="${SCRIPT_DEPS:-} dd truncate unshield" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Check for the availability of the extra tools required to extract data from the Humble Bundle archive SCRIPT_DEPS=$(context_value 'SCRIPT_DEPS') check_deps # Extract game data archive_extraction_default case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE'*) ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/RaymondOrigins_windows/Rayman Origins.exe" information_archive_data_extraction "$(archive_name 'ARCHIVE_INNER')" ( cd "${PLAYIT_WORKDIR}/gamedata" archive_path=$(archive_path 'ARCHIVE_INNER') dd \ if="$archive_path" \ of='data1.hdr' \ bs=3 skip=7740856 count=11107 2>/dev/null dd \ if="$archive_path" \ of='data1.cab' \ bs=8 skip=2655105 count=247706 2>/dev/null ## The extraction of data2.cab is done in two steps with big block size values. ## This is a big file that would take a lot of time to get using a small block size. dd \ if="$archive_path" \ of='data2.cab' \ bs=567219 skip=41 2>/dev/null rm "$archive_path" truncate --io-blocks --size=2125482963 'data2.cab' ) ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/data1.hdr" ARCHIVE_INNER_TYPE='installshield' archive_extraction 'ARCHIVE_INNER' rm \ "${PLAYIT_WORKDIR}/gamedata/data1.hdr" \ "${PLAYIT_WORKDIR}/gamedata/data1.cab" \ "${PLAYIT_WORKDIR}/gamedata/data2.cab" ;; esac # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-renowned-explorers-expansions.sh0000755000000000000000000001407514471751340020216 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Renowned Explorers expansions: # - More To Explore # - The Emperor's Challenge ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='renowned-explorers' GAME_NAME='Renowned Explorers' EXPANSION_ID_MORETOEXPLORE='more-to-explore' EXPANSION_NAME_MORETOEXPLORE='More To Explore' EXPANSION_ID_EMPERORSCHALLENGE='emperors-challenge' EXPANSION_NAME_EMPERORSCHALLENGE='The Emperorʼs Challenge' # Archives ## More To Explore ARCHIVE_BASE_MORETOEXPLORE_7_NAME='renowned_explorers_international_society_more_to_explore_dlc_522_26056.sh' ARCHIVE_BASE_MORETOEXPLORE_7_MD5='46b6534ff70a9efa4fc21b2ba139b52f' ARCHIVE_BASE_MORETOEXPLORE_7_SIZE='68263' ARCHIVE_BASE_MORETOEXPLORE_7_VERSION='522-gog26056' ARCHIVE_BASE_MORETOEXPLORE_7_URL='https://www.gog.com/game/renowned_explorers_more_to_explore' ARCHIVE_BASE_MORETOEXPLORE_6_NAME='renowned_explorers_international_society_more_to_explore_dlc_520_25983.sh' ARCHIVE_BASE_MORETOEXPLORE_6_MD5='3d3e97fc73e63ac992c9afa9f620282e' ARCHIVE_BASE_MORETOEXPLORE_6_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_6_VERSION='520-gog25983' ARCHIVE_BASE_MORETOEXPLORE_5_NAME='renowned_explorers_international_society_more_to_explore_dlc_516_25864.sh' ARCHIVE_BASE_MORETOEXPLORE_5_MD5='db21406827c77caecb92c96bb2f4e473' ARCHIVE_BASE_MORETOEXPLORE_5_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_5_VERSION='516-gog25864' ARCHIVE_BASE_MORETOEXPLORE_4_NAME='renowned_explorers_international_society_more_to_explore_dlc_512_25169.sh' ARCHIVE_BASE_MORETOEXPLORE_4_MD5='94112f4cfc91fa67855a310618bdeacf' ARCHIVE_BASE_MORETOEXPLORE_4_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_4_VERSION='512-gog25169' ARCHIVE_BASE_MORETOEXPLORE_3_NAME='renowned_explorers_international_society_more_to_explore_dlc_508_23701.sh' ARCHIVE_BASE_MORETOEXPLORE_3_MD5='5f43443fc81111bc27461e39145c6db6' ARCHIVE_BASE_MORETOEXPLORE_3_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_3_VERSION='508-gog23701' ARCHIVE_BASE_MORETOEXPLORE_2_NAME='renowned_explorers_international_society_more_to_explore_dlc_503_23529.sh' ARCHIVE_BASE_MORETOEXPLORE_2_MD5='058fa329bbeeb0f8b3a3e7e60dc472bf' ARCHIVE_BASE_MORETOEXPLORE_2_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_2_VERSION='503-gog23529' ARCHIVE_BASE_MORETOEXPLORE_1_NAME='renowned_explorers_more_to_explore_dlc_en_489_20916.sh' ARCHIVE_BASE_MORETOEXPLORE_1_MD5='cc51077bdcb04086349f81da8b1d19ff' ARCHIVE_BASE_MORETOEXPLORE_1_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_1_VERSION='489-gog20916' ARCHIVE_BASE_MORETOEXPLORE_0_NAME='renowned_explorers_more_to_explore_dlc_en_466_15616.sh' ARCHIVE_BASE_MORETOEXPLORE_0_MD5='c99ca440cb312b90052939db49aeef03' ARCHIVE_BASE_MORETOEXPLORE_0_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_0_VERSION='466-gog15616' ## The Emperor's Challenge ARCHIVE_BASE_EMPERORSCHALLENGE_7_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_522_26056.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_7_MD5='e87af99e5a726b06ee5b94d7f94d9f5a' ARCHIVE_BASE_EMPERORSCHALLENGE_7_SIZE='21170' ARCHIVE_BASE_EMPERORSCHALLENGE_7_VERSION='522-gog26056' ARCHIVE_BASE_EMPERORSCHALLENGE_7_URL='https://www.gog.com/game/renowned_explorers_the_emperors_challenge' ARCHIVE_BASE_EMPERORSCHALLENGE_6_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_520_25983.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_6_MD5='a2ea1ff34a78c9d3cb389373b6948604' ARCHIVE_BASE_EMPERORSCHALLENGE_6_SIZE='22000' ARCHIVE_BASE_EMPERORSCHALLENGE_6_VERSION='520-gog25983' ARCHIVE_BASE_EMPERORSCHALLENGE_5_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_516_25864.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_5_MD5='cd76b4c9b334d5b859c4dff171ec4c0f' ARCHIVE_BASE_EMPERORSCHALLENGE_5_SIZE='22000' ARCHIVE_BASE_EMPERORSCHALLENGE_5_VERSION='516-gog25864' ARCHIVE_BASE_EMPERORSCHALLENGE_4_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_512_25169.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_4_MD5='b402cec7fbc05fec42be3ae4ff1a26ec' ARCHIVE_BASE_EMPERORSCHALLENGE_4_SIZE='22000' ARCHIVE_BASE_EMPERORSCHALLENGE_4_VERSION='512-gog25169' ARCHIVE_BASE_EMPERORSCHALLENGE_3_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_508_23701.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_3_MD5='7f0b5df5318af767bfb306bd4e3f1e13' ARCHIVE_BASE_EMPERORSCHALLENGE_3_SIZE='22000' ARCHIVE_BASE_EMPERORSCHALLENGE_3_VERSION='508-gog23701' ARCHIVE_BASE_EMPERORSCHALLENGE_2_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_503_23529.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_2_MD5='fb2c6bc1201a3346c47e01f0e7aa136c' ARCHIVE_BASE_EMPERORSCHALLENGE_2_SIZE='22000' ARCHIVE_BASE_EMPERORSCHALLENGE_2_VERSION='503-gog23529' ARCHIVE_BASE_EMPERORSCHALLENGE_1_NAME='renowned_explorers_the_emperor_s_challenge_dlc_en_489_20916.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_1_MD5='553e0fa1ffed73c9c99022c20cfff707' ARCHIVE_BASE_EMPERORSCHALLENGE_1_SIZE='23000' ARCHIVE_BASE_EMPERORSCHALLENGE_1_VERSION='489-gog20916' ARCHIVE_BASE_EMPERORSCHALLENGE_0_NAME='renowned_explorers_the_emperor_s_challenge_dlc_en_466_15616.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_0_MD5='12baa49b557c92e2f5eae7ff99623d34' ARCHIVE_BASE_EMPERORSCHALLENGE_0_SIZE='23000' ARCHIVE_BASE_EMPERORSCHALLENGE_0_VERSION='466-gog15616' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' data/dlc_???.tim' 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 . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-renowned-explorers.sh0000755000000000000000000001120014471751340016014 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Renowned Explorers ### script_version=20240723.2 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='renowned-explorers' GAME_NAME='Renowned Explorers: International Society' ARCHIVE_BASE_9_NAME='renowned_explorers_international_society_522_26056.sh' ARCHIVE_BASE_9_MD5='fe38ae1c4dc2607923cc2a60019bff38' ARCHIVE_BASE_9_SIZE='1107554' ARCHIVE_BASE_9_VERSION='522-gog26056' ARCHIVE_BASE_9_URL='https://www.gog.com/game/renowned_explorers' ARCHIVE_BASE_8_NAME='renowned_explorers_international_society_520_25983.sh' ARCHIVE_BASE_8_MD5='2af1dedb29ac1b929971cc0912722760' ARCHIVE_BASE_8_SIZE='1200000' ARCHIVE_BASE_8_VERSION='520-gog25983' ARCHIVE_BASE_7_NAME='renowned_explorers_international_society_516_25864.sh' ARCHIVE_BASE_7_MD5='d868d4b76613b93a94650b750a52752f' ARCHIVE_BASE_7_SIZE='1200000' ARCHIVE_BASE_7_VERSION='516-gog25864' ARCHIVE_BASE_6_NAME='renowned_explorers_international_society_512_25169.sh' ARCHIVE_BASE_6_MD5='3f2eb242da5200a78c53162d152a3cac' ARCHIVE_BASE_6_SIZE='1100000' ARCHIVE_BASE_6_VERSION='512-gog25169' ARCHIVE_BASE_5_NAME='renowned_explorers_international_society_508_23701.sh' ARCHIVE_BASE_5_MD5='247551613c7aba4b4b31f7a98fa31949' ARCHIVE_BASE_5_SIZE='1100000' ARCHIVE_BASE_5_VERSION='508-gog23701' ARCHIVE_BASE_4_NAME='renowned_explorers_international_society_503_23529.sh' ARCHIVE_BASE_4_MD5='6b7555749bc89cc3dda223e2d43bd838' ARCHIVE_BASE_4_SIZE='1100000' ARCHIVE_BASE_4_VERSION='503-gog23529' ARCHIVE_BASE_3_NAME='renowned_explorers_international_society_en_489_21590.sh' ARCHIVE_BASE_3_MD5='9fb2cbe095d437d788eb8ec6402db20b' ARCHIVE_BASE_3_SIZE='1100000' ARCHIVE_BASE_3_VERSION='489-gog21590' ARCHIVE_BASE_2_NAME='renowned_explorers_international_society_en_489_20916.sh' ARCHIVE_BASE_2_MD5='42d0ecb54d8302545e78f41ed43acef6' ARCHIVE_BASE_2_SIZE='1100000' ARCHIVE_BASE_2_VERSION='489-gog20916' ARCHIVE_BASE_1_NAME='renowned_explorers_international_society_en_466_15616.sh' ARCHIVE_BASE_1_MD5='fbad4b4d361a0e7d29b9781e3c5a5e85' ARCHIVE_BASE_1_SIZE='1100000' ARCHIVE_BASE_1_VERSION='466-gog15616' ARCHIVE_BASE_0_NAME='renowned_explorers_international_society_en_459_14894.sh' ARCHIVE_BASE_0_MD5='ff6b368b3919002d2db750213d33fcef' ARCHIVE_BASE_0_SIZE='1100000' ARCHIVE_BASE_0_VERSION='459-gog14894' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' x86_64/abbeycore' CONTENT_GAME_BIN32_FILES=' x86/abbeycore' CONTENT_GAME_DATA_FILES=' data soundbanks settings.ini *.bni' ## The game seems to save files randomly in either "savedata" or "userdata". ## We save both, even if it will probably end up using only one. USER_PERSISTENT_DIRECTORIES=' savedata userdata' USER_PERSISTENT_FILES=' settings.ini' APP_MAIN_EXE_BIN64='x86_64/abbeycore' APP_MAIN_EXE_BIN32='x86/abbeycore' ## No original game icon is provided, even for the Windows build, ## so we fall back on the GOG-specific icon. APP_MAIN_ICON='../support/icon.png' ## Work around inconsistent behaviour with some locales APP_MAIN_PRERUN=' # Work around inconsistent behaviour with some locales export LANG=C ' 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++abi.so.1 libc++.so.1 libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 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 . "$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-return-to-monkey-island.sh0000755000000000000000000000375714471751340016703 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Return to Monkey Island ### script_version=20240630.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='return-to-monkey-island' GAME_NAME='Return to Monkey Island' ARCHIVE_BASE_0_NAME='return_to_monkey_island_1_5_linux_60417.sh' ARCHIVE_BASE_0_MD5='ef405e58f99c56b69bdd1da811b79580' ARCHIVE_BASE_0_SIZE='4477001' ARCHIVE_BASE_0_VERSION='1.5-gog60417' ARCHIVE_BASE_0_URL='https://www.gog.com/game/return_to_monkey_island' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libfmod.so.13 libfmodstudio.so.13' CONTENT_GAME_BIN_FILES=' Return to Monkey Island' CONTENT_GAME_DATA_FILES=' Resources ReturnToMonkeyIsland.png Weird.ggpack??' APP_MAIN_EXE='Return to Monkey Island' APP_MAIN_ICON='ReturnToMonkeyIsland.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libEGL.so.1 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libuuid.so.1 libX11.so.6 libXi.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 . "$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-reus.sh0000755000000000000000000001012214471751340013132 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Reus ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='reus' GAME_NAME='Reus' ARCHIVE_BASE_GOG_1_NAME='reus_en_1_6_5_20844.sh' ARCHIVE_BASE_GOG_1_MD5='a768dd2347ac7f6be16ffa9e3f0952c4' ARCHIVE_BASE_GOG_1_SIZE='480000' ARCHIVE_BASE_GOG_1_VERSION='1.6.5-gog20844' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/reus' ARCHIVE_BASE_GOG_0_NAME='gog_reus_2.0.0.2.sh' ARCHIVE_BASE_GOG_0_MD5='25fe7ec93305e804558e4ef8a31fbbf8' ARCHIVE_BASE_GOG_0_SIZE='480000' ARCHIVE_BASE_GOG_0_VERSION='1.5.1-gog2.0.0.2' ARCHIVE_BASE_HUMBLE_1_NAME='reus-linux-1.6.5.tar.gz' ARCHIVE_BASE_HUMBLE_1_MD5='2b61251f7aa41542db03a1fe637b57dc' ARCHIVE_BASE_HUMBLE_1_SIZE='480000' ARCHIVE_BASE_HUMBLE_1_VERSION='1.6.5-humble180612' ARCHIVE_BASE_HUMBLE_1_URL='https://www.humblebundle.com/store/reus' ARCHIVE_BASE_HUMBLE_0_NAME='reus_linux_1389636757-bin' ARCHIVE_BASE_HUMBLE_0_MD5='9914e7fcb5f3b761941169ae13ec205c' ARCHIVE_BASE_HUMBLE_0_SIZE='380000' ARCHIVE_BASE_HUMBLE_0_VERSION='0.beta-humble140113' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='.' CONTENT_PATH_DEFAULT_HUMBLE_0='data' CONTENT_GAME_MAIN_FILES=' Audio Cursors Effects Fonts MainMenu Particles Settings Skeletons Textures UI Reus.exe Reus.bmp FNA.dll FNA.dll.config Game.*.dll Newtonsoft.Json.dll Reus.*.dll SpaceTech.dll SpaceTech.*.dll SpaceTech.*.dll.config SpaceTech2D.dll' CONTENT_DOC_MAIN_FILES=' Linux.README' ## Include shipped libraries that can not be replaced by system ones. CONTENT_LIBS_FILES=' libFontNative.so libmojoshader.so libtheorafile.so' CONTENT_LIBS_LIBS64_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib64" CONTENT_LIBS_LIBS64_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/lib64" CONTENT_LIBS_LIBS64_PATH_HUMBLE_0="${CONTENT_PATH_DEFAULT_HUMBLE_0}/lib64" CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES libfmodevent64-4.44.00.so libfmodex64-4.44.00.so" CONTENT_LIBS_LIBS32_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib" CONTENT_LIBS_LIBS32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/lib" CONTENT_LIBS_LIBS32_PATH_HUMBLE_0="${CONTENT_PATH_DEFAULT_HUMBLE_0}/lib" CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES libfmodevent-4.44.00.so libfmodex-4.44.00.so" APP_MAIN_EXE='Reus.exe' APP_MAIN_ICON='Reus.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libSDL2-2.0.so.0 libSDL2_image-2.0.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Microsoft.CSharp.dll Mono.CSharp.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Design.dll System.Drawing.dll System.Management.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Transactions.dll System.Xml.dll System.Xml.Linq.dll' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libfreetype.so.6 libm.so.6 libogg.so.0 libpthread.so.0 libstdc++.so.6 libtheoradec.so.1 libvorbis.so.0' PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_MAIN_DEPS="${PKG_MAIN_DEPS:-} $PKG_LIBS_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 . "$PLAYIT_LIB2" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-roadwarden.sh0000755000000000000000000000536214471751340014314 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Roadwarden ### script_version=20240528.3 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='roadwarden' GAME_NAME='Roadwarden' ARCHIVE_BASE_4_NAME='roadwarden_1_1_31_67621.sh' ARCHIVE_BASE_4_MD5='c5ce0e6b2b92a0ca49ab0bd06e018957' ARCHIVE_BASE_4_SIZE='867056' ARCHIVE_BASE_4_VERSION='1.1.31-gog67621' ARCHIVE_BASE_4_URL='https://www.gog.com/game/roadwarden' ARCHIVE_BASE_3_NAME='roadwarden_1_1_2_67478.sh' ARCHIVE_BASE_3_MD5='f62eb9f3027ea9b6fb4f76b87cc71471' ARCHIVE_BASE_3_SIZE='867052' ARCHIVE_BASE_3_VERSION='1.1.2-gog67478' ARCHIVE_BASE_2_NAME='roadwarden_1_0_92_63495.sh' ARCHIVE_BASE_2_MD5='1808e2f215bdca65324b909f2706574b' ARCHIVE_BASE_2_SIZE='870000' ARCHIVE_BASE_2_VERSION='1.0.92-gog63495' ARCHIVE_BASE_1_NAME='roadwarden_1_0_9_62941.sh' ARCHIVE_BASE_1_MD5='4fa5f13a40a2ae3e287493298e326e96' ARCHIVE_BASE_1_SIZE='870000' ARCHIVE_BASE_1_VERSION='1.0.9-gog62941' ARCHIVE_BASE_1_URL='https://www.gog.com/game/roadwarden' ARCHIVE_BASE_0_NAME='roadwarden_1_0_8_61761.sh' ARCHIVE_BASE_0_MD5='659218d7803632a38f8e72e4f4f83a26' ARCHIVE_BASE_0_SIZE='870000' ARCHIVE_BASE_0_VERSION='1.0.8-gog61761' CONTENT_PATH_DEFAULT='data/noarch/game/game' CONTENT_FONTS_MAIN_FILES=' munro.ttf philosopher.ttf' CONTENT_GAME_MAIN_FILES=' areas audio cache gui images tl script_version.txt *.png *.rpy *.rpyc *.ttf' APP_MAIN_TYPE='renpy' APP_MAIN_ICON='../../support/icon.png' ## Ensure easy upgrades from packages generated with pre-20240427.1 game scripts. PKG_MAIN_PROVIDES="${PKG_MAIN_PROVIDES:-} roadwarden-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 . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default ## Link the fonts in the hardcoded path the game engine expects. fonts_source=$(path_fonts_ttf) fonts_destination="$(package_path $(current_package))$(path_game_data)" mkdir --parents "$fonts_destination" for font_file in \ 'munro.ttf' \ 'philosopher.ttf' do ln --symbolic "${fonts_source}/${font_file}" "$fonts_destination" done # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-scrapland.sh0000755000000000000000000001007714471751340014134 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Scrapland ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='scrapland' GAME_NAME='Scrapland' ARCHIVE_BASE_0_NAME='setup_scrapland_remastered_1.6.1_(52159).exe' ARCHIVE_BASE_0_MD5='5f1a6494309632a2536c46e2bf3226bc' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_scrapland_remastered_1.6.1_(52159)-1.bin' ARCHIVE_BASE_0_PART1_MD5='93c07bedabd25a0d63c7ae36cf5abd47' ARCHIVE_BASE_0_PART2_NAME='setup_scrapland_remastered_1.6.1_(52159)-2.bin' ARCHIVE_BASE_0_PART2_MD5='8543d603b9c8eb6d666aec35387c311c' ARCHIVE_BASE_0_SIZE='8943631' ARCHIVE_BASE_0_VERSION='1.6.1-gog52159' ARCHIVE_BASE_0_URL='https://www.gog.com/game/scrapland_remastered' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bin dedicated scrap.cfg' CONTENT_GAME_L10N_EN_FILES=' language/english.txt video/bishop.vds video/intro.vds video/mayor.vds video/police.vds video/viscous.vds english.packed' CONTENT_GAME_L10N_FR_FILES=' language/french.txt french.packed' CONTENT_GAME_DATA_FILES=' video/mse.vds video/mse-short.vds data.packed data??.packed' CONTENT_VIDEO_L10N_FR_PATH='video/french' CONTENT_VIDEO_L10N_FR_FILES=' *.vds' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/MercurySteam/Scrapland' WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='bin/scrap.exe' ## Run the game binary from its parent directory. APP_MAIN_PRERUN=' # Run the game binary from its parent directory cd "$(dirname "$APP_EXE")" APP_EXE=$(basename "$APP_EXE") ' PACKAGES_LIST=' PKG_BIN PKG_L10N_EN PKG_L10N_FR PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/x-msvideo' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_EN_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_FR_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_EN_DESCRIPTION='English localization' PKG_L10N_FR_DESCRIPTION='English localization' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' ## Include language setting file. language_file_origin="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/goggame-1688988400.info" language_file_l10n_en_destination="$(package_path 'PKG_L10N_EN')$(path_game_data)/goggame-1688988400.info" language_file_l10n_fr_destination="$(package_path 'PKG_L10N_FR')$(path_game_data)/goggame-1688988400.info" mkdir --parents \ "$(dirname "$language_file_l10n_en_destination")" \ "$(dirname "$language_file_l10n_fr_destination")" sed --expression='s/"language": ".*",/"language": "English",/' \ "$language_file_origin" > "$language_file_l10n_en_destination" sed --expression='s/"language": ".*",/"language": "French",/' \ "$language_file_origin" > "$language_file_l10n_fr_destination" content_inclusion 'VIDEO_L10N_FR' 'PKG_L10N_FR' "$(path_game_data)/video" content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation case "$(messages_language)" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_L10N_EN' 'PKG_DATA' 'PKG_BIN' printf "$lang_string" "$lang_fr" print_instructions 'PKG_L10N_FR' 'PKG_DATA' 'PKG_BIN' # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-shadow-gambit.sh0000755000000000000000000001332414471751340014711 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Shadow Gambit ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='shadow-gambit' GAME_NAME='Shadow Gambit: The Cursed Crew' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='setup_shadow_gambit_the_cursed_crew_1.2.133.f.r40893_(64bit)_(69829).exe' ARCHIVE_BASE_0_MD5='b394c7866b3e2106b8659f76dcf3b814' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ## Do not convert the paths to lower case. ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_PART1_NAME='setup_shadow_gambit_the_cursed_crew_1.2.133.f.r40893_(64bit)_(69829)-1.bin' ARCHIVE_BASE_0_PART1_MD5='33d84cef13cae8cb1a27e03101cda2cc' ARCHIVE_BASE_0_PART2_NAME='setup_shadow_gambit_the_cursed_crew_1.2.133.f.r40893_(64bit)_(69829)-2.bin' ARCHIVE_BASE_0_PART2_MD5='aa475cf51a8a6b9f151a63e7f8acd226' ARCHIVE_BASE_0_PART3_NAME='setup_shadow_gambit_the_cursed_crew_1.2.133.f.r40893_(64bit)_(69829)-3.bin' ARCHIVE_BASE_0_PART3_MD5='8019f8a20edf33e894a49ccc84fdf867' ARCHIVE_BASE_0_PART4_NAME='setup_shadow_gambit_the_cursed_crew_1.2.133.f.r40893_(64bit)_(69829)-4.bin' ARCHIVE_BASE_0_PART4_MD5='d499dd2ab3f31e1ddb7c6b6c6f9d35c7' ARCHIVE_BASE_0_SIZE='27989056' ARCHIVE_BASE_0_VERSION='1.2.133.f-gog69829' ARCHIVE_BASE_0_URL='https://www.gog.com/game/shadow_gambit_the_cursed_crew' ARCHIVE_BASE_DEMO_0_NAME='setup_shadow_gambit_the_cursed_crew_demo_1.0.46.r37840.d_(64bit)_(66564).exe' ARCHIVE_BASE_DEMO_0_MD5='ad6c5d562cb5166301b82311495eb4fc' ARCHIVE_BASE_DEMO_0_EXTRACTOR='innoextract' ## Do not convert the paths to lower case. ARCHIVE_BASE_DEMO_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_DEMO_0_PART1_NAME='setup_shadow_gambit_the_cursed_crew_demo_1.0.46.r37840.d_(64bit)_(66564)-1.bin' ARCHIVE_BASE_DEMO_0_PART1_MD5='2ed0f7c0fe3bcba3cfe562ff687743cc' ARCHIVE_BASE_DEMO_0_PART2_NAME='setup_shadow_gambit_the_cursed_crew_demo_1.0.46.r37840.d_(64bit)_(66564)-2.bin' ARCHIVE_BASE_DEMO_0_PART2_MD5='cf8746aaa4ff9b40366c562367155876' ARCHIVE_BASE_DEMO_0_PART3_NAME='setup_shadow_gambit_the_cursed_crew_demo_1.0.46.r37840.d_(64bit)_(66564)-3.bin' ARCHIVE_BASE_DEMO_0_PART3_MD5='190c8d547cd6f3217a10038079431c9c' ARCHIVE_BASE_DEMO_0_SIZE='15729374' ARCHIVE_BASE_DEMO_0_VERSION='1.0.46-gog66564' ARCHIVE_BASE_DEMO_0_URL='https://www.gog.com/game/shadow_gambit_the_cursed_crew_demo' UNITY3D_NAME='ShadowGambit_TCC' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_EXPANSION_YUKI_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/aa/StandaloneWindows64/dlctrp_content_00" CONTENT_GAME_DATA_EXPANSION_ZAGAN_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/aa/StandaloneWindows64/dlcchc_content_00" CONTENT_GAME_DATA_BUNDLES1_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/aa/StandaloneWindows64/mis_*" CONTENT_GAME_DATA_BUNDLES2_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/aa/StandaloneWindows64/main_*" CONTENT_GAME_DATA_BUNDLES3_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/aa/StandaloneWindows64" WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/ShadowGambit_TCC' WINE_PERSISTENT_DIRECTORIES_DEMO=' users/${USER}/AppData/Local/ShadowGambit_TCC_Demo' PACKAGES_LIST=' PKG_BIN PKG_DATA_EXPANSION_YUKI PKG_DATA_EXPANSION_ZAGAN PKG_DATA_BUNDLES1 PKG_DATA_BUNDLES2 PKG_DATA_BUNDLES3 PKG_DATA' PACKAGES_LIST_DEMO=' PKG_BIN PKG_DATA_BUNDLES1 PKG_DATA_BUNDLES2 PKG_DATA_BUNDLES3 PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_EXPANSION_YUKI PKG_DATA_EXPANSION_ZAGAN PKG_DATA_BUNDLES1 PKG_DATA_BUNDLES2 PKG_DATA_BUNDLES3' PKG_DATA_DEPENDENCIES_SIBLINGS_DEMO=' PKG_DATA_BUNDLES1 PKG_DATA_BUNDLES2 PKG_DATA_BUNDLES3' PKG_DATA_EXPANSION_ID="${PKG_DATA_ID}-expansion" PKG_DATA_EXPANSION_YUKI_ID="${PKG_DATA_EXPANSION_ID}-yuki" PKG_DATA_EXPANSION_ZAGAN_ID="${PKG_DATA_EXPANSION_ID}-zagan" PKG_DATA_EXPANSION_DESCRIPTION="$PKG_DATA_DESCRIPTION - expansion" PKG_DATA_EXPANSION_YUKI_DESCRIPTION="$PKG_DATA_EXPANSION_DESCRIPTION - Yuki's Wish" PKG_DATA_EXPANSION_ZAGAN_DESCRIPTION="$PKG_DATA_EXPANSION_DESCRIPTION - Zagan's Ritual" PKG_DATA_BUNDLES_ID="${PKG_DATA_ID}-bundles" PKG_DATA_BUNDLES1_ID="${PKG_DATA_BUNDLES_ID}-1" PKG_DATA_BUNDLES2_ID="${PKG_DATA_BUNDLES_ID}-2" PKG_DATA_BUNDLES3_ID="${PKG_DATA_BUNDLES_ID}-3" PKG_DATA_BUNDLES_ID_DEMO="${PKG_DATA_ID_DEMO}-bundles" PKG_DATA_BUNDLES1_ID_DEMO="${PKG_DATA_BUNDLES_ID_DEMO}-1" PKG_DATA_BUNDLES2_ID_DEMO="${PKG_DATA_BUNDLES_ID_DEMO}-2" PKG_DATA_BUNDLES3_ID_DEMO="${PKG_DATA_BUNDLES_ID_DEMO}-3" PKG_DATA_BUNDLES_DESCRIPTION="$PKG_DATA_DESCRIPTION - bundles" PKG_DATA_BUNDLES1_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - 1" PKG_DATA_BUNDLES2_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - 2" PKG_DATA_BUNDLES3_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - 3" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-shadow-tactics-aikos-choice.sh0000755000000000000000000000407214471751340017434 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Shadow Tactics: Aiko's Choice ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='shadow-tactics-aikos-choice' GAME_NAME='Shadow Tactics: Blades of the Shogun - Aikoʼs Choice' ARCHIVE_BASE_0_NAME='setup_shadow_tactics_blades_of_the_shogun_-_aikos_choice_3.2.25.f.r4769a_(51855).exe' ARCHIVE_BASE_0_MD5='5e0cfcc243f249fded7906fea04f6544' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_shadow_tactics_blades_of_the_shogun_-_aikos_choice_3.2.25.f.r4769a_(51855)-1.bin' ARCHIVE_BASE_0_PART1_MD5='8bdc4420659b2382d742165fddb09705' ARCHIVE_BASE_0_SIZE='4569291' ARCHIVE_BASE_0_VERSION='3.2.25.f.r4769a-gog51855' ARCHIVE_BASE_0_URL='https://www.gog.com/game/shadow_tactics_blades_of_the_shogun_aikos_choice' UNITY3D_NAME='shadow tactics' CONTENT_PATH_DEFAULT='.' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/Daedalic Entertainment GmbH/Shadow Tactics Blades of the Shogun Aikos Choice' 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 . "$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-shadow-tactics.sh0000755000000000000000000000521614471751340015101 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Shadow Tactics ### script_version=20240711.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='shadow-tactics' GAME_NAME='Shadow Tactics: Blades of the Shogun' ARCHIVE_BASE_1_NAME='shadow_tactics_blades_of_the_shogun_en_2_2_10_f_21297.sh' ARCHIVE_BASE_1_MD5='e7772e7a5f4fee760e9311a9a899dbb3' ARCHIVE_BASE_1_SIZE='7642154' ARCHIVE_BASE_1_VERSION='2.2.10.f-gog21297' ARCHIVE_BASE_1_URL='https://www.gog.com/game/shadow_tactics_blades_of_the_shogun' ARCHIVE_BASE_0_NAME='shadow_tactics_blades_of_the_shogun_en_1_4_4_f_14723.sh' ARCHIVE_BASE_0_MD5='93faa090d5bcaa22f0faabd1e32c5909' ARCHIVE_BASE_0_SIZE='9600000' ARCHIVE_BASE_0_VERSION='1.4.4.f-gog14723' UNITY3D_NAME='Shadow Tactics' UNITY3D_PLUGINS=' libRenderingPlugin.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_LIGHTING_FILES=" ${UNITY3D_NAME}_Data/GI" PACKAGES_LIST=' PKG_BIN PKG_LIGHTING PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_LIGHTING 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_LIGHTING_ID="${GAME_ID}-lighting" PKG_LIGHTING_DESCRIPTION='lighting' 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 . "$PLAYIT_LIB2" # Link libRenderingPlugin.so to the harcoded path the game engine expects to find it. file_name='libRenderingPlugin.so' file_source="$(path_libraries)/${file_name}" file_destination="$(package_path 'PKG_BIN')$(path_game_data)/$(unity3d_name)_Data/Plugins/x86/${file_name}" mkdir --parents "$(dirname "$file_destination")" ln --symbolic "$file_source" "$file_destination" # 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-shadowrun-trilogy.sh0000755000000000000000000001250214471751340015661 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Shadowrun trilogy: # - Shadowrun Returns # - Shadowrun: Dragonfall # - Shadowrun: Hong Kong ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID_RETURNS='shadowrun-returns' GAME_NAME_RETURNS='Shadowrun Returns' GAME_ID_DRAGONFALL='shadowrun-dragonfall' GAME_NAME_DRAGONFALL='Shadowrun: Dragonfall' GAME_ID_HONGKONG='shadowrun-hong-kong' GAME_NAME_HONGKONG='Shadowrun: Hong Kong' # Archives ## Shadowrun Returns ARCHIVE_BASE_RETURNS_GOG_1_NAME='gog_shadowrun_returns_2.0.0.7.sh' ARCHIVE_BASE_RETURNS_GOG_1_MD5='61c12b14c7e6040cb1465390320a61da' ARCHIVE_BASE_RETURNS_GOG_1_SIZE='3000000' ARCHIVE_BASE_RETURNS_GOG_1_VERSION='1.2.7-gog2.0.0.7' ARCHIVE_BASE_RETURNS_GOG_1_URL='https://www.gog.com/game/shadowrun_returns' ARCHIVE_BASE_RETURNS_GOG_0_NAME='gog_shadowrun_returns_2.0.0.5.sh' ARCHIVE_BASE_RETURNS_GOG_0_MD5='feb59e116eb3fd7a12f484a135e37fa4' ARCHIVE_BASE_RETURNS_GOG_0_SIZE='3000000' ARCHIVE_BASE_RETURNS_GOG_0_VERSION='1.2.7-gog2.0.0.5' ARCHIVE_BASE_RETURNS_HUMBLE_0_NAME='shadowrun-returns-linux127.tar.gz' ARCHIVE_BASE_RETURNS_HUMBLE_0_MD5='ff3146b1ad046f81bf8f3deba277e472' ARCHIVE_BASE_RETURNS_HUMBLE_0_SIZE='3000000' ARCHIVE_BASE_RETURNS_HUMBLE_0_VERSION='1.2.7-humble140311' ARCHIVE_BASE_RETURNS_HUMBLE_0_URL='https://www.humblebundle.com/store/shadowrun-returns' ## Shadowrun: Dragonfall ARCHIVE_BASE_DRAGONFALL_0_NAME='gog_shadowrun_dragonfall_director_s_cut_2.6.0.11.sh' ARCHIVE_BASE_DRAGONFALL_0_MD5='ee3db5bc8554852337b063b993f66012' ARCHIVE_BASE_DRAGONFALL_0_SIZE='7200000' ARCHIVE_BASE_DRAGONFALL_0_VERSION='2.0.9-gog2.6.0.11' ARCHIVE_BASE_DRAGONFALL_0_URL='https://www.gog.com/game/shadowrun_dragonfall_directors_cut' ## Shadowrun: Hong Kong ARCHIVE_BASE_HONGKONG_0_NAME='gog_shadowrun_hong_kong_extended_edition_2.8.0.11.sh' ARCHIVE_BASE_HONGKONG_0_MD5='643ba68e47c309d391a6482f838e46af' ARCHIVE_BASE_HONGKONG_0_SIZE='12000000' ARCHIVE_BASE_HONGKONG_0_VERSION='3.1.2-gog2.8.0.11' ARCHIVE_BASE_HONGKONG_0_URL='https://www.gog.com/game/shadowrun_hong_kong_extended_edition' UNITY3D_NAME_RETURNS='Shadowrun' UNITY3D_NAME_DRAGONFALL='Dragonfall' UNITY3D_NAME_HONGKONG='SRHK' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_RETURNS_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_RETURNS_HUMBLE='Shadowrun Returns' CONTENT_PATH_DEFAULT_DRAGONFALL='data/noarch/game' CONTENT_PATH_DEFAULT_HONGKONG='data/noarch/game' CONTENT_GAME_DATA_STANDALONE_FILES=" *_Data/StreamingAssets/standalone" CONTENT_GAME0_DATA_FILES_HONGKONG=' dictionary' FAKE_HOME_PERSISTENT_DIRECTORIES_RETURNS=' Documents/Shadowrun Returns' FAKE_HOME_PERSISTENT_DIRECTORIES_DRAGONFALL=' Documents/Shadowrun Dragonfall' FAKE_HOME_PERSISTENT_DIRECTORIES_HONGKONG=' Documents/Shadowrun Hong Kong' ## Create required writable directory APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # Create required writable directory mkdir --parents DumpBox ' PACKAGES_LIST=' PKG_BIN PKG_DATA_STANDALONE PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES_RETURNS=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6' PKG_BIN_DEPENDENCIES_LIBRARIES_DRAGONFALL=' 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_BIN_DEPENDENCIES_LIBRARIES_HONGKONG=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_DATA_ID_RETURNS="${GAME_ID_RETURNS}-data" PKG_DATA_ID_DRAGONFALL="${GAME_ID_DRAGONFALL}-data" PKG_DATA_ID_HONGKONG="${GAME_ID_HONGKONG}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_STANDALONE' PKG_DATA_STANDALONE_ID_RETURNS="${PKG_DATA_ID_RETURNS}-standalone" PKG_DATA_STANDALONE_ID_DRAGONFALL="${PKG_DATA_ID_DRAGONFALL}-standalone" PKG_DATA_STANDALONE_ID_HONGKONG="${PKG_DATA_ID_HONGKONG}-standalone" PKG_DATA_STANDALONE_DESCRIPTION="$PKG_DATA_DESCRIPTION - standalone" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-shenzhen-io.sh0000755000000000000000000000625114471751340014413 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Shenzhen I/O ### script_version=20240718.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='shenzhen-io' GAME_NAME='Shenzhen I/O' ARCHIVE_BASE_2_NAME='shenzhen_i_o_gog_4_26_03_2023_63470.sh' ARCHIVE_BASE_2_MD5='50afcbddbb5226c26d1bd4a2fc780f58' ARCHIVE_BASE_2_SIZE='449123' ARCHIVE_BASE_2_VERSION='2023.03.26-gog63470' ARCHIVE_BASE_2_URL='https://www.gog.com/game/shenzhen_io' ARCHIVE_BASE_1_NAME='shenzhen_i_o_gog_3_11_14_2020_43142.sh' ARCHIVE_BASE_1_MD5='e804f591f8a65193e54964d9186ab6e8' ARCHIVE_BASE_1_SIZE='460000' ARCHIVE_BASE_1_VERSION='2020.11.14-gog43142' ARCHIVE_BASE_0_NAME='shenzhen_io_en_13_02_18613.sh' ARCHIVE_BASE_0_MD5='d7a3ccb58512bdc511d4fe8977480ff9' ARCHIVE_BASE_0_SIZE='450000' ARCHIVE_BASE_0_VERSION='13.02-gog18613' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' Shenzhen.bin.x86_64' CONTENT_GAME_BIN32_FILES=' Shenzhen.bin.x86' CONTENT_GAME_DATA_FILES=' Shenzhen.exe Shenzhen.exe.config Content PackedContent monoconfig monomachineconfig *.dll' CONTENT_DOC_DATA_FILES=' LICENSE.txt' ## Write access to some files is required. USER_PERSISTENT_DIRECTORIES=' Content/textures PackedContent/fonts' ## The shipped binaries are used instead of system-provided mono to avoid a crash when using the in-game command editor. ## See notes/shenzhen-io for details. APP_MAIN_EXE_BIN64='Shenzhen.bin.x86_64' APP_MAIN_EXE_BIN32='Shenzhen.bin.x86' APP_MAIN_ICON='Content/icon.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' ld-linux-x86-64.so.2 libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libSDL2_image-2.0.so.0 libSDL2_mixer-2.0.so.0 libvorbisfile.so.3' 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 . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Apply common Mono tweaks. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(mono_launcher_tweaks)" launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-shogo-mobile-armor-division.sh0000755000000000000000000000607014471751340017507 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Shogo: Mobile Armor Division ### script_version=20240721.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' 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' ## Without a WINE virtual desktop, mouselook can lead to erratic camera behaviour. WINE_VIRTUAL_DESKTOP='auto' 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 . "$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-slay-the-princess.sh0000755000000000000000000001163614471751340015541 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Slay the Princess ### script_version=20240515.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='slay-the-princess' GAME_NAME='Slay the Princess' ARCHIVE_BASE_11_NAME='slay_the_princess_end_of_everything_update_1_2e_scrollbar_73222.sh' ARCHIVE_BASE_11_MD5='f1e7f54e99ceae8aa4c1314274708b1d' ARCHIVE_BASE_11_SIZE='8799577' ARCHIVE_BASE_11_VERSION='1.2e-gog73222' ARCHIVE_BASE_11_URL='https://www.gog.com/game/slay_the_princess' ARCHIVE_BASE_10_NAME='slay_the_princess_end_of_everything_update_1_2d_linux_better_controller_73049.sh' ARCHIVE_BASE_10_MD5='bf46a8f8820d6821bd9313dd49c35771' ARCHIVE_BASE_10_SIZE='8799553' ARCHIVE_BASE_10_VERSION='1.2d-gog73049' ARCHIVE_BASE_9_NAME='slay_the_princess_end_of_everything_update_1_2c_linux_better_controller_72957.sh' ARCHIVE_BASE_9_MD5='c93f7c398fc157d14679c93fcea26299' ARCHIVE_BASE_9_SIZE='8799548' ARCHIVE_BASE_9_VERSION='1.2c-gog72957' ARCHIVE_BASE_8_NAME='slay_the_princess_end_of_everything_update_1_2b_linux_72856.sh' ARCHIVE_BASE_8_MD5='6b9588bc80145f05bfc0105d4f97fda7' ARCHIVE_BASE_8_SIZE='8799541' ARCHIVE_BASE_8_VERSION='1.2b-gog72856' ARCHIVE_BASE_7_NAME='slay_the_princess_end_of_everything_update_1_2a_linux_72334.sh' ARCHIVE_BASE_7_MD5='caa8432a8b7e8c6d75191bf143714957' ARCHIVE_BASE_7_SIZE='8799532' ARCHIVE_BASE_7_VERSION='1.2a-gog72334' ARCHIVE_BASE_6_NAME='slay_the_princess_end_of_everything_update_1_2_linux_72260.sh' ARCHIVE_BASE_6_MD5='950c30b1f3496691ce2560cf3d55ed07' ARCHIVE_BASE_6_SIZE='8799446' ARCHIVE_BASE_6_VERSION='1.2-gog72260' ARCHIVE_BASE_5_NAME='slay_the_princess_linux_1_1c_release_70031.sh' ARCHIVE_BASE_5_MD5='d2ab1e74725c1e28f2f3a8e74347b4ee' ARCHIVE_BASE_5_SIZE='8362317' ARCHIVE_BASE_5_VERSION='1.1c-gog70031' ARCHIVE_BASE_4_NAME='slay_the_princess_linux_1_1af_release_69960.sh' ARCHIVE_BASE_4_MD5='f179e501f2edd3357c73b81eca40b34d' ARCHIVE_BASE_4_SIZE='8378490' ARCHIVE_BASE_4_VERSION='1.1af-gog69960' ARCHIVE_BASE_3_NAME='slay_the_princess_linux_1_0h_release_69787.sh' ARCHIVE_BASE_3_MD5='851f53732e9dc6314677271f67852f35' ARCHIVE_BASE_3_SIZE='11000045' ARCHIVE_BASE_3_VERSION='1.0h-gog69787' ARCHIVE_BASE_2_NAME='slay_the_princess_linux_1_0g_release_68787.sh' ARCHIVE_BASE_2_MD5='3b8417d581d1d721ab4016720a1ea881' ARCHIVE_BASE_2_SIZE='10989272' ARCHIVE_BASE_2_VERSION='1.0g-gog68787' ARCHIVE_BASE_1_NAME='slay_the_princess_linux_1_0f_release_68611.sh' ARCHIVE_BASE_1_MD5='a4fd4334624bbc469a481fc874df2750' ARCHIVE_BASE_1_SIZE='11003752' ARCHIVE_BASE_1_VERSION='1.0f-gog68611' ARCHIVE_BASE_0_NAME='slay_the_princess_linux_1_0d_release_68521.sh' ARCHIVE_BASE_0_MD5='7acf7f8093cdddff8d484aa4043e5c51' ARCHIVE_BASE_0_SIZE='11014500' ARCHIVE_BASE_0_VERSION='1.0d-gog68521' CONTENT_PATH_DEFAULT='data/noarch/game/game' CONTENT_GAME_MAIN_FILES=' audio cache gui images staging script_version.txt' CONTENT_GAME_ARCHIVE_1_FILES=' archive.rpa.split00' CONTENT_GAME_ARCHIVE_2_FILES=' archive.rpa.split01' ## archive.rpa.split02 is only provided with some old builds. CONTENT_GAME0_ARCHIVE_2_FILES=' archive.rpa.split02' APP_MAIN_TYPE='renpy' APP_MAIN_ICON='../../support/icon.png' PACKAGES_LIST=' PKG_MAIN PKG_ARCHIVE_1 PKG_ARCHIVE_2' PKG_ARCHIVE_ID="${GAME_ID}-archive" PKG_ARCHIVE_1_ID="${PKG_ARCHIVE_ID}-1" PKG_ARCHIVE_2_ID="${PKG_ARCHIVE_ID}-2" PKG_ARCHIVE_DESCRIPTION='archive chunks' PKG_ARCHIVE_1_DESCRIPTION="$PKG_ARCHIVE_DESCRIPTION - 1" PKG_ARCHIVE_2_DESCRIPTION="$PKG_ARCHIVE_DESCRIPTION - 2" PKG_MAIN_DEPS="${PKG_MAIN_DEPS:-} $PKG_ARCHIVE_1 $PKG_ARCHIVE_2" ## Ensure easy upgrades from packages generated with pre-20240427.1 game scripts. PKG_MAIN_PROVIDES="${PKG_MAIN_PROVIDES:-} slay-the-princess-data" PKG_ARCHIVE_1_PROVIDES="${PKG_ARCHIVE_1_PROVIDES:-} slay-the-princess-data-archive-1" PKG_ARCHIVE_2_PROVIDES="${PKG_ARCHIVE_2_PROVIDES:-} slay-the-princess-data-archive-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 . "$PLAYIT_LIB2" # 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 ## Rebuild the huge file from its chunks. huge_file='archive.rpa' PKG_MAIN_POSTINST_RUN="$(package_postinst_actions 'PKG_MAIN') $(huge_file_concatenate "$huge_file")" PKG_MAIN_PRERM_RUN="$(package_prerm_actions 'PKG_MAIN') $(huge_file_delete "$huge_file")" packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-song-of-farca.sh0000755000000000000000000000406214471751340014604 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Song of Farca ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='song-of-farca' GAME_NAME='Song of Farca' ARCHIVE_BASE_2_NAME='song_of_farca_1_0_2_15_59133.sh' ARCHIVE_BASE_2_MD5='3130d206d897c7e41b8349a426fe0a49' ARCHIVE_BASE_2_SIZE='1820017' ARCHIVE_BASE_2_VERSION='1.0.2.15-gog59133' ARCHIVE_BASE_2_URL='https://www.gog.com/game/song_of_farca' ARCHIVE_BASE_1_NAME='song_of_farca_1_0_2_8_52330.sh' ARCHIVE_BASE_1_MD5='dd45ac62732f088acc44f60ddbb97724' ARCHIVE_BASE_1_SIZE='1900000' ARCHIVE_BASE_1_VERSION='1.0.2.8-gog52330' ARCHIVE_BASE_0_NAME='song_of_farca_1_0_2_2_49499.sh' ARCHIVE_BASE_0_MD5='d06f0dd62349c0834f1a8366f5525935' ARCHIVE_BASE_0_SIZE='1900000' ARCHIVE_BASE_0_VERSION='1.0.2.2-gog49499' UNITY3D_NAME='Song of Farca' UNITY3D_PLUGINS=' libzipw.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-sovereign-syndicate.sh0000755000000000000000000000441314471751340016144 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Sovereign Syndicate ### script_version=20240531.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='sovereign-syndicate' GAME_NAME='Sovereign Syndicate' ARCHIVE_BASE_0_NAME='setup_sovereign_syndicate_1.0.36_(64bit)_(72092).exe' ARCHIVE_BASE_0_MD5='266029b31e13dc11b808cd87b4b31eb9' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_sovereign_syndicate_1.0.36_(64bit)_(72092)-1.bin' ARCHIVE_BASE_0_PART1_MD5='8872971818c95eee27f80f7684209c1c' ARCHIVE_BASE_0_PART2_NAME='setup_sovereign_syndicate_1.0.36_(64bit)_(72092)-2.bin' ARCHIVE_BASE_0_PART2_MD5='3de81fad53bfddf5c3eaa6c6598af2b7' ARCHIVE_BASE_0_SIZE='11071403' ARCHIVE_BASE_0_VERSION='1.0.36-gog72092' ARCHIVE_BASE_0_URL='https://www.gog.com/game/sovereign_syndicate' UNITY3D_NAME='sovereign syndicate' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_SHAREDASSETS_FILES=" ${UNITY3D_NAME}_data/sharedassets*" WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Crimson Herring Studios/Sovereign Syndicate' PACKAGES_LIST=' PKG_BIN PKG_DATA_SHAREDASSETS PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_SHAREDASSETS_ID="${PKG_DATA_ID}-sharedassets" PKG_DATA_SHAREDASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - shared assets" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_SHAREDASSETS_ID" 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 . "$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-star-wars-galactic-battlegrounds.sh0000755000000000000000000000737714471751340020541 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Star Wars: Galactic Battlegrounds ### script_version=20240720.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='star-wars-galactic-battlegrounds' GAME_NAME='Star Wars: Galactic Battlegrounds' ARCHIVE_BASE_EN_0_NAME='setup_sw_galactic_battlegrounds_saga_2.0.0.4.exe' ARCHIVE_BASE_EN_0_MD5='6af25835c5f240914cb04f7b4f741813' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='819518' ARCHIVE_BASE_EN_0_VERSION='1.1-gog2.0.0.4' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/star_wars_galactic_battlegrounds_saga' ARCHIVE_BASE_FR_0_NAME='setup_sw_galactic_battlegrounds_saga_french_2.0.0.4.exe' ARCHIVE_BASE_FR_0_MD5='b30458033e825ad252e2d5b3dc8a7845' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_SIZE='807572' ARCHIVE_BASE_FR_0_VERSION='1.1-gog2.0.0.4' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/star_wars_galactic_battlegrounds_saga' CONTENT_PATH_DEFAULT='app/game' CONTENT_GAME_BIN_FILES=' libogg-0.dll libvorbis-0.dll libvorbisfile-3.dll win32.dll *.exe' CONTENT_GAME_L10N_FILES=' history taunt sound/campaign sound/scenario campaign/media/1c2s6_end.mm data/gamedata_x1.drs scenario/default0.scx data/list*.crx data/genie*.dat language*.dll data/sounds.*drs' CONTENT_GAME_DATA_FILES=' ai campaign data extras music random savegame scenario sound *.avi' CONTENT_DOC_DATA_PATH="${CONTENT_PATH_DEFAULT}/.." CONTENT_DOC_DATA_FILES=' *.pdf' USER_PERSISTENT_DIRECTORIES=' ai campaign random savegame scenario' USER_PERSISTENT_FILES=' data/*.dat player.nf*' ## Without a WINE virtual desktop, only a black screen is rendered. WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='battlegrounds.exe' APP_ADDON_ID="${GAME_ID}-clone-wars" APP_ADDON_NAME="$GAME_NAME - Clone Wars" APP_ADDON_EXE='battlegrounds_x1.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Work around CD check registry_dump_nocd_file='registry-dumps/no-cd-check.reg' registry_dump_nocd_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\LucasArts Entertainment Company LLC\Star Wars Galactic Battlegrounds\1.0] "CDPath"="C:"' CONTENT_GAME_BIN_FILES="${CONTENT_GAME_BIN_FILES:-} $registry_dump_nocd_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_nocd_file" SCRIPT_DEPS="${SCRIPT_DEPS:-} iconv" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Work around CD check. mkdir --parents "$(dirname "$registry_dump_nocd_file")" printf '%s' "$registry_dump_nocd_content" | \ iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_nocd_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-star-wars-knights-of-the-old-republic.sh0000755000000000000000000002170614471751340021315 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays set -o errexit ### # Star Wars: Knights of the Old Republic series: # - Star Wars: Knights of the Old Republic 1 # - Star Wars: Knights of the Old Republic 2 ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID_KOTOR1='star-wars-knights-of-the-old-republic-1' GAME_NAME_KOTOR1='Star Wars: Knights of the Old Republic' GAME_ID_KOTOR2='star-wars-knights-of-the-old-republic-2' GAME_NAME_KOTOR2='Star Wars: Knights of the Old Republic Ⅱ - The Sith Lords' # Archives ## Star Wars: Knights of the Old Republic 1 ARCHIVE_BASE_KOTOR1_EN_0_NAME='setup_star_wars_-_knights_of_the_old_republic_1.03_(29871).exe' ARCHIVE_BASE_KOTOR1_EN_0_MD5='6ea3df208a9cb3c8ca54eac2d0e2e4a9' ARCHIVE_BASE_KOTOR1_EN_0_TYPE='innosetup' ARCHIVE_BASE_KOTOR1_EN_0_PART1_NAME='setup_star_wars_-_knights_of_the_old_republic_1.03_(29871)-1.bin' ARCHIVE_BASE_KOTOR1_EN_0_PART1_MD5='51d4eea9a76df9b99fba114c40005cfe' ARCHIVE_BASE_KOTOR1_EN_0_SIZE='3800000' ARCHIVE_BASE_KOTOR1_EN_0_VERSION='1.03-gog29871' ARCHIVE_BASE_KOTOR1_EN_0_URL='https://www.gog.com/game/star_wars_knights_of_the_old_republic' ARCHIVE_BASE_KOTOR1_FR_0_NAME='setup_star_wars_-_knights_of_the_old_republic_1.03_(french)_(29871).exe' ARCHIVE_BASE_KOTOR1_FR_0_MD5='8db7abdf7dc05e8f65ea2599c9486b8d' ARCHIVE_BASE_KOTOR1_FR_0_TYPE='innosetup' ARCHIVE_BASE_KOTOR1_FR_0_PART1_NAME='setup_star_wars_-_knights_of_the_old_republic_1.03_(french)_(29871)-1.bin' ARCHIVE_BASE_KOTOR1_FR_0_PART1_MD5='010bce761719c5e4570e136092a075fe' ARCHIVE_BASE_KOTOR1_FR_0_SIZE='3800000' ARCHIVE_BASE_KOTOR1_FR_0_VERSION='1.03-gog29871' ARCHIVE_BASE_KOTOR1_FR_0_URL='https://www.gog.com/game/star_wars_knights_of_the_old_republic' ARCHIVE_BASE_KOTOR1_DE_0_NAME='setup_star_wars_-_knights_of_the_old_republic_1.03_(german)_(29871).exe' ARCHIVE_BASE_KOTOR1_DE_0_MD5='ba963a9d4e61aabd7f654437b1f6a69e' ARCHIVE_BASE_KOTOR1_DE_0_TYPE='innosetup' ARCHIVE_BASE_KOTOR1_DE_0_PART1_NAME='setup_star_wars_-_knights_of_the_old_republic_1.03_(german)_(29871)-1.bin' ARCHIVE_BASE_KOTOR1_DE_0_PART1_MD5='ac11ebefb89767bc38d3521ba048ec31' ARCHIVE_BASE_KOTOR1_DE_0_SIZE='3900000' ARCHIVE_BASE_KOTOR1_DE_0_VERSION='1.03-gog29871' ARCHIVE_BASE_KOTOR1_DE_0_URL='https://www.gog.com/game/star_wars_knights_of_the_old_republic' ## Star Wars: Knights of the Old Republic 2 ARCHIVE_BASE_KOTOR2_EN_1_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_update_(56101).exe' ARCHIVE_BASE_KOTOR2_EN_1_MD5='8ebaa4234c475ef66f8fcf7aa8835d80' ARCHIVE_BASE_KOTOR2_EN_1_TYPE='innosetup' ARCHIVE_BASE_KOTOR2_EN_1_PART1_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_update_(56101)-1.bin' ARCHIVE_BASE_KOTOR2_EN_1_PART1_MD5='9ba032cb1cdd08f07c0968ed7c4efa50' ARCHIVE_BASE_KOTOR2_EN_1_SIZE='4900000' ARCHIVE_BASE_KOTOR2_EN_1_VERSION='1.0b-gog56101' ARCHIVE_BASE_KOTOR2_EN_1_URL='https://www.gog.com/game/star_wars_knights_of_the_old_republic_ii_the_sith_lords' ARCHIVE_BASE_KOTOR2_FR_1_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_update_(french)_(56101).exe' ARCHIVE_BASE_KOTOR2_FR_1_MD5='17f853ecf017b408bee397a4f127dc37' ARCHIVE_BASE_KOTOR2_FR_1_TYPE='innosetup' ARCHIVE_BASE_KOTOR2_FR_1_PART1_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_update_(french)_(56101)-1.bin' ARCHIVE_BASE_KOTOR2_FR_1_PART1_MD5='7958318830a662b45fa3b79456713b40' ARCHIVE_BASE_KOTOR2_FR_1_SIZE='4800000' ARCHIVE_BASE_KOTOR2_FR_1_VERSION='1.0b-gog56101' ARCHIVE_BASE_KOTOR2_FR_1_URL='https://www.gog.com/game/star_wars_knights_of_the_old_republic_ii_the_sith_lords' ARCHIVE_BASE_KOTOR2_DE_1_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_update_(german)_(56101).exe' ARCHIVE_BASE_KOTOR2_DE_1_MD5='f67334a28b571238993d85ab9fdba3ef' ARCHIVE_BASE_KOTOR2_DE_1_TYPE='innosetup' ARCHIVE_BASE_KOTOR2_DE_1_PART1_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_update_(german)_(56101)-1.bin' ARCHIVE_BASE_KOTOR2_DE_1_PART1_MD5='64a734389a26611b8bec1d597c6efb52' ARCHIVE_BASE_KOTOR2_DE_1_SIZE='4800000' ARCHIVE_BASE_KOTOR2_DE_1_VERSION='1.0b-gog56101' ARCHIVE_BASE_KOTOR2_DE_1_URL='https://www.gog.com/game/star_wars_knights_of_the_old_republic_ii_the_sith_lords' ARCHIVE_BASE_KOTOR2_EN_0_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_(29869).exe' ARCHIVE_BASE_KOTOR2_EN_0_MD5='7f7a2e14e5ebadf14c0cdbb1ee807521' ARCHIVE_BASE_KOTOR2_EN_0_TYPE='innosetup' ARCHIVE_BASE_KOTOR2_EN_0_PART1_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_(29869)-1.bin' ARCHIVE_BASE_KOTOR2_EN_0_PART1_MD5='8092cf5da5fa165f88d67e172c610c5e' ARCHIVE_BASE_KOTOR2_EN_0_SIZE='4700000' ARCHIVE_BASE_KOTOR2_EN_0_VERSION='1.0b-gog29869' ARCHIVE_BASE_KOTOR2_FR_0_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_(french)_(29869).exe' ARCHIVE_BASE_KOTOR2_FR_0_MD5='a16a80f377111ec4152e5d1b196f64f5' ARCHIVE_BASE_KOTOR2_FR_0_TYPE='innosetup' ARCHIVE_BASE_KOTOR2_FR_0_PART1_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_(french)_(29869)-1.bin' ARCHIVE_BASE_KOTOR2_FR_0_PART1_MD5='e68c85d7f0ad6212c9841276526aa5d3' ARCHIVE_BASE_KOTOR2_FR_0_SIZE='4600000' ARCHIVE_BASE_KOTOR2_FR_0_VERSION='1.0b-gog29869' ARCHIVE_BASE_KOTOR2_DE_0_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_(german)_(29869).exe' ARCHIVE_BASE_KOTOR2_DE_0_MD5='fa7e9e961dfe14d730c4ec571ebe6f0e' ARCHIVE_BASE_KOTOR2_DE_0_TYPE='innosetup' ARCHIVE_BASE_KOTOR2_DE_0_PART1_NAME='setup_star_wars_-_knights_of_the_old_republic_ii_1.0b_(german)_(29869)-1.bin' ARCHIVE_BASE_KOTOR2_DE_0_PART1_MD5='26ebb49d133a564538be2d3a5b35c3d2' ARCHIVE_BASE_KOTOR2_DE_0_SIZE='4600000' ARCHIVE_BASE_KOTOR2_DE_0_VERSION='1.0b-gog29869' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' miles utils *.exe *.dll' CONTENT_GAME_L10N_FILES=' patch.erf lips override streamwaves streamsounds streamvoice movies/01a.bik movies/02.bik movies/09.bik movies/31a.bik movies/50.bik movies/56b.bik movies/kre* movies/leclogo.bik movies/legal.bik movies/permov01.bik movies/scn* movies/trailer.bik *.tlk' CONTENT_GAME_DATA_FILES=' chitin.key data modules rims streammusic texturepacks movies' CONTENT_GAME0_DATA_PATH='__support/app' CONTENT_GAME0_DATA_FILES=' *.ini' CONTENT_DOC_L10N_FILES=' docs *.pdf *.txt' # Applications USER_PERSISTENT_DIRECTORIES=' saves' USER_PERSISTENT_FILES=' *.ini' APP_CONFIG_CAT='Settings' APP_CONFIG_EXE='swconfig.exe' ## Star Wars: Knights of the Old Republic 1 APP_MAIN_EXE_KOTOR1='swkotor.exe' APP_CONFIG_ID_KOTOR1="${GAME_ID_KOTOR1}-config" APP_CONFIG_NAME_KOTOR1="$GAME_NAME_KOTOR1 - Configuration" ## Star Wars: Knights of the Old Republic 2 APP_MAIN_EXE_KOTOR2='swkotor2.exe' APP_CONFIG_ID_KOTOR2="${GAME_ID_KOTOR2}-config" APP_CONFIG_NAME_KOTOR2="$GAME_NAME_KOTOR2 - configuration" # Packages PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_L10N_DESCRIPTION_DE='German localization' PKG_DATA_DESCRIPTION='data' ## Star Wars: Knights of the Old Republic 1 PKG_L10N_BASE_ID_KOTOR1="${GAME_ID_KOTOR1}-l10n" PKG_L10N_ID_KOTOR1_EN="${PKG_L10N_BASE_ID_KOTOR1}-en" PKG_L10N_ID_KOTOR1_FR="${PKG_L10N_BASE_ID_KOTOR1}-fr" PKG_L10N_ID_KOTOR1_DE="${PKG_L10N_BASE_ID_KOTOR1}-de" PKG_L10N_PROVIDES_KOTOR1=" $PKG_L10N_BASE_ID_KOTOR1" PKG_L10N_DESCRIPTION_KOTOR1_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_KOTOR1_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_KOTOR1_DE="$PKG_L10N_DESCRIPTION_DE" PKG_DATA_ID_KOTOR1="${GAME_ID_KOTOR1}-data" ## Star Wars: Knights of the Old Republic 2 PKG_L10N_BASE_ID_KOTOR2="${GAME_ID_KOTOR2}-l10n" PKG_L10N_ID_KOTOR2_EN="${PKG_L10N_BASE_ID_KOTOR2}-en" PKG_L10N_ID_KOTOR2_FR="${PKG_L10N_BASE_ID_KOTOR2}-fr" PKG_L10N_ID_KOTOR2_DE="${PKG_L10N_BASE_ID_KOTOR2}-de" PKG_L10N_PROVIDES_KOTOR2=" $PKG_L10N_BASE_ID_KOTOR2" PKG_L10N_DESCRIPTION_KOTOR2_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_KOTOR2_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_KOTOR2_DE="$PKG_L10N_DESCRIPTION_DE" PKG_DATA_ID_KOTOR2="${GAME_ID_KOTOR2}-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 . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete unwanted files rm --force --recursive \ '__redist' \ 'commonappdata' \ 'tmp' ) # 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-startopia.sh0000755000000000000000000000572014471751340014172 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Startopia ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='startopia' GAME_NAME='Startopia' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ## Archives ### Full game ARCHIVE_BASE_0_NAME='setup_startopia_2.0.0.17.exe' ARCHIVE_BASE_0_MD5='4fe8d194afc1012e136ed3e82f1de171' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='600000' ARCHIVE_BASE_0_VERSION='1.01b-gog2.0.0.17' ARCHIVE_BASE_0_URL='https://www.gog.com/game/startopia' ### Free demo ARCHIVE_BASE_DEMO_0_NAME='startopia_demo.exe' ARCHIVE_BASE_DEMO_0_MD5='2e170f8c4700b2d271ac2a6fac23920a' ARCHIVE_BASE_DEMO_0_TYPE='zip' ARCHIVE_BASE_DEMO_0_SIZE='149364' ARCHIVE_BASE_DEMO_0_VERSION='2001.5.15.1-archive.org' ARCHIVE_BASE_DEMO_0_URL='https://archive.org/details/startopia_demo' CONTENT_PATH_DEFAULT='app' CONTENT_PATH_DEFAULT_DEMO='.' CONTENT_GAME_BIN_FILES=' binkw32.dll startopia.exe startopia.ini' CONTENT_GAME_DATA_FILES=' cardid.tom data intro languageinis missions startopia.jpg text' CONTENT_DOC_DATA_FILES=' eula weblinks *.doc *.html *.pdf *.rtf *.txt' USER_PERSISTENT_DIRECTORIES=' profiles' USER_PERSISTENT_FILES=' startopia.ini' WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='startopia.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_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 . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Free demo - Convert all file paths to lowercase. case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) tolower . ;; esac ## Generate a minimal configuration file. config_file='startopia.ini' game_path="C:\\$(game_id)" intro_path="${game_path}\\intro\\" drive_path_music="${game_path}\\data\\" drive_path_sound="${game_path}\\data\\" drive_path_voice="${game_path}\\data\\" cat > "$config_file" <<- EOF [Intro] IntroPath=$intro_path [Sound] DrivePathMusic=$drive_path_music DrivePathSound=$drive_path_sound SoundPathVoice=$drive_path_voice EOF ) # 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-steamworld-games.sh0000755000000000000000000001212714471751340015436 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # SteamWorld games: # - SteamWorld Dig 1 # - SteamWorld Dig 2 # - SteamWorld Heist # - SteamWorld Quest ### script_version=20240529.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID_DIG1='steamworld-dig-1' GAME_NAME_DIG1='SteamWorld Dig: A Fistful of Dirt' GAME_ID_DIG2='steamworld-dig-2' GAME_NAME_DIG2='SteamWorld Dig 2' GAME_ID_HEIST='steamworld-heist' GAME_NAME_HEIST='SteamWorld Heist' GAME_ID_QUEST='steamworld-quest' GAME_NAME_QUEST='SteamWorld Quest: Hand of Gilgamech' # Archives ## SteamWorld Dig 1 ARCHIVE_BASE_DIG1_GOG_0_NAME='gog_steamworld_dig_2.0.0.7.sh' ARCHIVE_BASE_DIG1_GOG_0_MD5='2f2ed68e00f151ff3c4d0092d8d6b15b' ARCHIVE_BASE_DIG1_GOG_0_SIZE='79000' ARCHIVE_BASE_DIG1_GOG_0_VERSION='1.10-gog2.0.0.7' ARCHIVE_BASE_DIG1_GOG_0_URL='https://www.gog.com/game/steamworld_dig' ARCHIVE_BASE_DIG1_HUMBLE_0_NAME='SteamWorldDig_linux_1393468453.tar.gz' ARCHIVE_BASE_DIG1_HUMBLE_0_MD5='de6ff6273c4e397413d852472d51e788' ARCHIVE_BASE_DIG1_HUMBLE_0_SIZE='77000' ARCHIVE_BASE_DIG1_HUMBLE_0_VERSION='1.10-humble140220' ARCHIVE_BASE_DIG1_HUMBLE_0_URL='https://www.humblebundle.com/store/steamworld-dig' ## SteamWorld Dig 2 ARCHIVE_BASE_DIG2_0_NAME='steamworld_dig_2_en_1_1_15062.sh' ARCHIVE_BASE_DIG2_0_MD5='baafa458aaef7fc9c80e076d48e754f0' ARCHIVE_BASE_DIG2_0_SIZE='220000' ARCHIVE_BASE_DIG2_0_VERSION='1.1-gog15062' ARCHIVE_BASE_DIG2_0_URL='https://www.gog.com/game/steamworld_dig' ## SteamWorld Heist ARCHIVE_BASE_HEIST_0_NAME='SteamWorldHeist.tar.gz' ARCHIVE_BASE_HEIST_0_MD5='79a499459c09d7881efeb95be7abc559' ARCHIVE_BASE_HEIST_0_VERSION='1.0-humble170131' ARCHIVE_BASE_HEIST_0_SIZE='200000' ARCHIVE_BASE_HEIST_0_URL='https://www.humblebundle.com/store/steamworld-heist' ## SteamWorld Quest ARCHIVE_BASE_QUEST_0_NAME='steamworld_quest_hand_of_gilgamech_2_1_31741.sh' ARCHIVE_BASE_QUEST_0_MD5='cffa9b745ef4ca37123b5928c37effe0' ARCHIVE_BASE_QUEST_0_SIZE='1200000' ARCHIVE_BASE_QUEST_0_VERSION='2.1-gog31741' ARCHIVE_BASE_QUEST_0_URL='https://www.gog.com/game/steamworld_quest_hand_of_gilgamech' # Archives content CONTENT_GAME_DATA_FILES=' icon.bmp icon.png Bundle BundlePC' CONTENT_DOC_DATA_FILES=' Licenses readme.txt' ## SteamWorld Dig 1 CONTENT_PATH_DEFAULT_DIG1_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_DIG1_HUMBLE='SteamWorldDig' CONTENT_GAME_BIN_FILES_DIG1=' SteamWorldDig' ## SteamWorld Dig 2 CONTENT_PATH_DEFAULT_DIG2='data/noarch/game' CONTENT_GAME_BIN_FILES_DIG2=' Dig2' ## SteamWorld Dig 2 CONTENT_PATH_DEFAULT_HEIST='SteamWorldHeist' CONTENT_GAME_BIN_FILES_HEIST=' Heist' ## SteamWorld Dig 2 CONTENT_PATH_DEFAULT_QUEST='data/noarch/game' CONTENT_GAME_BIN_FILES_QUEST=' Quest' APP_MAIN_ICON='icon.png' APP_MAIN_EXE_DIG1='SteamWorldDig' APP_MAIN_EXE_DIG2='Dig2' APP_MAIN_EXE_HEIST='Heist' APP_MAIN_EXE_QUEST='Quest' ## The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". APP_MAIN_PRERUN='# The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' # Packages PACKAGES_LIST='PKG_BIN PKG_DATA' PKG_DATA_DESCRIPTION='data' ## SteamWorld Dig 1 PKG_DATA_ID_DIG1="${GAME_ID_DIG1}-data" PKG_BIN_ARCH_DIG1='32' PKG_BIN_DEPS_DIG1="$PKG_DATA_ID_DIG1" PKG_BIN_DEPENDENCIES_LIBRARIES_DIG1=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' ## SteamWorld Dig 2 PKG_DATA_ID_DIG2="${GAME_ID_DIG2}-data" PKG_BIN_ARCH_DIG2='64' PKG_BIN_DEPS_DIG2="$PKG_DATA_ID_DIG2" PKG_BIN_DEPENDENCIES_LIBRARIES_DIG2=' libc.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6' ## SteamWorld Heist PKG_DATA_ID_HEIST="${GAME_ID_HEIST}-data" PKG_BIN_ARCH_HEIST='32' PKG_BIN_DEPS_HEIST="$PKG_DATA_ID_HEIST" PKG_BIN_DEPENDENCIES_LIBRARIES_HEIST=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libstdc++.so.6' ## SteamWorld Quest PKG_DATA_ID_QUEST="${GAME_ID_QUEST}-data" PKG_BIN_ARCH_QUEST='64' PKG_BIN_DEPS_QUEST="$PKG_DATA_ID_QUEST" PKG_BIN_DEPENDENCIES_LIBRARIES_QUEST=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.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 . "$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-stellaris-expansions-extra.sh0000755000000000000000000002607114471751340017476 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Stellaris expansions (extra content): # - Arachnoid Portrait Pack # - Horizon Signal # - Anniversary Portraits ### script_version=20240721.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='stellaris' GAME_NAME='Stellaris' EXPANSION_ID_ARACHNOID='arachnoid' EXPANSION_NAME_ARACHNOID='Arachnoid Portrait Pack' EXPANSION_ID_HORIZONSIGNAL='horizon-signal' EXPANSION_NAME_HORIZONSIGNAL='Horizon Signal' EXPANSION_ID_ANNIVERSARY='anniversary' EXPANSION_NAME_ANNIVERSARY='Anniversary Portraits' # Archives ## Arachnoid Portrait Pack ARCHIVE_BASE_ARACHNOID_59_NAME='stellaris_arachnoid_portrait_pack_3_12_5_74193.sh' ARCHIVE_BASE_ARACHNOID_59_MD5='f753906a3ff33592d853b6634d14cfb9' ARCHIVE_BASE_ARACHNOID_59_SIZE='817' ARCHIVE_BASE_ARACHNOID_59_VERSION='3.12.5-gog74193' ARCHIVE_BASE_ARACHNOID_59_URL='https://www.gog.com/game/stellaris_galaxy_edition_upgrade_pack' ARCHIVE_BASE_ARACHNOID_58_NAME='stellaris_arachnoid_portrait_pack_3_12_4_1_74025.sh' ARCHIVE_BASE_ARACHNOID_58_MD5='fd81b7db983fa6b0f2c8cbb8cec095e3' ARCHIVE_BASE_ARACHNOID_58_SIZE='817' ARCHIVE_BASE_ARACHNOID_58_VERSION='3.12.4-gog74025' ARCHIVE_BASE_ARACHNOID_57_NAME='stellaris_arachnoid_portrait_pack_3_12_2_73401.sh' ARCHIVE_BASE_ARACHNOID_57_MD5='d76c73867ffae85db339a58000eac498' ARCHIVE_BASE_ARACHNOID_57_SIZE='817' ARCHIVE_BASE_ARACHNOID_57_VERSION='3.12.2-gog73401' ARCHIVE_BASE_ARACHNOID_56_NAME='stellaris_arachnoid_portrait_pack_3_12_1_73183.sh' ARCHIVE_BASE_ARACHNOID_56_MD5='691d2438e0f50a8674ee2ae2d0327ea9' ARCHIVE_BASE_ARACHNOID_56_SIZE='817' ARCHIVE_BASE_ARACHNOID_56_VERSION='3.12.1-gog73183' ARCHIVE_BASE_ARACHNOID_55_NAME='stellaris_arachnoid_portrait_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_ARACHNOID_55_MD5='5e073b99755aa71fa8b4063e53b4335c' ARCHIVE_BASE_ARACHNOID_55_SIZE='817' ARCHIVE_BASE_ARACHNOID_55_VERSION='3.11.3-gog72561' ARCHIVE_BASE_ARACHNOID_52_NAME='stellaris_arachnoid_portrait_pack_3_10_4_70670.sh' ARCHIVE_BASE_ARACHNOID_52_MD5='a1adad0576df7d51e3035c0f1ad23c1b' ARCHIVE_BASE_ARACHNOID_52_SIZE='817' ARCHIVE_BASE_ARACHNOID_52_VERSION='3.10.4-gog70670' ARCHIVE_BASE_ARACHNOID_46_NAME='stellaris_arachnoid_portrait_pack_3_9_3_68314.sh' ARCHIVE_BASE_ARACHNOID_46_MD5='7e9c3036c905d049728186576f8a56eb' ARCHIVE_BASE_ARACHNOID_46_SIZE='1136' ARCHIVE_BASE_ARACHNOID_46_VERSION='3.9.3-gog68314' ARCHIVE_BASE_ARACHNOID_43_NAME='stellaris_arachnoid_portrait_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_ARACHNOID_43_MD5='3c4a57c69955b4b7fc63e46ea06684a5' ARCHIVE_BASE_ARACHNOID_43_SIZE='1200' ARCHIVE_BASE_ARACHNOID_43_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_ARACHNOID_39_NAME='stellaris_arachnoid_portrait_pack_3_7_4_63489.sh' ARCHIVE_BASE_ARACHNOID_39_MD5='e4d76799d90bf18a2666460bae14db93' ARCHIVE_BASE_ARACHNOID_39_SIZE='1200' ARCHIVE_BASE_ARACHNOID_39_VERSION='3.7.4-gog63489' ARCHIVE_BASE_ARACHNOID_36_NAME='stellaris_arachnoid_portrait_pack_3_6_1_60754.sh' ARCHIVE_BASE_ARACHNOID_36_MD5='41240ed75d7100557b57914ee66c1f49' ARCHIVE_BASE_ARACHNOID_36_SIZE='1200' ARCHIVE_BASE_ARACHNOID_36_VERSION='3.6.1-gog60754' ARCHIVE_BASE_ARACHNOID_34_NAME='stellaris_arachnoid_portrait_pack_3_5_3_59410.sh' ARCHIVE_BASE_ARACHNOID_34_MD5='6aff6463161944a265b502f434577fc9' ARCHIVE_BASE_ARACHNOID_34_SIZE='1200' ARCHIVE_BASE_ARACHNOID_34_VERSION='3.5.3-gog59410' ARCHIVE_BASE_ARACHNOID_32_NAME='stellaris_arachnoid_portrait_pack_3_4_5_56913.sh' ARCHIVE_BASE_ARACHNOID_32_MD5='ace768013cc7aaa46182586349432ddf' ARCHIVE_BASE_ARACHNOID_32_SIZE='1200' ARCHIVE_BASE_ARACHNOID_32_VERSION='3.4.5-gog56913' ARCHIVE_BASE_ARACHNOID_28_NAME='stellaris_arachnoid_portrait_pack_3_3_4_54421.sh' ARCHIVE_BASE_ARACHNOID_28_MD5='2d7bd0d2246fcec48ca8bbf8cdb456e8' ARCHIVE_BASE_ARACHNOID_28_SIZE='1200' ARCHIVE_BASE_ARACHNOID_28_VERSION='3.3.4-gog54421' ARCHIVE_BASE_ARACHNOID_24_NAME='stellaris_arachnoid_portrait_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_ARACHNOID_24_MD5='fab840f6c4a70dcb7c19c913d711af20' ARCHIVE_BASE_ARACHNOID_24_SIZE='1200' ARCHIVE_BASE_ARACHNOID_24_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_ARACHNOID_23_NAME='stellaris_arachnoid_portrait_pack_3_1_1_50008.sh' ARCHIVE_BASE_ARACHNOID_23_MD5='0ccdf6386dc2b9c062e9d272550392a1' ARCHIVE_BASE_ARACHNOID_23_SIZE='1200' ARCHIVE_BASE_ARACHNOID_23_VERSION='3.1.1-gog50008' ARCHIVE_BASE_ARACHNOID_22_NAME='stellaris_arachnoid_portrait_pack_3_0_3_47193.sh' ARCHIVE_BASE_ARACHNOID_22_MD5='d9619c256ed79a50cce26398b9ac8c11' ARCHIVE_BASE_ARACHNOID_22_SIZE='1200' ARCHIVE_BASE_ARACHNOID_22_VERSION='3.0.3-gog47193' ## Horizon Signal ARCHIVE_BASE_HORIZONSIGNAL_59_NAME='stellaris_horizon_signal_3_12_5_74193.sh' ARCHIVE_BASE_HORIZONSIGNAL_59_MD5='e0f7d5e0308ee01cd9fd4f3bc787e1b9' ARCHIVE_BASE_HORIZONSIGNAL_59_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_59_VERSION='3.12.5-gog74193' ARCHIVE_BASE_HORIZONSIGNAL_59_URL='https://www.gog.com/game/stellaris_horizon_signal' ARCHIVE_BASE_HORIZONSIGNAL_58_NAME='stellaris_horizon_signal_3_12_4_1_74025.sh' ARCHIVE_BASE_HORIZONSIGNAL_58_MD5='97499af5785e58b9c088c95c07d21859' ARCHIVE_BASE_HORIZONSIGNAL_58_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_58_VERSION='3.12.4-gog74025' ARCHIVE_BASE_HORIZONSIGNAL_57_NAME='stellaris_horizon_signal_3_12_2_73401.sh' ARCHIVE_BASE_HORIZONSIGNAL_57_MD5='cadfefd4ca074d6d6d4bf0f03a4aa191' ARCHIVE_BASE_HORIZONSIGNAL_57_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_57_VERSION='3.12.2-gog73401' ARCHIVE_BASE_HORIZONSIGNAL_56_NAME='stellaris_horizon_signal_3_12_1_73183.sh' ARCHIVE_BASE_HORIZONSIGNAL_56_MD5='5c2558b8423a6d9b6cdb68db9005a79e' ARCHIVE_BASE_HORIZONSIGNAL_56_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_56_VERSION='3.12.1-gog73183' ARCHIVE_BASE_HORIZONSIGNAL_55_NAME='stellaris_horizon_signal_3_11_3_0_72561.sh' ARCHIVE_BASE_HORIZONSIGNAL_55_MD5='d9074aa886455537cbeffb4364164b10' ARCHIVE_BASE_HORIZONSIGNAL_55_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_55_VERSION='3.11.3-gog72561' ARCHIVE_BASE_HORIZONSIGNAL_52_NAME='stellaris_horizon_signal_3_10_4_70670.sh' ARCHIVE_BASE_HORIZONSIGNAL_52_MD5='d81d5a8fcf2a2d406d9670530e80c4ea' ARCHIVE_BASE_HORIZONSIGNAL_52_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_52_VERSION='3.10.4-gog70670' ARCHIVE_BASE_HORIZONSIGNAL_46_NAME='stellaris_horizon_signal_3_9_3_68314.sh' ARCHIVE_BASE_HORIZONSIGNAL_46_MD5='b3b8eb00b7ca9c70445bf8b13641ae5e' ARCHIVE_BASE_HORIZONSIGNAL_46_SIZE='1136' ARCHIVE_BASE_HORIZONSIGNAL_46_VERSION='3.9.3-gog68314' ARCHIVE_BASE_HORIZONSIGNAL_43_NAME='stellaris_horizon_signal_3_8_4_1_65337.sh' ARCHIVE_BASE_HORIZONSIGNAL_43_MD5='97befa175f3b19a1bb0457ef9342b477' ARCHIVE_BASE_HORIZONSIGNAL_43_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_43_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_HORIZONSIGNAL_39_NAME='stellaris_horizon_signal_3_7_4_63489.sh' ARCHIVE_BASE_HORIZONSIGNAL_39_MD5='2c110df9fde65ba833611299f9089f11' ARCHIVE_BASE_HORIZONSIGNAL_39_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_39_VERSION='3.7.4-gog63489' ARCHIVE_BASE_HORIZONSIGNAL_36_NAME='stellaris_horizon_signal_3_6_1_60754.sh' ARCHIVE_BASE_HORIZONSIGNAL_36_MD5='2aa466583664f7849a8887288cc11c64' ARCHIVE_BASE_HORIZONSIGNAL_36_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_36_VERSION='3.6.1-gog60754' ARCHIVE_BASE_HORIZONSIGNAL_34_NAME='stellaris_horizon_signal_3_5_3_59410.sh' ARCHIVE_BASE_HORIZONSIGNAL_34_MD5='d8ed88b305b2b59eff219050dfefaaeb' ARCHIVE_BASE_HORIZONSIGNAL_34_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_34_VERSION='3.5.3-gog59410' ARCHIVE_BASE_HORIZONSIGNAL_32_NAME='stellaris_horizon_signal_3_4_5_56913.sh' ARCHIVE_BASE_HORIZONSIGNAL_32_MD5='6799f7b49323c768c3db7a2744e07e09' ARCHIVE_BASE_HORIZONSIGNAL_32_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_32_VERSION='3.4.5-gog56913' ARCHIVE_BASE_HORIZONSIGNAL_28_NAME='stellaris_horizon_signal_3_3_4_54421.sh' ARCHIVE_BASE_HORIZONSIGNAL_28_MD5='80c81dc86845976789437875b8fd3b2e' ARCHIVE_BASE_HORIZONSIGNAL_28_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_28_VERSION='3.3.4-gog54421' ARCHIVE_BASE_HORIZONSIGNAL_24_NAME='stellaris_horizon_signal_3_2_1_1_51520.sh' ARCHIVE_BASE_HORIZONSIGNAL_24_MD5='d9153fc1cf20a225e55cb001aa6b8c51' ARCHIVE_BASE_HORIZONSIGNAL_24_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_24_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_HORIZONSIGNAL_23_NAME='stellaris_horizon_signal_3_1_1_50008.sh' ARCHIVE_BASE_HORIZONSIGNAL_23_MD5='5c64e490ee6ac5e72816be2530e90f2b' ARCHIVE_BASE_HORIZONSIGNAL_23_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_23_VERSION='3.1.1-gog50008' ARCHIVE_BASE_HORIZONSIGNAL_22_NAME='stellaris_horizon_signal_3_0_3_47193.sh' ARCHIVE_BASE_HORIZONSIGNAL_22_MD5='40ddcd078680c3ab2bb5e98d7658bfa9' ARCHIVE_BASE_HORIZONSIGNAL_22_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_22_VERSION='3.0.3-gog47193' ## Anniversary Portraits ### Starting with game release 3.7.2, ### this expansion is included in the base game. ARCHIVE_BASE_ANNIVERSARY_35_NAME='stellaris_anniversary_portraits_3_6_1_60754.sh' ARCHIVE_BASE_ANNIVERSARY_35_MD5='13d5ed75ed18ae47fd8377a3c0f58eec' ARCHIVE_BASE_ANNIVERSARY_35_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_35_VERSION='3.6.1-gog60754' ARCHIVE_BASE_ANNIVERSARY_33_NAME='stellaris_anniversary_portraits_3_5_3_59410.sh' ARCHIVE_BASE_ANNIVERSARY_33_MD5='7fb42ed038df8658a160a1a575e92ca4' ARCHIVE_BASE_ANNIVERSARY_33_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_33_VERSION='3.5.3-gog59410' ARCHIVE_BASE_ANNIVERSARY_31_NAME='stellaris_anniversary_portraits_3_4_5_56913.sh' ARCHIVE_BASE_ANNIVERSARY_31_MD5='3e31e34d9abb5118a704b904275a14c5' ARCHIVE_BASE_ANNIVERSARY_31_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_31_VERSION='3.4.5-gog56913' ARCHIVE_BASE_ANNIVERSARY_27_NAME='stellaris_anniversary_portraits_3_3_4_54421.sh' ARCHIVE_BASE_ANNIVERSARY_27_MD5='d61fc4a3daaebdfa73b002e1865d65f8' ARCHIVE_BASE_ANNIVERSARY_27_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_27_VERSION='3.3.4-gog54421' ARCHIVE_BASE_ANNIVERSARY_23_NAME='stellaris_anniversary_portraits_3_2_1_1_51520.sh' ARCHIVE_BASE_ANNIVERSARY_23_MD5='8ef72fb6a3a0f648d5c484bad729194c' ARCHIVE_BASE_ANNIVERSARY_23_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_23_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_ANNIVERSARY_22_NAME='stellaris_anniversary_portraits_3_1_1_50008.sh' ARCHIVE_BASE_ANNIVERSARY_22_MD5='d6a97a96a73effc93e41f247b86db8e3' ARCHIVE_BASE_ANNIVERSARY_22_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_22_VERSION='3.1.1-gog50008' ARCHIVE_BASE_ANNIVERSARY_21_NAME='stellaris_anniversary_portraits_3_0_3_47193.sh' ARCHIVE_BASE_ANNIVERSARY_21_MD5='53b0dd554774acd8aa821b5be741b4d8' ARCHIVE_BASE_ANNIVERSARY_21_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_21_VERSION='3.0.3-gog47193' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-stellaris-expansions-species-packs.sh0000755000000000000000000005204114471751340021101 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Stellaris expansions (species packs): # - Plantoids # - Humanoids # - Lithoids # - Necroids # - Aquatics # - Toxoids ### script_version=20240721.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='stellaris' GAME_NAME='Stellaris' EXPANSION_ID_PLANTOID='plantoid' EXPANSION_NAME_PLANTOID='Plantoids Species Pack' EXPANSION_ID_HUMANOIDS='humanoids' EXPANSION_NAME_HUMANOIDS='Humanoids Species Pack' EXPANSION_ID_LITHOIDS='lithoids' EXPANSION_NAME_LITHOIDS='Lithoids Species Pack' EXPANSION_ID_NECROIDS='necroids' EXPANSION_NAME_NECROIDS='Necroids Species Pack' EXPANSION_ID_AQUATICS='aquatics' EXPANSION_NAME_AQUATICS='Aquatics Species Pack' EXPANSION_ID_TOXOIDS='toxoids' EXPANSION_NAME_TOXOIDS='Toxoids Species Pack' # Archives ## Plantoids ARCHIVE_BASE_PLANTOID_56_NAME='stellaris_plantoids_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_PLANTOID_56_MD5='c97796440232a0afa39a793efae40c67' ARCHIVE_BASE_PLANTOID_56_SIZE='837' ARCHIVE_BASE_PLANTOID_56_VERSION='3.12.5-gog74193' ARCHIVE_BASE_PLANTOID_56_URL='https://www.gog.com/game/stellaris_plantoids_species_pack' ARCHIVE_BASE_PLANTOID_55_NAME='stellaris_plantoids_species_pack_3_12_4_1_74025.sh' ARCHIVE_BASE_PLANTOID_55_MD5='270742bc4ec4b9fdb95c6e2b9859bd39' ARCHIVE_BASE_PLANTOID_55_SIZE='837' ARCHIVE_BASE_PLANTOID_55_VERSION='3.12.4-gog74025' ARCHIVE_BASE_PLANTOID_54_NAME='stellaris_plantoids_species_pack_3_12_2_73401.sh' ARCHIVE_BASE_PLANTOID_54_MD5='733dc8f83132aa0ef864a9c05a79f928' ARCHIVE_BASE_PLANTOID_54_SIZE='837' ARCHIVE_BASE_PLANTOID_54_VERSION='3.12.2-gog73401' ARCHIVE_BASE_PLANTOID_53_NAME='stellaris_plantoids_species_pack_3_12_1_73183.sh' ARCHIVE_BASE_PLANTOID_53_MD5='5ddf59900abe04cd2b7c940a3578f80d' ARCHIVE_BASE_PLANTOID_53_SIZE='837' ARCHIVE_BASE_PLANTOID_53_VERSION='3.12.1-gog73183' ARCHIVE_BASE_PLANTOID_52_NAME='stellaris_plantoids_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_PLANTOID_52_MD5='c301172fde38bcd14b9e7546f35e49d2' ARCHIVE_BASE_PLANTOID_52_SIZE='837' ARCHIVE_BASE_PLANTOID_52_VERSION='3.11.3-gog72561' ARCHIVE_BASE_PLANTOID_49_NAME='stellaris_plantoids_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_PLANTOID_49_MD5='fc70ea7215520e885c61d072463b9be4' ARCHIVE_BASE_PLANTOID_49_SIZE='837' ARCHIVE_BASE_PLANTOID_49_VERSION='3.10.4-gog70670' ARCHIVE_BASE_PLANTOID_43_NAME='stellaris_plantoids_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_PLANTOID_43_MD5='f38e8c826f876f52cea68b69f85ca079' ARCHIVE_BASE_PLANTOID_43_SIZE='1156' ARCHIVE_BASE_PLANTOID_43_VERSION='3.9.3-gog68314' ARCHIVE_BASE_PLANTOID_40_NAME='stellaris_plantoids_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_PLANTOID_40_MD5='c64fed3a260b17bdb07e439dc20304c7' ARCHIVE_BASE_PLANTOID_40_SIZE='1200' ARCHIVE_BASE_PLANTOID_40_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_PLANTOID_39_NAME='stellaris_plantoids_species_pack_3_8_3_1_64953.sh' ARCHIVE_BASE_PLANTOID_39_MD5='7b0cec949d962b027bc7bd108d79eeaf' ARCHIVE_BASE_PLANTOID_39_SIZE='1200' ARCHIVE_BASE_PLANTOID_39_VERSION='3.8.3.1-gog64953' ARCHIVE_BASE_PLANTOID_36_NAME='stellaris_plantoids_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_PLANTOID_36_MD5='5a2a9101e09cddc83e29c802b33639ed' ARCHIVE_BASE_PLANTOID_36_SIZE='1200' ARCHIVE_BASE_PLANTOID_36_VERSION='3.7.4-gog63489' ARCHIVE_BASE_PLANTOID_33_NAME='stellaris_plantoids_species_pack_3_6_1_60754.sh' ARCHIVE_BASE_PLANTOID_33_MD5='298bdd7c0f717f90c2045d0c9a68c1c9' ARCHIVE_BASE_PLANTOID_33_SIZE='1200' ARCHIVE_BASE_PLANTOID_33_VERSION='3.6.1-gog60754' ARCHIVE_BASE_PLANTOID_31_NAME='stellaris_plantoids_species_pack_3_5_3_59410.sh' ARCHIVE_BASE_PLANTOID_31_MD5='fabc6b9d5580dac6a456da962a765709' ARCHIVE_BASE_PLANTOID_31_SIZE='1200' ARCHIVE_BASE_PLANTOID_31_VERSION='3.5.3-gog59410' ARCHIVE_BASE_PLANTOID_29_NAME='stellaris_plantoids_species_pack_3_4_5_56913.sh' ARCHIVE_BASE_PLANTOID_29_MD5='b2b5023834509b4a5c2a12bb345380a1' ARCHIVE_BASE_PLANTOID_29_SIZE='1200' ARCHIVE_BASE_PLANTOID_29_VERSION='3.4.5-gog56913' ARCHIVE_BASE_PLANTOID_25_NAME='stellaris_plantoids_species_pack_3_3_4_54421.sh' ARCHIVE_BASE_PLANTOID_25_MD5='b8ea82b781639c7031ea53d4e155c5d1' ARCHIVE_BASE_PLANTOID_25_SIZE='1200' ARCHIVE_BASE_PLANTOID_25_VERSION='3.3.4-gog54421' ARCHIVE_BASE_PLANTOID_21_NAME='stellaris_plantoids_species_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_PLANTOID_21_MD5='260d8bc704b93f307d31807efbb5568f' ARCHIVE_BASE_PLANTOID_21_SIZE='1200' ARCHIVE_BASE_PLANTOID_21_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_PLANTOID_20_NAME='stellaris_plantoids_species_pack_3_1_1_50008.sh' ARCHIVE_BASE_PLANTOID_20_MD5='fb947af6a98e45645b482a484bd6d42e' ARCHIVE_BASE_PLANTOID_20_SIZE='1200' ARCHIVE_BASE_PLANTOID_20_VERSION='3.1.1-gog50008' ARCHIVE_BASE_PLANTOID_19_NAME='stellaris_plantoids_species_pack_3_0_3_47193.sh' ARCHIVE_BASE_PLANTOID_19_MD5='d1dc616e45d6d035ed3414687228f95a' ARCHIVE_BASE_PLANTOID_19_SIZE='1200' ARCHIVE_BASE_PLANTOID_19_VERSION='3.0.3-gog47193' ## Humanoids ARCHIVE_BASE_HUMANOIDS_56_NAME='stellaris_humanoids_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_HUMANOIDS_56_MD5='f7fa5900c87f3fb8cd43d9dcead97de2' ARCHIVE_BASE_HUMANOIDS_56_SIZE='116312' ARCHIVE_BASE_HUMANOIDS_56_VERSION='3.12.5-gog74193' ARCHIVE_BASE_HUMANOIDS_56_URL='https://www.gog.com/game/stellaris_humanoids_species_pack' ARCHIVE_BASE_HUMANOIDS_55_NAME='stellaris_humanoids_species_pack_3_12_4_1_74025.sh' ARCHIVE_BASE_HUMANOIDS_55_MD5='001eda53219385a7c112a3f6ddaff7f9' ARCHIVE_BASE_HUMANOIDS_55_SIZE='116312' ARCHIVE_BASE_HUMANOIDS_55_VERSION='3.12.4-gog74025' ARCHIVE_BASE_HUMANOIDS_54_NAME='stellaris_humanoids_species_pack_3_12_2_73401.sh' ARCHIVE_BASE_HUMANOIDS_54_MD5='56a8b2c43e30b779ad0352bc21f23f63' ARCHIVE_BASE_HUMANOIDS_54_SIZE='116312' ARCHIVE_BASE_HUMANOIDS_54_VERSION='3.12.2-gog73401' ARCHIVE_BASE_HUMANOIDS_53_NAME='stellaris_humanoids_species_pack_3_12_1_73183.sh' ARCHIVE_BASE_HUMANOIDS_53_MD5='d3cbb81ac3c037f43e24f41d74f83c9f' ARCHIVE_BASE_HUMANOIDS_53_SIZE='116312' ARCHIVE_BASE_HUMANOIDS_53_VERSION='3.12.1-gog73183' ARCHIVE_BASE_HUMANOIDS_52_NAME='stellaris_humanoids_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_HUMANOIDS_52_MD5='833ef910df4b00cfb7e3177b7525bee9' ARCHIVE_BASE_HUMANOIDS_52_SIZE='116312' ARCHIVE_BASE_HUMANOIDS_52_VERSION='3.11.3-gog72561' ARCHIVE_BASE_HUMANOIDS_49_NAME='stellaris_humanoids_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_HUMANOIDS_49_MD5='515dd7f2ae1c68fe53a589f77b7af19c' ARCHIVE_BASE_HUMANOIDS_49_SIZE='116312' ARCHIVE_BASE_HUMANOIDS_49_VERSION='3.10.4-gog70670' ARCHIVE_BASE_HUMANOIDS_43_NAME='stellaris_humanoids_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_HUMANOIDS_43_MD5='d970689331dfae6ad559b4dd8d146080' ARCHIVE_BASE_HUMANOIDS_43_SIZE='116636' ARCHIVE_BASE_HUMANOIDS_43_VERSION='3.9.3-gog68314' ARCHIVE_BASE_HUMANOIDS_40_NAME='stellaris_humanoids_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_HUMANOIDS_40_MD5='435cdbbe3a8affded29b3b6f9d36125a' ARCHIVE_BASE_HUMANOIDS_40_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_40_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_HUMANOIDS_36_NAME='stellaris_humanoids_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_HUMANOIDS_36_MD5='de7661496eba8a9d125b44f3075a71b7' ARCHIVE_BASE_HUMANOIDS_36_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_36_VERSION='3.7.4-gog63489' ARCHIVE_BASE_HUMANOIDS_33_NAME='stellaris_humanoids_species_pack_3_6_1_60754.sh' ARCHIVE_BASE_HUMANOIDS_33_MD5='5124b47dce3c7a7282087e521920fee9' ARCHIVE_BASE_HUMANOIDS_33_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_33_VERSION='3.6.1-gog60754' ARCHIVE_BASE_HUMANOIDS_31_NAME='stellaris_humanoids_species_pack_3_5_3_59410.sh' ARCHIVE_BASE_HUMANOIDS_31_MD5='9f92e8b6853b26bc31da38b5a0991a37' ARCHIVE_BASE_HUMANOIDS_31_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_31_VERSION='3.5.3-gog59410' ARCHIVE_BASE_HUMANOIDS_29_NAME='stellaris_humanoids_species_pack_3_4_5_56913.sh' ARCHIVE_BASE_HUMANOIDS_29_MD5='5fcd93a54b01f93bae743d49bf61860b' ARCHIVE_BASE_HUMANOIDS_29_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_29_VERSION='3.4.5-gog56913' ARCHIVE_BASE_HUMANOIDS_25_NAME='stellaris_humanoids_species_pack_3_3_4_54421.sh' ARCHIVE_BASE_HUMANOIDS_25_MD5='b7ccaa9303516274f7945882bd6a2d2f' ARCHIVE_BASE_HUMANOIDS_25_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_25_VERSION='3.3.4-gog54421' ARCHIVE_BASE_HUMANOIDS_21_NAME='stellaris_humanoids_species_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_HUMANOIDS_21_MD5='d56625b5ce55405530929bea32852f54' ARCHIVE_BASE_HUMANOIDS_21_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_21_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_HUMANOIDS_20_NAME='stellaris_humanoids_species_pack_3_1_1_50008.sh' ARCHIVE_BASE_HUMANOIDS_20_MD5='974908ceeb80ade57dfa00c957604d06' ARCHIVE_BASE_HUMANOIDS_20_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_20_VERSION='3.1.1-gog50008' ARCHIVE_BASE_HUMANOIDS_19_NAME='stellaris_humanoids_species_pack_3_0_3_47193.sh' ARCHIVE_BASE_HUMANOIDS_19_MD5='9dc8511383a7c36c54660d6d77d61117' ARCHIVE_BASE_HUMANOIDS_19_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_19_VERSION='3.0.3-gog47193' ## Lithoids ARCHIVE_BASE_LITHOIDS_44_NAME='stellaris_lithoids_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_LITHOIDS_44_MD5='bc4810ff3047e688c1ec0ae0991987ae' ARCHIVE_BASE_LITHOIDS_44_SIZE='52603' ARCHIVE_BASE_LITHOIDS_44_VERSION='3.12.5-gog74193' ARCHIVE_BASE_LITHOIDS_44_URL='https://www.gog.com/game/stellaris_lithoids_species_pack' ARCHIVE_BASE_LITHOIDS_43_NAME='stellaris_lithoids_species_pack_3_12_4_1_74025.sh' ARCHIVE_BASE_LITHOIDS_43_MD5='4fb488d3088126135d1fa6a2435e1165' ARCHIVE_BASE_LITHOIDS_43_SIZE='52603' ARCHIVE_BASE_LITHOIDS_43_VERSION='3.12.4-gog74025' ARCHIVE_BASE_LITHOIDS_42_NAME='stellaris_lithoids_species_pack_3_12_2_73401.sh' ARCHIVE_BASE_LITHOIDS_42_MD5='cdd908648182b22d1ec0661f35c9e8b9' ARCHIVE_BASE_LITHOIDS_42_SIZE='52603' ARCHIVE_BASE_LITHOIDS_42_VERSION='3.12.2-gog73401' ARCHIVE_BASE_LITHOIDS_41_NAME='stellaris_lithoids_species_pack_3_12_1_73183.sh' ARCHIVE_BASE_LITHOIDS_41_MD5='6d92087f30f2e219b11663ed3537e194' ARCHIVE_BASE_LITHOIDS_41_SIZE='52603' ARCHIVE_BASE_LITHOIDS_41_VERSION='3.12.1-gog73183' ARCHIVE_BASE_LITHOIDS_40_NAME='stellaris_lithoids_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_LITHOIDS_40_MD5='8ca00268fd2b3b4fb611b65bc2f4edb7' ARCHIVE_BASE_LITHOIDS_40_SIZE='52603' ARCHIVE_BASE_LITHOIDS_40_VERSION='3.11.3-gog72561' ARCHIVE_BASE_LITHOIDS_37_NAME='stellaris_lithoids_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_LITHOIDS_37_MD5='96caaa7c76349f34823372cc7f9dc769' ARCHIVE_BASE_LITHOIDS_37_SIZE='52603' ARCHIVE_BASE_LITHOIDS_37_VERSION='3.10.4-gog70670' ARCHIVE_BASE_LITHOIDS_31_NAME='stellaris_lithoids_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_LITHOIDS_31_MD5='baecdaa00168fe891ff419b71334f313' ARCHIVE_BASE_LITHOIDS_31_SIZE='52924' ARCHIVE_BASE_LITHOIDS_31_VERSION='3.9.3-gog68314' ARCHIVE_BASE_LITHOIDS_28_NAME='stellaris_lithoids_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_LITHOIDS_28_MD5='65723d6948a9380c1397b280f9bc20f4' ARCHIVE_BASE_LITHOIDS_28_SIZE='53000' ARCHIVE_BASE_LITHOIDS_28_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_LITHOIDS_24_NAME='stellaris_lithoids_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_LITHOIDS_24_MD5='bfc5632131852032fda229260aa179d6' ARCHIVE_BASE_LITHOIDS_24_SIZE='53000' ARCHIVE_BASE_LITHOIDS_24_VERSION='3.7.4-gog63489' ARCHIVE_BASE_LITHOIDS_21_NAME='stellaris_lithoids_species_pack_3_6_1_60754.sh' ARCHIVE_BASE_LITHOIDS_21_MD5='0adc3e342f420e26a04b256595eee248' ARCHIVE_BASE_LITHOIDS_21_SIZE='53000' ARCHIVE_BASE_LITHOIDS_21_VERSION='3.6.1-gog60754' ARCHIVE_BASE_LITHOIDS_19_NAME='stellaris_lithoids_species_pack_3_5_3_59410.sh' ARCHIVE_BASE_LITHOIDS_19_MD5='30bac0aa5302f556fb13511df2e8194b' ARCHIVE_BASE_LITHOIDS_19_SIZE='53000' ARCHIVE_BASE_LITHOIDS_19_VERSION='3.5.3-gog59410' ARCHIVE_BASE_LITHOIDS_17_NAME='stellaris_lithoids_species_pack_3_4_5_56913.sh' ARCHIVE_BASE_LITHOIDS_17_MD5='54fb17af3ed8b442074c83cf2b818693' ARCHIVE_BASE_LITHOIDS_17_SIZE='53000' ARCHIVE_BASE_LITHOIDS_17_VERSION='3.4.5-gog56913' ARCHIVE_BASE_LITHOIDS_13_NAME='stellaris_lithoids_species_pack_3_3_4_54421.sh' ARCHIVE_BASE_LITHOIDS_13_MD5='cde1e9ed0deaeff8850242e4157783be' ARCHIVE_BASE_LITHOIDS_13_SIZE='53000' ARCHIVE_BASE_LITHOIDS_13_VERSION='3.3.4-gog54421' ARCHIVE_BASE_LITHOIDS_9_NAME='stellaris_lithoids_species_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_LITHOIDS_9_MD5='ed5aca5df6d72a84f0572200e1d432fe' ARCHIVE_BASE_LITHOIDS_9_SIZE='53000' ARCHIVE_BASE_LITHOIDS_9_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_LITHOIDS_8_NAME='stellaris_lithoids_species_pack_3_1_1_50008.sh' ARCHIVE_BASE_LITHOIDS_8_MD5='c935a54a2e9ac78d195440d7ca1391f9' ARCHIVE_BASE_LITHOIDS_8_SIZE='53000' ARCHIVE_BASE_LITHOIDS_8_VERSION='3.1.1-gog50008' ARCHIVE_BASE_LITHOIDS_7_NAME='stellaris_lithoids_species_pack_3_0_3_47193.sh' ARCHIVE_BASE_LITHOIDS_7_MD5='44a8e1008468825af82ec138be388fe9' ARCHIVE_BASE_LITHOIDS_7_SIZE='53000' ARCHIVE_BASE_LITHOIDS_7_VERSION='3.0.3-gog47193' ## Necroids ARCHIVE_BASE_NECROIDS_29_NAME='stellaris_necroids_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_NECROIDS_29_MD5='3df3d9f80ed1d79a2f0f412535b77d54' ARCHIVE_BASE_NECROIDS_29_SIZE='49209' ARCHIVE_BASE_NECROIDS_29_VERSION='3.12.5-gog74193' ARCHIVE_BASE_NECROIDS_29_URL='https://www.gog.com/game/stellaris_necroids_species_pack' ARCHIVE_BASE_NECROIDS_28_NAME='stellaris_necroids_species_pack_3_12_4_1_74025.sh' ARCHIVE_BASE_NECROIDS_28_MD5='25d7cabea1f2a2c3dae4f00bbae0fd49' ARCHIVE_BASE_NECROIDS_28_SIZE='49209' ARCHIVE_BASE_NECROIDS_28_VERSION='3.12.4-gog74025' ARCHIVE_BASE_NECROIDS_27_NAME='stellaris_necroids_species_pack_3_12_2_73401.sh' ARCHIVE_BASE_NECROIDS_27_MD5='bd3fc243e8b5f271f28e412707dc9a75' ARCHIVE_BASE_NECROIDS_27_SIZE='49209' ARCHIVE_BASE_NECROIDS_27_VERSION='3.12.2-gog73401' ARCHIVE_BASE_NECROIDS_26_NAME='stellaris_necroids_species_pack_3_12_1_73183.sh' ARCHIVE_BASE_NECROIDS_26_MD5='a5107b771305fda5b471a28366b81d47' ARCHIVE_BASE_NECROIDS_26_SIZE='49209' ARCHIVE_BASE_NECROIDS_26_VERSION='3.12.1-gog73183' ARCHIVE_BASE_NECROIDS_25_NAME='stellaris_necroids_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_NECROIDS_25_MD5='d0f677482b688ebe46e0abf20ece8477' ARCHIVE_BASE_NECROIDS_25_SIZE='49209' ARCHIVE_BASE_NECROIDS_25_VERSION='3.11.3-gog72561' ARCHIVE_BASE_NECROIDS_22_NAME='stellaris_necroids_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_NECROIDS_22_MD5='5549b1dfec82af2de64537ed751a1920' ARCHIVE_BASE_NECROIDS_22_SIZE='49209' ARCHIVE_BASE_NECROIDS_22_VERSION='3.10.4-gog70670' ARCHIVE_BASE_NECROIDS_16_NAME='stellaris_necroids_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_NECROIDS_16_MD5='8afbc28fb3af625dd145381e44fe7bde' ARCHIVE_BASE_NECROIDS_16_SIZE='49524' ARCHIVE_BASE_NECROIDS_16_VERSION='3.9.3-gog68314' ARCHIVE_BASE_NECROIDS_13_NAME='stellaris_necroids_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_NECROIDS_13_MD5='2614b147a120b97e0d5e4f0a24719f82' ARCHIVE_BASE_NECROIDS_13_SIZE='50000' ARCHIVE_BASE_NECROIDS_13_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_NECROIDS_9_NAME='stellaris_necroids_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_NECROIDS_9_MD5='631269beefca458e901a727af53e09d0' ARCHIVE_BASE_NECROIDS_9_SIZE='50000' ARCHIVE_BASE_NECROIDS_9_VERSION='3.7.4-gog63489' ARCHIVE_BASE_NECROIDS_6_NAME='stellaris_necroids_species_pack_3_6_1_60754.sh' ARCHIVE_BASE_NECROIDS_6_MD5='13605c18c7d483b3c8abeff2d60c65f7' ARCHIVE_BASE_NECROIDS_6_SIZE='50000' ARCHIVE_BASE_NECROIDS_6_VERSION='3.6.1-gog60754' ARCHIVE_BASE_NECROIDS_4_NAME='stellaris_necroids_species_pack_3_5_3_59410.sh' ARCHIVE_BASE_NECROIDS_4_MD5='23faec896d52d6f2773e19838f365113' ARCHIVE_BASE_NECROIDS_4_SIZE='50000' ARCHIVE_BASE_NECROIDS_4_VERSION='3.5.3-gog59410' ARCHIVE_BASE_NECROIDS_2_NAME='stellaris_necroids_species_pack_3_4_5_56913.sh' ARCHIVE_BASE_NECROIDS_2_MD5='e64ecf03e49671cedf3e164709a5837a' ARCHIVE_BASE_NECROIDS_2_SIZE='50000' ARCHIVE_BASE_NECROIDS_2_VERSION='3.4.5-gog56913' ## Aquatics ARCHIVE_BASE_AQUATICS_27_NAME='stellaris_aquatics_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_AQUATICS_27_MD5='0d9d2d2a38c60025b79e72011b52837c' ARCHIVE_BASE_AQUATICS_27_SIZE='57544' ARCHIVE_BASE_AQUATICS_27_VERSION='3.12.5-gog74193' ARCHIVE_BASE_AQUATICS_27_URL='https://www.gog.com/game/stellaris_aquatics_species_pack' ARCHIVE_BASE_AQUATICS_26_NAME='stellaris_aquatics_species_pack_3_12_4_1_74025.sh' ARCHIVE_BASE_AQUATICS_26_MD5='d7875e26717ae5a7c86c660f0f9408d2' ARCHIVE_BASE_AQUATICS_26_SIZE='57544' ARCHIVE_BASE_AQUATICS_26_VERSION='3.12.4-gog74025' ARCHIVE_BASE_AQUATICS_25_NAME='stellaris_aquatics_species_pack_3_12_2_73401.sh' ARCHIVE_BASE_AQUATICS_25_MD5='18bd0132d65536988134a53ce5ad1f63' ARCHIVE_BASE_AQUATICS_25_SIZE='57544' ARCHIVE_BASE_AQUATICS_25_VERSION='3.12.2-gog73401' ARCHIVE_BASE_AQUATICS_24_NAME='stellaris_aquatics_species_pack_3_12_1_73183.sh' ARCHIVE_BASE_AQUATICS_24_MD5='f57b66ee25468393a76333676b014401' ARCHIVE_BASE_AQUATICS_24_SIZE='57544' ARCHIVE_BASE_AQUATICS_24_VERSION='3.12.1-gog73183' ARCHIVE_BASE_AQUATICS_23_NAME='stellaris_aquatics_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_AQUATICS_23_MD5='818beaf18d82951df0b1028eb0d7f78a' ARCHIVE_BASE_AQUATICS_23_SIZE='120876' ARCHIVE_BASE_AQUATICS_23_VERSION='3.11.3-gog72561' ARCHIVE_BASE_AQUATICS_20_NAME='stellaris_aquatics_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_AQUATICS_20_MD5='335d95744fa5467cad87e276fb8d6997' ARCHIVE_BASE_AQUATICS_20_SIZE='120876' ARCHIVE_BASE_AQUATICS_20_VERSION='3.10.4-gog70670' ARCHIVE_BASE_AQUATICS_14_NAME='stellaris_aquatics_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_AQUATICS_14_MD5='39294019e3f068916fea06f68e35b1ee' ARCHIVE_BASE_AQUATICS_14_SIZE='121448' ARCHIVE_BASE_AQUATICS_14_VERSION='3.9.3-gog68314' ARCHIVE_BASE_AQUATICS_11_NAME='stellaris_aquatics_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_AQUATICS_11_MD5='34a45daa4a4d1bf204dc9798917692b5' ARCHIVE_BASE_AQUATICS_11_SIZE='130000' ARCHIVE_BASE_AQUATICS_11_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_AQUATICS_7_NAME='stellaris_aquatics_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_AQUATICS_7_MD5='f825b3f150a7d936b04b3f5bd35d9f5b' ARCHIVE_BASE_AQUATICS_7_SIZE='130000' ARCHIVE_BASE_AQUATICS_7_VERSION='3.7.4-gog63489' ARCHIVE_BASE_AQUATICS_4_NAME='stellaris_aquatics_species_pack_3_6_1_60754.sh' ARCHIVE_BASE_AQUATICS_4_MD5='5cfdb2861b8c3de9c83798799b477ad6' ARCHIVE_BASE_AQUATICS_4_SIZE='130000' ARCHIVE_BASE_AQUATICS_4_VERSION='3.6.1-gog60754' ARCHIVE_BASE_AQUATICS_2_NAME='stellaris_aquatics_species_pack_3_5_3_59410.sh' ARCHIVE_BASE_AQUATICS_2_MD5='7e3210b2d64b851907a97ed3455ad035' ARCHIVE_BASE_AQUATICS_2_SIZE='130000' ARCHIVE_BASE_AQUATICS_2_VERSION='3.5.3-gog59410' ARCHIVE_BASE_AQUATICS_0_NAME='stellaris_aquatics_species_pack_3_4_5_56913.sh' ARCHIVE_BASE_AQUATICS_0_MD5='0d6fe86d3ec24b114742a333b8de4a3b' ARCHIVE_BASE_AQUATICS_0_SIZE='130000' ARCHIVE_BASE_AQUATICS_0_VERSION='3.4.5-gog56913' ## Toxoids ARCHIVE_BASE_TOXOIDS_20_NAME='stellaris_toxoids_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_TOXOIDS_20_MD5='788f0afe85d1f90c91567e3958ddcae1' ARCHIVE_BASE_TOXOIDS_20_SIZE='41495' ARCHIVE_BASE_TOXOIDS_20_VERSION='3.12.5-gog74193' ARCHIVE_BASE_TOXOIDS_20_URL='https://www.gog.com/game/stellaris_toxoids_species_pack' ARCHIVE_BASE_TOXOIDS_19_NAME='stellaris_toxoids_species_pack_3_12_4_1_74025.sh' ARCHIVE_BASE_TOXOIDS_19_MD5='5ed15f2afe4197243b25a0c10c3d1f93' ARCHIVE_BASE_TOXOIDS_19_SIZE='41495' ARCHIVE_BASE_TOXOIDS_19_VERSION='3.12.4-gog74025' ARCHIVE_BASE_TOXOIDS_18_NAME='stellaris_toxoids_species_pack_3_12_2_73401.sh' ARCHIVE_BASE_TOXOIDS_18_MD5='154d04533036338269bbfe154432bd31' ARCHIVE_BASE_TOXOIDS_18_SIZE='41495' ARCHIVE_BASE_TOXOIDS_18_VERSION='3.12.2-gog73401' ARCHIVE_BASE_TOXOIDS_17_NAME='stellaris_toxoids_species_pack_3_12_1_73183.sh' ARCHIVE_BASE_TOXOIDS_17_MD5='43ea4a72bd0c90b37d18c472b209b097' ARCHIVE_BASE_TOXOIDS_17_SIZE='41495' ARCHIVE_BASE_TOXOIDS_17_VERSION='3.12.1-gog73183' ARCHIVE_BASE_TOXOIDS_16_NAME='stellaris_toxoids_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_TOXOIDS_16_MD5='4dc7bf366e2e84febbe88f77057c018c' ARCHIVE_BASE_TOXOIDS_16_SIZE='41495' ARCHIVE_BASE_TOXOIDS_16_VERSION='3.11.3-gog72561' ARCHIVE_BASE_TOXOIDS_13_NAME='stellaris_toxoids_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_TOXOIDS_13_MD5='ee41aba19af2f2f91bbe3c156bf614f5' ARCHIVE_BASE_TOXOIDS_13_SIZE='41495' ARCHIVE_BASE_TOXOIDS_13_VERSION='3.10.4-gog70670' ARCHIVE_BASE_TOXOIDS_7_NAME='stellaris_toxoids_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_TOXOIDS_7_MD5='69ee5d18ffe310c64ee61934ec64aa1f' ARCHIVE_BASE_TOXOIDS_7_SIZE='41812' ARCHIVE_BASE_TOXOIDS_7_VERSION='3.9.3-gog68314' ARCHIVE_BASE_TOXOIDS_4_NAME='stellaris_toxoids_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_TOXOIDS_4_MD5='90926bd74621bf180a074d4721b594f9' ARCHIVE_BASE_TOXOIDS_4_SIZE='42000' ARCHIVE_BASE_TOXOIDS_4_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_TOXOIDS_0_NAME='stellaris_toxoids_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_TOXOIDS_0_MD5='e6af2b93063b67bc78d6a44c70caee1c' ARCHIVE_BASE_TOXOIDS_0_SIZE='42000' ARCHIVE_BASE_TOXOIDS_0_VERSION='3.7.4-gog63489' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-stellaris-expansions-story-packs.sh0000755000000000000000000004751414471751340020637 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Stellaris expansions (story packs): # - Leviathans # - Synthetic Dawn # - Distant Stars # - Ancient Relics # - First Contact ### script_version=20240721.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='stellaris' GAME_NAME='Stellaris' EXPANSION_ID_LEVIATHANS='leviathans' EXPANSION_NAME_LEVIATHANS='Leviathans Story Pack' EXPANSION_ID_SYNTHETICDAWN='synthetic-dawn' EXPANSION_NAME_SYNTHETICDAWN='Synthetic Dawn Story Pack' EXPANSION_ID_DISTANTSTARS='distant-stars' EXPANSION_NAME_DISTANTSTARS='Distant Stars Story Pack' EXPANSION_ID_ANCIENTRELICS='ancient-relics' EXPANSION_NAME_ANCIENTRELICS='Ancient Relics Story Pack' EXPANSION_ID_FIRSTCONTACT='first-contact' EXPANSION_NAME_FIRSTCONTACT='First Contact Story Pack' # Archives ## Leviathans ARCHIVE_BASE_LEVIATHANS_56_NAME='stellaris_leviathans_story_pack_3_12_5_74193.sh' ARCHIVE_BASE_LEVIATHANS_56_MD5='8ab8f647d2405c443ee699b1ec3e17b4' ARCHIVE_BASE_LEVIATHANS_56_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_56_VERSION='3.12.5-gog74193' ARCHIVE_BASE_LEVIATHANS_56_URL='https://www.gog.com/game/stellaris_leviathans_story_pack' ARCHIVE_BASE_LEVIATHANS_55_NAME='stellaris_leviathans_story_pack_3_12_4_1_74025.sh' ARCHIVE_BASE_LEVIATHANS_55_MD5='5c7db0bc37635d28e8365fca38ff3335' ARCHIVE_BASE_LEVIATHANS_55_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_55_VERSION='3.12.4-gog74025' ARCHIVE_BASE_LEVIATHANS_54_NAME='stellaris_leviathans_story_pack_3_12_2_73401.sh' ARCHIVE_BASE_LEVIATHANS_54_MD5='cac93c6dbb81c13c381701a4589f914b' ARCHIVE_BASE_LEVIATHANS_54_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_54_VERSION='3.12.2-gog73401' ARCHIVE_BASE_LEVIATHANS_53_NAME='stellaris_leviathans_story_pack_3_12_1_73183.sh' ARCHIVE_BASE_LEVIATHANS_53_MD5='fda0c7971c8c791e4498ffa019243920' ARCHIVE_BASE_LEVIATHANS_53_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_53_VERSION='3.12.1-gog73183' ARCHIVE_BASE_LEVIATHANS_52_NAME='stellaris_leviathans_story_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_LEVIATHANS_52_MD5='bbdede0f81d260b3225f671518d6f135' ARCHIVE_BASE_LEVIATHANS_52_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_52_VERSION='3.11.3-gog72561' ARCHIVE_BASE_LEVIATHANS_49_NAME='stellaris_leviathans_story_pack_3_10_4_70670.sh' ARCHIVE_BASE_LEVIATHANS_49_MD5='ca7bd55fd1121dff315cf4bdc748ce5c' ARCHIVE_BASE_LEVIATHANS_49_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_49_VERSION='3.10.4-gog70670' ARCHIVE_BASE_LEVIATHANS_43_NAME='stellaris_leviathans_story_pack_3_9_3_68314.sh' ARCHIVE_BASE_LEVIATHANS_43_MD5='12ed6b4e72c61d7d5a2223acfe3dec45' ARCHIVE_BASE_LEVIATHANS_43_SIZE='58744' ARCHIVE_BASE_LEVIATHANS_43_VERSION='3.9.3-gog68314' ARCHIVE_BASE_LEVIATHANS_40_NAME='stellaris_leviathans_story_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_LEVIATHANS_40_MD5='575490fe9da72c0211e65e42e2667544' ARCHIVE_BASE_LEVIATHANS_40_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_40_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_LEVIATHANS_36_NAME='stellaris_leviathans_story_pack_3_7_4_63489.sh' ARCHIVE_BASE_LEVIATHANS_36_MD5='e9bc3c4a49159663d905892a0f7f5a75' ARCHIVE_BASE_LEVIATHANS_36_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_36_VERSION='3.7.4-gog63489' ARCHIVE_BASE_LEVIATHANS_33_NAME='stellaris_leviathans_story_pack_3_6_1_60754.sh' ARCHIVE_BASE_LEVIATHANS_33_MD5='9ef91ba3bb1633cf4cb907f5de892817' ARCHIVE_BASE_LEVIATHANS_33_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_33_VERSION='3.6.1-gog60754' ARCHIVE_BASE_LEVIATHANS_31_NAME='stellaris_leviathans_story_pack_3_5_3_59410.sh' ARCHIVE_BASE_LEVIATHANS_31_MD5='46f80e45435155c5c94aa1f3bbabf797' ARCHIVE_BASE_LEVIATHANS_31_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_31_VERSION='3.5.3-gog59410' ARCHIVE_BASE_LEVIATHANS_29_NAME='stellaris_leviathans_story_pack_3_4_5_56913.sh' ARCHIVE_BASE_LEVIATHANS_29_MD5='514ca47c97e6edf951697ba361df53bd' ARCHIVE_BASE_LEVIATHANS_29_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_29_VERSION='3.4.5-gog56913' ARCHIVE_BASE_LEVIATHANS_25_NAME='stellaris_leviathans_story_pack_3_3_4_54421.sh' ARCHIVE_BASE_LEVIATHANS_25_MD5='367a1abfe37c32461302cf84c9bdd551' ARCHIVE_BASE_LEVIATHANS_25_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_25_VERSION='3.3.4-gog54421' ARCHIVE_BASE_LEVIATHANS_21_NAME='stellaris_leviathans_story_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_LEVIATHANS_21_MD5='33a7db46efae680eb6718ccd6c386e53' ARCHIVE_BASE_LEVIATHANS_21_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_21_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_LEVIATHANS_20_NAME='stellaris_leviathans_story_pack_3_1_1_50008.sh' ARCHIVE_BASE_LEVIATHANS_20_MD5='162521d883f491fcb4e397b9a60c46fd' ARCHIVE_BASE_LEVIATHANS_20_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_20_VERSION='3.1.1-gog50008' ARCHIVE_BASE_LEVIATHANS_19_NAME='stellaris_leviathans_story_pack_3_0_3_47193.sh' ARCHIVE_BASE_LEVIATHANS_19_MD5='70f70d4656a3b3069bec4b138b1c27d5' ARCHIVE_BASE_LEVIATHANS_19_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_19_VERSION='3.0.3-gog47193' ## Synthetic Dawn ARCHIVE_BASE_SYNTHETICDAWN_55_NAME='stellaris_synthetic_dawn_story_pack_3_12_5_74193.sh' ARCHIVE_BASE_SYNTHETICDAWN_55_MD5='28f5282f2422cce01ca868a906eb499c' ARCHIVE_BASE_SYNTHETICDAWN_55_SIZE='48244' ARCHIVE_BASE_SYNTHETICDAWN_55_VERSION='3.12.5-gog74193' ARCHIVE_BASE_SYNTHETICDAWN_55_URL='https://www.gog.com/game/stellaris_synthetic_dawn_story_pack' ARCHIVE_BASE_SYNTHETICDAWN_54_NAME='stellaris_synthetic_dawn_story_pack_3_12_4_1_74025.sh' ARCHIVE_BASE_SYNTHETICDAWN_54_MD5='bd346298812a39a65efbc8a9fda6c903' ARCHIVE_BASE_SYNTHETICDAWN_54_SIZE='48244' ARCHIVE_BASE_SYNTHETICDAWN_54_VERSION='3.12.4-gog74025' ARCHIVE_BASE_SYNTHETICDAWN_53_NAME='stellaris_synthetic_dawn_story_pack_3_12_2_73401.sh' ARCHIVE_BASE_SYNTHETICDAWN_53_MD5='f1e7049e5e3e88794f8bd5935cb08e35' ARCHIVE_BASE_SYNTHETICDAWN_53_SIZE='48244' ARCHIVE_BASE_SYNTHETICDAWN_53_VERSION='3.12.2-gog73401' ARCHIVE_BASE_SYNTHETICDAWN_52_NAME='stellaris_synthetic_dawn_story_pack_3_12_1_73183.sh' ARCHIVE_BASE_SYNTHETICDAWN_52_MD5='54a9eaf01bcdd37c8f5474fa0d0cf564' ARCHIVE_BASE_SYNTHETICDAWN_52_SIZE='48244' ARCHIVE_BASE_SYNTHETICDAWN_52_VERSION='3.12.1-gog73183' ARCHIVE_BASE_SYNTHETICDAWN_51_NAME='stellaris_synthetic_dawn_story_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_SYNTHETICDAWN_51_MD5='dacbf32f6358906934c4168ad06fff0d' ARCHIVE_BASE_SYNTHETICDAWN_51_SIZE='48244' ARCHIVE_BASE_SYNTHETICDAWN_51_VERSION='3.11.3-gog72561' ARCHIVE_BASE_SYNTHETICDAWN_48_NAME='stellaris_synthetic_dawn_story_pack_3_10_4_70670.sh' ARCHIVE_BASE_SYNTHETICDAWN_48_MD5='4b16f920acc6b2257386f020192aafce' ARCHIVE_BASE_SYNTHETICDAWN_48_SIZE='48244' ARCHIVE_BASE_SYNTHETICDAWN_48_VERSION='3.10.4-gog70670' ARCHIVE_BASE_SYNTHETICDAWN_42_NAME='stellaris_synthetic_dawn_story_pack_3_9_3_68314.sh' ARCHIVE_BASE_SYNTHETICDAWN_42_MD5='b2f35b4c887634e98fbce5e737dd78d1' ARCHIVE_BASE_SYNTHETICDAWN_42_SIZE='48564' ARCHIVE_BASE_SYNTHETICDAWN_42_VERSION='3.9.3-gog68314' ARCHIVE_BASE_SYNTHETICDAWN_39_NAME='stellaris_synthetic_dawn_story_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_SYNTHETICDAWN_39_MD5='8752ebda6f3ff2a6f1f3ae38ee50e3e8' ARCHIVE_BASE_SYNTHETICDAWN_39_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_39_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_SYNTHETICDAWN_35_NAME='stellaris_synthetic_dawn_story_pack_3_7_4_63489.sh' ARCHIVE_BASE_SYNTHETICDAWN_35_MD5='09458636f871c76f7e22cc468a7a9f41' ARCHIVE_BASE_SYNTHETICDAWN_35_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_35_VERSION='3.7.4-gog63489' ARCHIVE_BASE_SYNTHETICDAWN_32_NAME='stellaris_synthetic_dawn_story_pack_3_6_1_60754.sh' ARCHIVE_BASE_SYNTHETICDAWN_32_MD5='1e203e5c19fe5c63400cf566fea62164' ARCHIVE_BASE_SYNTHETICDAWN_32_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_32_VERSION='3.6.1-gog60754' ARCHIVE_BASE_SYNTHETICDAWN_30_NAME='stellaris_synthetic_dawn_story_pack_3_5_3_59410.sh' ARCHIVE_BASE_SYNTHETICDAWN_30_MD5='8f6b7a85ca65572e15f61d724ea99317' ARCHIVE_BASE_SYNTHETICDAWN_30_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_30_VERSION='3.5.3-gog59410' ARCHIVE_BASE_SYNTHETICDAWN_28_NAME='stellaris_synthetic_dawn_story_pack_3_4_5_56913.sh' ARCHIVE_BASE_SYNTHETICDAWN_28_MD5='cbcd2a2c6d1b088b634842b9d4abb941' ARCHIVE_BASE_SYNTHETICDAWN_28_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_28_VERSION='3.4.5-gog56913' ARCHIVE_BASE_SYNTHETICDAWN_24_NAME='stellaris_synthetic_dawn_story_pack_3_3_4_54421.sh' ARCHIVE_BASE_SYNTHETICDAWN_24_MD5='b89665cf745898060051099d606a889d' ARCHIVE_BASE_SYNTHETICDAWN_24_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_24_VERSION='3.3.4-gog54421' ARCHIVE_BASE_SYNTHETICDAWN_20_NAME='stellaris_synthetic_dawn_story_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_SYNTHETICDAWN_20_MD5='9b00445bf6b381832f6de06e2f5b7827' ARCHIVE_BASE_SYNTHETICDAWN_20_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_20_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_SYNTHETICDAWN_19_NAME='stellaris_synthetic_dawn_story_pack_3_1_1_50008.sh' ARCHIVE_BASE_SYNTHETICDAWN_19_MD5='69ba65596bc537841adc7c70ff0778a9' ARCHIVE_BASE_SYNTHETICDAWN_19_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_19_VERSION='3.1.1-gog50008' ARCHIVE_BASE_SYNTHETICDAWN_18_NAME='stellaris_synthetic_dawn_story_pack_3_0_3_47193.sh' ARCHIVE_BASE_SYNTHETICDAWN_18_MD5='b4231ca3b95b4bdb9e9a2e33c747d8c5' ARCHIVE_BASE_SYNTHETICDAWN_18_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_18_VERSION='3.0.3-gog47193' ## Distant Stars ARCHIVE_BASE_DISTANTSTARS_55_NAME='stellaris_distant_stars_story_pack_3_12_5_74193.sh' ARCHIVE_BASE_DISTANTSTARS_55_MD5='be7d046f1e0165f607e0d19cf28eddc9' ARCHIVE_BASE_DISTANTSTARS_55_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_55_VERSION='3.12.5-gog74193' ARCHIVE_BASE_DISTANTSTARS_55_URL='https://www.gog.com/game/stellaris_distant_stars_story_pack' ARCHIVE_BASE_DISTANTSTARS_54_NAME='stellaris_distant_stars_story_pack_3_12_4_1_74025.sh' ARCHIVE_BASE_DISTANTSTARS_54_MD5='8be4da5035ba2d6942beb9734d934ed4' ARCHIVE_BASE_DISTANTSTARS_54_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_54_VERSION='3.12.4-gog74025' ARCHIVE_BASE_DISTANTSTARS_53_NAME='stellaris_distant_stars_story_pack_3_12_2_73401.sh' ARCHIVE_BASE_DISTANTSTARS_53_MD5='7f4fc7d101558aeb53f0ce76d40f1ac6' ARCHIVE_BASE_DISTANTSTARS_53_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_53_VERSION='3.12.2-gog73401' ARCHIVE_BASE_DISTANTSTARS_52_NAME='stellaris_distant_stars_story_pack_3_12_1_73183.sh' ARCHIVE_BASE_DISTANTSTARS_52_MD5='4fc5f1299cdde303204547ff089b29f9' ARCHIVE_BASE_DISTANTSTARS_52_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_52_VERSION='3.12.1-gog73183' ARCHIVE_BASE_DISTANTSTARS_51_NAME='stellaris_distant_stars_story_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_DISTANTSTARS_51_MD5='1c05d748caac4118b22b1e7524936427' ARCHIVE_BASE_DISTANTSTARS_51_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_51_VERSION='3.11.3-gog72561' ARCHIVE_BASE_DISTANTSTARS_48_NAME='stellaris_distant_stars_story_pack_3_10_4_70670.sh' ARCHIVE_BASE_DISTANTSTARS_48_MD5='35b7b4c4e536fdefae1668c74e3932cc' ARCHIVE_BASE_DISTANTSTARS_48_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_48_VERSION='3.10.4-gog70670' ARCHIVE_BASE_DISTANTSTARS_42_NAME='stellaris_distant_stars_story_pack_3_9_3_68314.sh' ARCHIVE_BASE_DISTANTSTARS_42_MD5='9a03b641cc29f77008530d21e64f5232' ARCHIVE_BASE_DISTANTSTARS_42_SIZE='21148' ARCHIVE_BASE_DISTANTSTARS_42_VERSION='3.9.3-gog68314' ARCHIVE_BASE_DISTANTSTARS_39_NAME='stellaris_distant_stars_story_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_DISTANTSTARS_39_MD5='dcbb606208a16bc8f5f413239bfe69a4' ARCHIVE_BASE_DISTANTSTARS_39_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_39_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_DISTANTSTARS_35_NAME='stellaris_distant_stars_story_pack_3_7_4_63489.sh' ARCHIVE_BASE_DISTANTSTARS_35_MD5='d2989715cc656a73c1e2ca922bba10aa' ARCHIVE_BASE_DISTANTSTARS_35_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_35_VERSION='3.7.4-gog63489' ARCHIVE_BASE_DISTANTSTARS_32_NAME='stellaris_distant_stars_story_pack_3_6_1_60754.sh' ARCHIVE_BASE_DISTANTSTARS_32_MD5='1581145f5d4f4dbb491f3d3e1624577d' ARCHIVE_BASE_DISTANTSTARS_32_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_32_VERSION='3.6.1-gog60754' ARCHIVE_BASE_DISTANTSTARS_30_NAME='stellaris_distant_stars_story_pack_3_5_3_59410.sh' ARCHIVE_BASE_DISTANTSTARS_30_MD5='5ca6cc0d7554484af76e491211d75233' ARCHIVE_BASE_DISTANTSTARS_30_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_30_VERSION='3.5.3-gog59410' ARCHIVE_BASE_DISTANTSTARS_28_NAME='stellaris_distant_stars_story_pack_3_4_5_56913.sh' ARCHIVE_BASE_DISTANTSTARS_28_MD5='b2e6d53683346c48d44a058abd18eff9' ARCHIVE_BASE_DISTANTSTARS_28_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_28_VERSION='3.4.5-gog56913' ARCHIVE_BASE_DISTANTSTARS_24_NAME='stellaris_distant_stars_story_pack_3_3_4_54421.sh' ARCHIVE_BASE_DISTANTSTARS_24_MD5='1ca0abfacce33943685ad442ebf9d81a' ARCHIVE_BASE_DISTANTSTARS_24_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_24_VERSION='3.3.4-gog54421' ARCHIVE_BASE_DISTANTSTARS_20_NAME='stellaris_distant_stars_story_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_DISTANTSTARS_20_MD5='a24264507765c470fa5d579b02fc8e32' ARCHIVE_BASE_DISTANTSTARS_20_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_20_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_DISTANTSTARS_19_NAME='stellaris_distant_stars_story_pack_3_1_1_50008.sh' ARCHIVE_BASE_DISTANTSTARS_19_MD5='31eeae1be998363fec20a8a09affd7b4' ARCHIVE_BASE_DISTANTSTARS_19_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_19_VERSION='3.1.1-gog50008' ARCHIVE_BASE_DISTANTSTARS_18_NAME='stellaris_distant_stars_story_pack_3_0_3_47193.sh' ARCHIVE_BASE_DISTANTSTARS_18_MD5='a19db33750977b3334a553f8c4259bf4' ARCHIVE_BASE_DISTANTSTARS_18_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_18_VERSION='3.0.3-gog47193' ## Ancient Relics ARCHIVE_BASE_ANCIENTRELICS_44_NAME='stellaris_ancient_relics_3_12_5_74193.sh' ARCHIVE_BASE_ANCIENTRELICS_44_MD5='35a896e2d8a9044a15898e9f55a39d47' ARCHIVE_BASE_ANCIENTRELICS_44_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_44_VERSION='3.12.5-gog74193' ARCHIVE_BASE_ANCIENTRELICS_44_URL='https://www.gog.com/game/stellaris_ancient_relics_story_pack' ARCHIVE_BASE_ANCIENTRELICS_43_NAME='stellaris_ancient_relics_3_12_4_1_74025.sh' ARCHIVE_BASE_ANCIENTRELICS_43_MD5='f38b960e9a6ea6bf98a5399df5835dcc' ARCHIVE_BASE_ANCIENTRELICS_43_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_43_VERSION='3.12.4-gog74025' ARCHIVE_BASE_ANCIENTRELICS_42_NAME='stellaris_ancient_relics_3_12_2_73401.sh' ARCHIVE_BASE_ANCIENTRELICS_42_MD5='c5105c5a45acaace8b70fd534507c2e2' ARCHIVE_BASE_ANCIENTRELICS_42_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_42_VERSION='3.12.2-gog73401' ARCHIVE_BASE_ANCIENTRELICS_41_NAME='stellaris_ancient_relics_3_12_1_73183.sh' ARCHIVE_BASE_ANCIENTRELICS_41_MD5='cfdee2034c7b1fd10644f3cb95e2fe93' ARCHIVE_BASE_ANCIENTRELICS_41_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_41_VERSION='3.12.1-gog73183' ARCHIVE_BASE_ANCIENTRELICS_40_NAME='stellaris_ancient_relics_3_11_3_0_72561.sh' ARCHIVE_BASE_ANCIENTRELICS_40_MD5='a1468916582d7e7ad9c73ad58d2a37ec' ARCHIVE_BASE_ANCIENTRELICS_40_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_40_VERSION='3.11.3-gog72561' ARCHIVE_BASE_ANCIENTRELICS_37_NAME='stellaris_ancient_relics_3_10_4_70670.sh' ARCHIVE_BASE_ANCIENTRELICS_37_MD5='dacebe45d724aa535d28dc73fd2b78ab' ARCHIVE_BASE_ANCIENTRELICS_37_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_37_VERSION='3.10.4-gog70670' ARCHIVE_BASE_ANCIENTRELICS_31_NAME='stellaris_ancient_relics_3_9_3_68314.sh' ARCHIVE_BASE_ANCIENTRELICS_31_MD5='19909812633ca0d83ad774683f60451f' ARCHIVE_BASE_ANCIENTRELICS_31_SIZE='33060' ARCHIVE_BASE_ANCIENTRELICS_31_VERSION='3.9.3-gog68314' ARCHIVE_BASE_ANCIENTRELICS_28_NAME='stellaris_ancient_relics_3_8_4_1_65337.sh' ARCHIVE_BASE_ANCIENTRELICS_28_MD5='491929cb272a6a866020c69a94f3e01b' ARCHIVE_BASE_ANCIENTRELICS_28_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_28_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_ANCIENTRELICS_24_NAME='stellaris_ancient_relics_3_7_4_63489.sh' ARCHIVE_BASE_ANCIENTRELICS_24_MD5='51f5bc20188137581737a446b1b7498b' ARCHIVE_BASE_ANCIENTRELICS_24_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_24_VERSION='3.7.4-gog63489' ARCHIVE_BASE_ANCIENTRELICS_21_NAME='stellaris_ancient_relics_3_6_1_60754.sh' ARCHIVE_BASE_ANCIENTRELICS_21_MD5='40806c04f94d933aa555bc9d9605396c' ARCHIVE_BASE_ANCIENTRELICS_21_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_21_VERSION='3.6.1-gog60754' ARCHIVE_BASE_ANCIENTRELICS_19_NAME='stellaris_ancient_relics_3_5_3_59410.sh' ARCHIVE_BASE_ANCIENTRELICS_19_MD5='1052a7d2b77ba0ebbd8af19767952b47' ARCHIVE_BASE_ANCIENTRELICS_19_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_19_VERSION='3.5.3-gog59410' ARCHIVE_BASE_ANCIENTRELICS_17_NAME='stellaris_ancient_relics_3_4_5_56913.sh' ARCHIVE_BASE_ANCIENTRELICS_17_MD5='b7536ac852bebe9b12a359c4c0a6ca5e' ARCHIVE_BASE_ANCIENTRELICS_17_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_17_VERSION='3.4.5-gog56913' ARCHIVE_BASE_ANCIENTRELICS_13_NAME='stellaris_ancient_relics_3_3_4_54421.sh' ARCHIVE_BASE_ANCIENTRELICS_13_MD5='c09ef087df7e271758b4b8a47a1353bd' ARCHIVE_BASE_ANCIENTRELICS_13_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_13_VERSION='3.3.4-gog54421' ARCHIVE_BASE_ANCIENTRELICS_9_NAME='stellaris_ancient_relics_3_2_1_1_51520.sh' ARCHIVE_BASE_ANCIENTRELICS_9_MD5='45de001d3d2b3999d6c4c8948fc22458' ARCHIVE_BASE_ANCIENTRELICS_9_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_9_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_ANCIENTRELICS_8_NAME='stellaris_ancient_relics_3_1_1_50008.sh' ARCHIVE_BASE_ANCIENTRELICS_8_MD5='ec441d202f321a3d8b23af35fed33531' ARCHIVE_BASE_ANCIENTRELICS_8_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_8_VERSION='3.1.1-gog50008' ARCHIVE_BASE_ANCIENTRELICS_7_NAME='stellaris_ancient_relics_3_0_3_47193.sh' ARCHIVE_BASE_ANCIENTRELICS_7_MD5='d98a169dca98257b3944517d98cd17a0' ARCHIVE_BASE_ANCIENTRELICS_7_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_7_VERSION='3.0.3-gog47193' ## First Contact ARCHIVE_BASE_FIRSTCONTACT_18_NAME='stellaris_first_contact_story_pack_3_12_5_74193.sh' ARCHIVE_BASE_FIRSTCONTACT_18_MD5='d3e6622881abe21c5883e5fa61988f6b' ARCHIVE_BASE_FIRSTCONTACT_18_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_18_VERSION='3.12.5-gog74193' ARCHIVE_BASE_FIRSTCONTACT_18_URL='https://www.gog.com/game/stellaris_first_contact_story_pack' ARCHIVE_BASE_FIRSTCONTACT_17_NAME='stellaris_first_contact_story_pack_3_12_4_1_74025.sh' ARCHIVE_BASE_FIRSTCONTACT_17_MD5='d6f3195ac93b8df4b61bad706779b657' ARCHIVE_BASE_FIRSTCONTACT_17_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_17_VERSION='3.12.4-gog74025' ARCHIVE_BASE_FIRSTCONTACT_16_NAME='stellaris_first_contact_story_pack_3_12_2_73401.sh' ARCHIVE_BASE_FIRSTCONTACT_16_MD5='97d442da8c602c3da7db7627eb75361d' ARCHIVE_BASE_FIRSTCONTACT_16_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_16_VERSION='3.12.2-gog73401' ARCHIVE_BASE_FIRSTCONTACT_15_NAME='stellaris_first_contact_story_pack_3_12_1_73183.sh' ARCHIVE_BASE_FIRSTCONTACT_15_MD5='7be564ef8312307a1373908d11731835' ARCHIVE_BASE_FIRSTCONTACT_15_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_15_VERSION='3.12.1-gog73183' ARCHIVE_BASE_FIRSTCONTACT_14_NAME='stellaris_first_contact_story_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_FIRSTCONTACT_14_MD5='946d0530c559cc4275177143f808a4e6' ARCHIVE_BASE_FIRSTCONTACT_14_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_14_VERSION='3.11.3-gog72561' ARCHIVE_BASE_FIRSTCONTACT_11_NAME='stellaris_first_contact_story_pack_3_10_4_70670.sh' ARCHIVE_BASE_FIRSTCONTACT_11_MD5='aa77a6af433d0ed023357b1af69876ce' ARCHIVE_BASE_FIRSTCONTACT_11_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_11_VERSION='3.10.4-gog70670' ARCHIVE_BASE_FIRSTCONTACT_5_NAME='stellaris_first_contact_story_pack_3_9_3_68314.sh' ARCHIVE_BASE_FIRSTCONTACT_5_MD5='870a8a53a98f020d9cb55e2b962b6172' ARCHIVE_BASE_FIRSTCONTACT_5_SIZE='1152' ARCHIVE_BASE_FIRSTCONTACT_5_VERSION='3.9.3-gog68314' ARCHIVE_BASE_FIRSTCONTACT_2_NAME='stellaris_first_contact_story_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_FIRSTCONTACT_2_MD5='dd862bf0d12f5bf0a7a7c116a57f2bbb' ARCHIVE_BASE_FIRSTCONTACT_2_SIZE='1200' ARCHIVE_BASE_FIRSTCONTACT_2_VERSION='3.8.4.1-gog65337' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-stellaris-expansions.sh0000755000000000000000000006006114471751340016352 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Stellaris expansions (main expansions): # - Utopia # - Apocalypse # - MegaCorp # - Federations # - Nemesis # - Overlord # - Galactic Paragons # - Astral Planes # - The Machine Age ### script_version=20240721.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='stellaris' GAME_NAME='Stellaris' EXPANSION_ID_UTOPIA='utopia' EXPANSION_NAME_UTOPIA='Utopia' EXPANSION_ID_APOCALYPSE='apocalypse' EXPANSION_NAME_APOCALYPSE='Apocalypse' EXPANSION_ID_MEGACORP='megacorp' EXPANSION_NAME_MEGACORP='MegaCorp' EXPANSION_ID_FEDERATIONS='federations' EXPANSION_NAME_FEDERATIONS='Federations' EXPANSION_ID_NEMESIS='nemesis' EXPANSION_NAME_NEMESIS='Nemesis' EXPANSION_ID_OVERLORD='overlord' EXPANSION_NAME_OVERLORD='Overlord' EXPANSION_ID_PARAGONS='galactic-paragons' EXPANSION_NAME_PARAGONS='Galactic Paragons' EXPANSION_ID_PLANES='astral-planes' EXPANSION_NAME_PLANES='Astral Planes' EXPANSION_ID_MACHINE='the-machine-age' EXPANSION_NAME_MACHINE='The Machine Age' # Archives ## Utopia ARCHIVE_BASE_UTOPIA_54_NAME='stellaris_utopia_3_12_5_74193.sh' ARCHIVE_BASE_UTOPIA_54_MD5='94ce113fad5b52d0464bfa48905412cc' ARCHIVE_BASE_UTOPIA_54_SIZE='75007' ARCHIVE_BASE_UTOPIA_54_VERSION='3.12.5-gog74193' ARCHIVE_BASE_UTOPIA_54_URL='https://www.gog.com/game/stellaris_utopia' ARCHIVE_BASE_UTOPIA_53_NAME='stellaris_utopia_3_12_4_1_74025.sh' ARCHIVE_BASE_UTOPIA_53_MD5='96bfe0c26d3119ff5b82b9934e87164c' ARCHIVE_BASE_UTOPIA_53_SIZE='75007' ARCHIVE_BASE_UTOPIA_53_VERSION='3.12.4-gog74025' ARCHIVE_BASE_UTOPIA_52_NAME='stellaris_utopia_3_12_2_73401.sh' ARCHIVE_BASE_UTOPIA_52_MD5='4197f0b4e82a8af8267fc3f19e38c2de' ARCHIVE_BASE_UTOPIA_52_SIZE='75007' ARCHIVE_BASE_UTOPIA_52_VERSION='3.12.2-gog73401' ARCHIVE_BASE_UTOPIA_51_NAME='stellaris_utopia_3_12_1_73183.sh' ARCHIVE_BASE_UTOPIA_51_MD5='081f86c652cc1d32e10f1cabbc381aa8' ARCHIVE_BASE_UTOPIA_51_SIZE='75007' ARCHIVE_BASE_UTOPIA_51_VERSION='3.12.1-gog73183' ARCHIVE_BASE_UTOPIA_50_NAME='stellaris_utopia_3_11_3_0_72561.sh' ARCHIVE_BASE_UTOPIA_50_MD5='b459de0ff28f660f9f9f6a38b5963df8' ARCHIVE_BASE_UTOPIA_50_SIZE='75007' ARCHIVE_BASE_UTOPIA_50_VERSION='3.11.3-gog72561' ARCHIVE_BASE_UTOPIA_47_NAME='stellaris_utopia_3_10_4_70670.sh' ARCHIVE_BASE_UTOPIA_47_MD5='34740602274bd7cb248a25dbcf68ae50' ARCHIVE_BASE_UTOPIA_47_SIZE='75007' ARCHIVE_BASE_UTOPIA_47_VERSION='3.10.4-gog70670' ARCHIVE_BASE_UTOPIA_41_NAME='stellaris_utopia_3_9_3_68314.sh' ARCHIVE_BASE_UTOPIA_41_MD5='b720f9ac6deec5dda989e0b52c2cee80' ARCHIVE_BASE_UTOPIA_41_SIZE='75324' ARCHIVE_BASE_UTOPIA_41_VERSION='3.9.3-gog68314' ARCHIVE_BASE_UTOPIA_38_NAME='stellaris_utopia_3_8_4_1_65337.sh' ARCHIVE_BASE_UTOPIA_38_MD5='f37db816affaea32fa037afcf05e6f5c' ARCHIVE_BASE_UTOPIA_38_SIZE='76000' ARCHIVE_BASE_UTOPIA_38_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_UTOPIA_34_NAME='stellaris_utopia_3_7_4_63489.sh' ARCHIVE_BASE_UTOPIA_34_MD5='757c0a5000d03c0c977ea3feb4ac4bec' ARCHIVE_BASE_UTOPIA_34_SIZE='76000' ARCHIVE_BASE_UTOPIA_34_VERSION='3.7.4-gog63489' ARCHIVE_BASE_UTOPIA_31_NAME='stellaris_utopia_3_6_1_60754.sh' ARCHIVE_BASE_UTOPIA_31_MD5='6942f80fac13261e2de34e350d96e6b8' ARCHIVE_BASE_UTOPIA_31_SIZE='76000' ARCHIVE_BASE_UTOPIA_31_VERSION='3.6.1-gog60754' ARCHIVE_BASE_UTOPIA_29_NAME='stellaris_utopia_3_5_3_59410.sh' ARCHIVE_BASE_UTOPIA_29_MD5='b71a7c123fa029a65fdeee0f46112560' ARCHIVE_BASE_UTOPIA_29_SIZE='76000' ARCHIVE_BASE_UTOPIA_29_VERSION='3.5.3-gog59410' ARCHIVE_BASE_UTOPIA_27_NAME='stellaris_utopia_3_4_5_56913.sh' ARCHIVE_BASE_UTOPIA_27_MD5='c78bbd8859e22b93534f8aeec16ef08f' ARCHIVE_BASE_UTOPIA_27_SIZE='76000' ARCHIVE_BASE_UTOPIA_27_VERSION='3.4.5-gog56913' ARCHIVE_BASE_UTOPIA_23_NAME='stellaris_utopia_3_3_4_54421.sh' ARCHIVE_BASE_UTOPIA_23_MD5='9b4715a94ffdca001ff56e6e6d9a807d' ARCHIVE_BASE_UTOPIA_23_SIZE='76000' ARCHIVE_BASE_UTOPIA_23_VERSION='3.3.4-gog54421' ARCHIVE_BASE_UTOPIA_19_NAME='stellaris_utopia_3_2_1_1_51520.sh' ARCHIVE_BASE_UTOPIA_19_MD5='bb6b18eabd4e45d846468e1c38d2e7ea' ARCHIVE_BASE_UTOPIA_19_SIZE='76000' ARCHIVE_BASE_UTOPIA_19_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_UTOPIA_18_NAME='stellaris_utopia_3_1_1_50008.sh' ARCHIVE_BASE_UTOPIA_18_MD5='129501ad6bf862bc04aa775f6538e7fe' ARCHIVE_BASE_UTOPIA_18_SIZE='76000' ARCHIVE_BASE_UTOPIA_18_VERSION='3.1.1-gog50008' ARCHIVE_BASE_UTOPIA_17_NAME='stellaris_utopia_3_0_3_47193.sh' ARCHIVE_BASE_UTOPIA_17_MD5='0987db58e4cb8629714bbe9b2d01906e' ARCHIVE_BASE_UTOPIA_17_SIZE='76000' ARCHIVE_BASE_UTOPIA_17_VERSION='3.0.3-gog47193' ## Apocalypse ARCHIVE_BASE_APOCALYPSE_44_NAME='stellaris_apocalypse_3_12_5_74193.sh' ARCHIVE_BASE_APOCALYPSE_44_MD5='72c6721003d27d922fd134210da8b82f' ARCHIVE_BASE_APOCALYPSE_44_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_44_VERSION='3.12.5-gog74193' ARCHIVE_BASE_APOCALYPSE_44_URL='https://www.gog.com/game/stellaris_apocalypse' ARCHIVE_BASE_APOCALYPSE_43_NAME='stellaris_apocalypse_3_12_4_1_74025.sh' ARCHIVE_BASE_APOCALYPSE_43_MD5='fc4ef87d5a954ad06b501ba8c80e6a08' ARCHIVE_BASE_APOCALYPSE_43_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_43_VERSION='3.12.4-gog74025' ARCHIVE_BASE_APOCALYPSE_42_NAME='stellaris_apocalypse_3_12_2_73401.sh' ARCHIVE_BASE_APOCALYPSE_42_MD5='b83089a711119965ff6b29a12e77b39c' ARCHIVE_BASE_APOCALYPSE_42_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_42_VERSION='3.12.2-gog73401' ARCHIVE_BASE_APOCALYPSE_41_NAME='stellaris_apocalypse_3_12_1_73183.sh' ARCHIVE_BASE_APOCALYPSE_41_MD5='de133d9b90807895f128f9ae3f4ccd1f' ARCHIVE_BASE_APOCALYPSE_41_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_41_VERSION='3.12.1-gog73183' ARCHIVE_BASE_APOCALYPSE_40_NAME='stellaris_apocalypse_3_11_3_0_72561.sh' ARCHIVE_BASE_APOCALYPSE_40_MD5='5865125d875c8ddc549b8f0f4fd79ebd' ARCHIVE_BASE_APOCALYPSE_40_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_40_VERSION='3.11.3-gog72561' ARCHIVE_BASE_APOCALYPSE_37_NAME='stellaris_apocalypse_3_10_4_70670.sh' ARCHIVE_BASE_APOCALYPSE_37_MD5='77856badbd6716a8d4b2b7c3d50dac7d' ARCHIVE_BASE_APOCALYPSE_37_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_37_VERSION='3.10.4-gog70670' ARCHIVE_BASE_APOCALYPSE_31_NAME='stellaris_apocalypse_3_9_3_68314.sh' ARCHIVE_BASE_APOCALYPSE_31_MD5='1e81c558321b0c494118f5eaa320a31a' ARCHIVE_BASE_APOCALYPSE_31_SIZE='38196' ARCHIVE_BASE_APOCALYPSE_31_VERSION='3.9.3-gog68314' ARCHIVE_BASE_APOCALYPSE_28_NAME='stellaris_apocalypse_3_8_4_1_65337.sh' ARCHIVE_BASE_APOCALYPSE_28_MD5='a01fd114beedaae30f8036532aeaa3a5' ARCHIVE_BASE_APOCALYPSE_28_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_28_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_APOCALYPSE_24_NAME='stellaris_apocalypse_3_7_4_63489.sh' ARCHIVE_BASE_APOCALYPSE_24_MD5='635fad17d0a6dbcb51bc4bc134f7a2fc' ARCHIVE_BASE_APOCALYPSE_24_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_24_VERSION='3.7.4-gog63489' ARCHIVE_BASE_APOCALYPSE_21_NAME='stellaris_apocalypse_3_6_1_60754.sh' ARCHIVE_BASE_APOCALYPSE_21_MD5='ba7aa69bc21ddc041767975d6891c394' ARCHIVE_BASE_APOCALYPSE_21_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_21_VERSION='3.6.1-gog60754' ARCHIVE_BASE_APOCALYPSE_19_NAME='stellaris_apocalypse_3_5_3_59410.sh' ARCHIVE_BASE_APOCALYPSE_19_MD5='40e997269f2806e26c3cef5b604009e2' ARCHIVE_BASE_APOCALYPSE_19_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_19_VERSION='3.5.3-gog59410' ARCHIVE_BASE_APOCALYPSE_17_NAME='stellaris_apocalypse_3_4_5_56913.sh' ARCHIVE_BASE_APOCALYPSE_17_MD5='2294a815d331a90c2a226ea679d1b9c2' ARCHIVE_BASE_APOCALYPSE_17_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_17_VERSION='3.4.5-gog56913' ARCHIVE_BASE_APOCALYPSE_13_NAME='stellaris_apocalypse_3_3_4_54421.sh' ARCHIVE_BASE_APOCALYPSE_13_MD5='df86d7aa67f4be37822523fef72d15ee' ARCHIVE_BASE_APOCALYPSE_13_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_13_VERSION='3.3.4-gog54421' ARCHIVE_BASE_APOCALYPSE_9_NAME='stellaris_apocalypse_3_2_1_1_51520.sh' ARCHIVE_BASE_APOCALYPSE_9_MD5='0db5f6b23432efa4941f7e4e89ff9488' ARCHIVE_BASE_APOCALYPSE_9_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_9_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_APOCALYPSE_8_NAME='stellaris_apocalypse_3_1_1_50008.sh' ARCHIVE_BASE_APOCALYPSE_8_MD5='a4d25b308d2daf3c81fef2aef33727da' ARCHIVE_BASE_APOCALYPSE_8_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_8_VERSION='3.1.1-gog50008' ARCHIVE_BASE_APOCALYPSE_7_NAME='stellaris_apocalypse_3_0_3_47193.sh' ARCHIVE_BASE_APOCALYPSE_7_MD5='3cdf97dedf2514fbb1e9fd123cb253b7' ARCHIVE_BASE_APOCALYPSE_7_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_7_VERSION='3.0.3-gog47193' ## MegaCorp ARCHIVE_BASE_MEGACORP_41_NAME='stellaris_megacorp_3_12_5_74193.sh' ARCHIVE_BASE_MEGACORP_41_MD5='056684f8cabd2bff919a6f1e1b12837a' ARCHIVE_BASE_MEGACORP_41_SIZE='130614' ARCHIVE_BASE_MEGACORP_41_VERSION='3.12.5-gog74193' ARCHIVE_BASE_MEGACORP_41_URL='https://www.gog.com/game/stellaris_megacorp' ARCHIVE_BASE_MEGACORP_40_NAME='stellaris_megacorp_3_12_4_1_74025.sh' ARCHIVE_BASE_MEGACORP_40_MD5='17ebb2f17a5ec3e50d21dcb1ac945c25' ARCHIVE_BASE_MEGACORP_40_SIZE='130614' ARCHIVE_BASE_MEGACORP_40_VERSION='3.12.4-gog74025' ARCHIVE_BASE_MEGACORP_39_NAME='stellaris_megacorp_3_12_2_73401.sh' ARCHIVE_BASE_MEGACORP_39_MD5='6cebe3f755bfa8fd74f4e9941149875f' ARCHIVE_BASE_MEGACORP_39_SIZE='130614' ARCHIVE_BASE_MEGACORP_39_VERSION='3.12.2-gog73401' ARCHIVE_BASE_MEGACORP_38_NAME='stellaris_megacorp_3_12_1_73183.sh' ARCHIVE_BASE_MEGACORP_38_MD5='1521312d5bbd3097c9d107e3ecdf656e' ARCHIVE_BASE_MEGACORP_38_SIZE='130614' ARCHIVE_BASE_MEGACORP_38_VERSION='3.12.1-gog73183' ARCHIVE_BASE_MEGACORP_37_NAME='stellaris_megacorp_3_11_3_0_72561.sh' ARCHIVE_BASE_MEGACORP_37_MD5='9c9fda0324405590e48d4da9741dcdb0' ARCHIVE_BASE_MEGACORP_37_SIZE='130614' ARCHIVE_BASE_MEGACORP_37_VERSION='3.11.3-gog72561' ARCHIVE_BASE_MEGACORP_34_NAME='stellaris_megacorp_3_10_4_70670.sh' ARCHIVE_BASE_MEGACORP_34_MD5='c155eb5f1b6f3283e068b17574107070' ARCHIVE_BASE_MEGACORP_34_SIZE='130614' ARCHIVE_BASE_MEGACORP_34_VERSION='3.10.4-gog70670' ARCHIVE_BASE_MEGACORP_28_NAME='stellaris_megacorp_3_9_3_68314.sh' ARCHIVE_BASE_MEGACORP_28_MD5='b4bf123675295aa81910698500cdd33b' ARCHIVE_BASE_MEGACORP_28_SIZE='130940' ARCHIVE_BASE_MEGACORP_28_VERSION='3.9.3-gog68314' ARCHIVE_BASE_MEGACORP_25_NAME='stellaris_megacorp_3_8_4_1_65337.sh' ARCHIVE_BASE_MEGACORP_25_MD5='3b00aacd428ef943bbbd7a4d0e6b50b2' ARCHIVE_BASE_MEGACORP_25_SIZE='140000' ARCHIVE_BASE_MEGACORP_25_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_MEGACORP_21_NAME='stellaris_megacorp_3_7_4_63489.sh' ARCHIVE_BASE_MEGACORP_21_MD5='5b9573bb4261bd177dad3f4acc74a6a1' ARCHIVE_BASE_MEGACORP_21_SIZE='140000' ARCHIVE_BASE_MEGACORP_21_VERSION='3.7.4-gog63489' ARCHIVE_BASE_MEGACORP_18_NAME='stellaris_megacorp_3_6_1_60754.sh' ARCHIVE_BASE_MEGACORP_18_MD5='af184beefdd7efc6f2d3973bf0d50c71' ARCHIVE_BASE_MEGACORP_18_SIZE='140000' ARCHIVE_BASE_MEGACORP_18_VERSION='3.6.1-gog60754' ARCHIVE_BASE_MEGACORP_16_NAME='stellaris_megacorp_3_5_3_59410.sh' ARCHIVE_BASE_MEGACORP_16_MD5='2a95d9ff26ed58860be33c860c41fd63' ARCHIVE_BASE_MEGACORP_16_SIZE='140000' ARCHIVE_BASE_MEGACORP_16_VERSION='3.5.3-gog59410' ARCHIVE_BASE_MEGACORP_14_NAME='stellaris_megacorp_3_4_5_56913.sh' ARCHIVE_BASE_MEGACORP_14_MD5='893df0403e44e6e36060756740230147' ARCHIVE_BASE_MEGACORP_14_SIZE='140000' ARCHIVE_BASE_MEGACORP_14_VERSION='3.4.5-gog56913' ARCHIVE_BASE_MEGACORP_10_NAME='stellaris_megacorp_3_3_4_54421.sh' ARCHIVE_BASE_MEGACORP_10_MD5='44fb07a81f15d0954088f4bfd88fb933' ARCHIVE_BASE_MEGACORP_10_SIZE='140000' ARCHIVE_BASE_MEGACORP_10_VERSION='3.3.4-gog54421' ARCHIVE_BASE_MEGACORP_6_NAME='stellaris_megacorp_3_2_1_1_51520.sh' ARCHIVE_BASE_MEGACORP_6_MD5='5965b8b2b51ae9e3dca5726c5d466792' ARCHIVE_BASE_MEGACORP_6_SIZE='140000' ARCHIVE_BASE_MEGACORP_6_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_MEGACORP_5_NAME='stellaris_megacorp_3_1_1_50008.sh' ARCHIVE_BASE_MEGACORP_5_MD5='fa01a1fb786ae3625437bd23275ac401' ARCHIVE_BASE_MEGACORP_5_SIZE='140000' ARCHIVE_BASE_MEGACORP_5_VERSION='3.1.1-gog50008' ARCHIVE_BASE_MEGACORP_4_NAME='stellaris_megacorp_3_0_3_47193.sh' ARCHIVE_BASE_MEGACORP_4_MD5='8992c77ac7de034c7d3deceb656fb3f6' ARCHIVE_BASE_MEGACORP_4_SIZE='140000' ARCHIVE_BASE_MEGACORP_4_VERSION='3.0.3-gog47193' ## Federations ARCHIVE_BASE_FEDERATIONS_36_NAME='stellaris_federations_3_12_5_74193.sh' ARCHIVE_BASE_FEDERATIONS_36_MD5='77b14499ea1a8fe7d643e3881a473d0d' ARCHIVE_BASE_FEDERATIONS_36_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_36_VERSION='3.12.5-gog74193' ARCHIVE_BASE_FEDERATIONS_36_URL='https://www.gog.com/game/stellaris_federations' ARCHIVE_BASE_FEDERATIONS_35_NAME='stellaris_federations_3_12_4_1_74025.sh' ARCHIVE_BASE_FEDERATIONS_35_MD5='139d67b3847f35ca14b86bb035c7e1d7' ARCHIVE_BASE_FEDERATIONS_35_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_35_VERSION='3.12.4-gog74025' ARCHIVE_BASE_FEDERATIONS_34_NAME='stellaris_federations_3_12_2_73401.sh' ARCHIVE_BASE_FEDERATIONS_34_MD5='d91b8fba53cf45f1b43a82d9536756a4' ARCHIVE_BASE_FEDERATIONS_34_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_34_VERSION='3.12.2-gog73401' ARCHIVE_BASE_FEDERATIONS_33_NAME='stellaris_federations_3_12_1_73183.sh' ARCHIVE_BASE_FEDERATIONS_33_MD5='7e73dee5ac683a0f1862c6e775d3a8b3' ARCHIVE_BASE_FEDERATIONS_33_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_33_VERSION='3.12.1-gog73183' ARCHIVE_BASE_FEDERATIONS_32_NAME='stellaris_federations_3_11_3_0_72561.sh' ARCHIVE_BASE_FEDERATIONS_32_MD5='de18cbab731d65f25fcc58ea98a16a12' ARCHIVE_BASE_FEDERATIONS_32_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_32_VERSION='3.11.3-gog72561' ARCHIVE_BASE_FEDERATIONS_29_NAME='stellaris_federations_3_10_4_70670.sh' ARCHIVE_BASE_FEDERATIONS_29_MD5='00836b70d3d84d95de238c607e25e309' ARCHIVE_BASE_FEDERATIONS_29_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_29_VERSION='3.10.4-gog70670' ARCHIVE_BASE_FEDERATIONS_23_NAME='stellaris_federations_3_9_3_68314.sh' ARCHIVE_BASE_FEDERATIONS_23_MD5='5c2ecccea91eeeea578cd2925a5621eb' ARCHIVE_BASE_FEDERATIONS_23_SIZE='14752' ARCHIVE_BASE_FEDERATIONS_23_VERSION='3.9.3-gog68314' ARCHIVE_BASE_FEDERATIONS_20_NAME='stellaris_federations_3_8_4_1_65337.sh' ARCHIVE_BASE_FEDERATIONS_20_MD5='6fd1449caf09cfd06baff37237aff954' ARCHIVE_BASE_FEDERATIONS_20_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_20_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_FEDERATIONS_16_NAME='stellaris_federations_3_7_4_63489.sh' ARCHIVE_BASE_FEDERATIONS_16_MD5='df6d008a05e26559ba65d184e52d5926' ARCHIVE_BASE_FEDERATIONS_16_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_16_VERSION='3.7.4-gog63489' ARCHIVE_BASE_FEDERATIONS_13_NAME='stellaris_federations_3_6_1_60754.sh' ARCHIVE_BASE_FEDERATIONS_13_MD5='7f86c6a7c6d13946528a58c90c7eebc8' ARCHIVE_BASE_FEDERATIONS_13_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_13_VERSION='3.6.1-gog60754' ARCHIVE_BASE_FEDERATIONS_11_NAME='stellaris_federations_3_5_3_59410.sh' ARCHIVE_BASE_FEDERATIONS_11_MD5='02dee79bf1c26ba1b1cfca5103dccdca' ARCHIVE_BASE_FEDERATIONS_11_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_11_VERSION='3.5.3-gog59410' ARCHIVE_BASE_FEDERATIONS_9_NAME='stellaris_federations_3_4_5_56913.sh' ARCHIVE_BASE_FEDERATIONS_9_MD5='96170769d5fef74f2aedf9f3fd85f656' ARCHIVE_BASE_FEDERATIONS_9_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_9_VERSION='3.4.5-gog56913' ARCHIVE_BASE_FEDERATIONS_5_NAME='stellaris_federations_3_3_4_54421.sh' ARCHIVE_BASE_FEDERATIONS_5_MD5='d0dcbaef570563bb87dd16e600e162bd' ARCHIVE_BASE_FEDERATIONS_5_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_5_VERSION='3.3.4-gog54421' ARCHIVE_BASE_FEDERATIONS_1_NAME='stellaris_federations_3_2_2_51685.sh' ARCHIVE_BASE_FEDERATIONS_1_MD5='df17fc878abd4eb957e147feb5b7e39b' ARCHIVE_BASE_FEDERATIONS_1_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_1_VERSION='3.2.2-gog51685' ## Nemesis ARCHIVE_BASE_NEMESIS_23_NAME='stellaris_nemesis_3_12_5_74193.sh' ARCHIVE_BASE_NEMESIS_23_MD5='30187118ff7f8fed4db3b453f2b1a467' ARCHIVE_BASE_NEMESIS_23_SIZE='38539' ARCHIVE_BASE_NEMESIS_23_VERSION='3.12.5-gog74193' ARCHIVE_BASE_NEMESIS_23_URL='https://www.gog.com/game/stellaris_nemesis' ARCHIVE_BASE_NEMESIS_22_NAME='stellaris_nemesis_3_12_4_1_74025.sh' ARCHIVE_BASE_NEMESIS_22_MD5='c4cf716d5ba5aa6a4b508cc7cdaa6404' ARCHIVE_BASE_NEMESIS_22_SIZE='38539' ARCHIVE_BASE_NEMESIS_22_VERSION='3.12.4-gog74025' ARCHIVE_BASE_NEMESIS_21_NAME='stellaris_nemesis_3_12_2_73401.sh' ARCHIVE_BASE_NEMESIS_21_MD5='b820e1b7dde6e5e210f5adbd25406ac4' ARCHIVE_BASE_NEMESIS_21_SIZE='38539' ARCHIVE_BASE_NEMESIS_21_VERSION='3.12.2-gog73401' ARCHIVE_BASE_NEMESIS_20_NAME='stellaris_nemesis_3_12_1_73183.sh' ARCHIVE_BASE_NEMESIS_20_MD5='32c943bc6f3cdd266135c1a7c7479e83' ARCHIVE_BASE_NEMESIS_20_SIZE='38539' ARCHIVE_BASE_NEMESIS_20_VERSION='3.12.1-gog73183' ARCHIVE_BASE_NEMESIS_19_NAME='stellaris_nemesis_3_11_3_0_72561.sh' ARCHIVE_BASE_NEMESIS_19_MD5='a6380543924bf1479101511337238f29' ARCHIVE_BASE_NEMESIS_19_SIZE='38539' ARCHIVE_BASE_NEMESIS_19_VERSION='3.11.3-gog72561' ARCHIVE_BASE_NEMESIS_16_NAME='stellaris_nemesis_3_10_4_70670.sh' ARCHIVE_BASE_NEMESIS_16_MD5='749b70150b8b77b9f905d50b641594c7' ARCHIVE_BASE_NEMESIS_16_SIZE='38539' ARCHIVE_BASE_NEMESIS_16_VERSION='3.10.4-gog70670' ARCHIVE_BASE_NEMESIS_10_NAME='stellaris_nemesis_3_9_3_68314.sh' ARCHIVE_BASE_NEMESIS_10_MD5='105f2c56365c3b2b3c329806e4b5272b' ARCHIVE_BASE_NEMESIS_10_SIZE='38856' ARCHIVE_BASE_NEMESIS_10_VERSION='3.9.3-gog68314' ARCHIVE_BASE_NEMESIS_7_NAME='stellaris_nemesis_3_8_4_1_65337.sh' ARCHIVE_BASE_NEMESIS_7_MD5='ea624db6ea0f9f485cb194c1358dda62' ARCHIVE_BASE_NEMESIS_7_SIZE='40000' ARCHIVE_BASE_NEMESIS_7_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_NEMESIS_3_NAME='stellaris_nemesis_3_7_4_63489.sh' ARCHIVE_BASE_NEMESIS_3_MD5='9fa7ca1ebe2ffb736787f18bf2611311' ARCHIVE_BASE_NEMESIS_3_SIZE='40000' ARCHIVE_BASE_NEMESIS_3_VERSION='3.7.4-gog63489' ARCHIVE_BASE_NEMESIS_0_NAME='stellaris_nemesis_3_6_1_60754.sh' ARCHIVE_BASE_NEMESIS_0_MD5='ec08053da0ef60ea42a974b26892031a' ARCHIVE_BASE_NEMESIS_0_SIZE='40000' ARCHIVE_BASE_NEMESIS_0_VERSION='3.6.1-gog60754' ## Overlord ARCHIVE_BASE_OVERLORD_18_NAME='stellaris_overlord_3_12_5_74193.sh' ARCHIVE_BASE_OVERLORD_18_MD5='62f8f8bf6a5f9774bd1fb036d73e2843' ARCHIVE_BASE_OVERLORD_18_SIZE='99860' ARCHIVE_BASE_OVERLORD_18_VERSION='3.12.5-gog74193' ARCHIVE_BASE_OVERLORD_18_URL='https://www.gog.com/game/stellaris_overlord' ARCHIVE_BASE_OVERLORD_17_NAME='stellaris_overlord_3_12_4_1_74025.sh' ARCHIVE_BASE_OVERLORD_17_MD5='564f44f5d624199fe16f95eed29c0f13' ARCHIVE_BASE_OVERLORD_17_SIZE='99860' ARCHIVE_BASE_OVERLORD_17_VERSION='3.12.4-gog74025' ARCHIVE_BASE_OVERLORD_16_NAME='stellaris_overlord_3_12_2_73401.sh' ARCHIVE_BASE_OVERLORD_16_MD5='a9ecb4c919b3427cea15408d87bc1e55' ARCHIVE_BASE_OVERLORD_16_SIZE='99860' ARCHIVE_BASE_OVERLORD_16_VERSION='3.12.2-gog73401' ARCHIVE_BASE_OVERLORD_15_NAME='stellaris_overlord_3_12_1_73183.sh' ARCHIVE_BASE_OVERLORD_15_MD5='05da07a47a13cb9d937c9d175e589416' ARCHIVE_BASE_OVERLORD_15_SIZE='99860' ARCHIVE_BASE_OVERLORD_15_VERSION='3.12.1-gog73183' ARCHIVE_BASE_OVERLORD_14_NAME='stellaris_overlord_3_11_3_0_72561.sh' ARCHIVE_BASE_OVERLORD_14_MD5='dd8189cd8134fc866c374864d0700b83' ARCHIVE_BASE_OVERLORD_14_SIZE='99860' ARCHIVE_BASE_OVERLORD_14_VERSION='3.11.3-gog72561' ARCHIVE_BASE_OVERLORD_11_NAME='stellaris_overlord_3_10_4_70670.sh' ARCHIVE_BASE_OVERLORD_11_MD5='a6bf968c0f6c7dc75998884b333025ec' ARCHIVE_BASE_OVERLORD_11_SIZE='99860' ARCHIVE_BASE_OVERLORD_11_VERSION='3.10.4-gog70670' ARCHIVE_BASE_OVERLORD_5_NAME='stellaris_overlord_3_9_3_68314.sh' ARCHIVE_BASE_OVERLORD_5_MD5='580bcbdf375ead938c80956f27e1069d' ARCHIVE_BASE_OVERLORD_5_SIZE='100180' ARCHIVE_BASE_OVERLORD_5_VERSION='3.9.3-gog68314' ARCHIVE_BASE_OVERLORD_2_NAME='stellaris_overlord_3_8_4_1_65337.sh' ARCHIVE_BASE_OVERLORD_2_MD5='e1c1700fa00f2c2d0c86ec4d7d1d63ea' ARCHIVE_BASE_OVERLORD_2_SIZE='110000' ARCHIVE_BASE_OVERLORD_2_VERSION='3.8.4.1-gog65337' ## Galactic Paragons ARCHIVE_BASE_PARAGONS_18_NAME='stellaris_galactic_paragons_3_12_5_74193.sh' ARCHIVE_BASE_PARAGONS_18_MD5='00b9ebf125e6812ccd02840db3f7bcd7' ARCHIVE_BASE_PARAGONS_18_SIZE='832' ARCHIVE_BASE_PARAGONS_18_VERSION='3.12.5-gog74193' ARCHIVE_BASE_PARAGONS_18_URL='https://www.gog.com/game/stellaris_galactic_paragons' ARCHIVE_BASE_PARAGONS_17_NAME='stellaris_galactic_paragons_3_12_4_1_74025.sh' ARCHIVE_BASE_PARAGONS_17_MD5='c6344de2edf30bb6318347691fe2f762' ARCHIVE_BASE_PARAGONS_17_SIZE='832' ARCHIVE_BASE_PARAGONS_17_VERSION='3.12.4-gog74025' ARCHIVE_BASE_PARAGONS_16_NAME='stellaris_galactic_paragons_3_12_2_73401.sh' ARCHIVE_BASE_PARAGONS_16_MD5='45f99ab73623db6cce5923efa2923706' ARCHIVE_BASE_PARAGONS_16_SIZE='832' ARCHIVE_BASE_PARAGONS_16_VERSION='3.12.2-gog73401' ARCHIVE_BASE_PARAGONS_15_NAME='stellaris_galactic_paragons_3_12_1_73183.sh' ARCHIVE_BASE_PARAGONS_15_MD5='321f865bacc45ccde7a44b91b21ead42' ARCHIVE_BASE_PARAGONS_15_SIZE='832' ARCHIVE_BASE_PARAGONS_15_VERSION='3.12.1-gog73183' ARCHIVE_BASE_PARAGONS_14_NAME='stellaris_galactic_paragons_3_11_3_0_72561.sh' ARCHIVE_BASE_PARAGONS_14_MD5='ee6878f407ab24721974463a3c957d68' ARCHIVE_BASE_PARAGONS_14_SIZE='832' ARCHIVE_BASE_PARAGONS_14_VERSION='3.11.3-gog72561' ARCHIVE_BASE_PARAGONS_11_NAME='stellaris_galactic_paragons_3_10_4_70670.sh' ARCHIVE_BASE_PARAGONS_11_MD5='e081e220e0a862bd8adc42860b9bd1f4' ARCHIVE_BASE_PARAGONS_11_SIZE='832' ARCHIVE_BASE_PARAGONS_11_VERSION='3.10.4-gog70670' ARCHIVE_BASE_PARAGONS_5_NAME='stellaris_galactic_paragons_3_9_3_68314.sh' ARCHIVE_BASE_PARAGONS_5_MD5='4e1ad6ceb7a5e3bb6d55d1bc7547954e' ARCHIVE_BASE_PARAGONS_5_SIZE='1152' ARCHIVE_BASE_PARAGONS_5_VERSION='3.9.3-gog68314' ARCHIVE_BASE_PARAGONS_2_NAME='stellaris_galactic_paragons_3_8_4_1_65337.sh' ARCHIVE_BASE_PARAGONS_2_MD5='e47a7ab7c264021f49b8419e1aedc580' ARCHIVE_BASE_PARAGONS_2_SIZE='1200' ARCHIVE_BASE_PARAGONS_2_VERSION='3.8.4.1-gog65337' ## Astral Planes ARCHIVE_BASE_PLANES_12_NAME='stellaris_astral_planes_3_12_5_74193.sh' ARCHIVE_BASE_PLANES_12_MD5='8cbaaaa68306cc90effacd2510cbe089' ARCHIVE_BASE_PLANES_12_SIZE='46789' ARCHIVE_BASE_PLANES_12_VERSION='3.12.5-gog74193' ARCHIVE_BASE_PLANES_12_URL='https://www.gog.com/game/stellaris_astral_planes' ARCHIVE_BASE_PLANES_11_NAME='stellaris_astral_planes_3_12_4_1_74025.sh' ARCHIVE_BASE_PLANES_11_MD5='1a7e9e9209d740c9a53aede66dcbc6c4' ARCHIVE_BASE_PLANES_11_SIZE='46789' ARCHIVE_BASE_PLANES_11_VERSION='3.12.4-gog74025' ARCHIVE_BASE_PLANES_10_NAME='stellaris_astral_planes_3_12_2_73401.sh' ARCHIVE_BASE_PLANES_10_MD5='c56ae7693d57798e6165d822c568a648' ARCHIVE_BASE_PLANES_10_SIZE='46789' ARCHIVE_BASE_PLANES_10_VERSION='3.12.2-gog73401' ARCHIVE_BASE_PLANES_9_NAME='stellaris_astral_planes_3_12_1_73183.sh' ARCHIVE_BASE_PLANES_9_MD5='ac2897874c86f0ca6f22c3c09f321c8e' ARCHIVE_BASE_PLANES_9_SIZE='46789' ARCHIVE_BASE_PLANES_9_VERSION='3.12.1-gog73183' ARCHIVE_BASE_PLANES_8_NAME='stellaris_astral_planes_3_11_3_0_72561.sh' ARCHIVE_BASE_PLANES_8_MD5='7d43cac5e6dd18238fff6f06b82be7c1' ARCHIVE_BASE_PLANES_8_SIZE='46789' ARCHIVE_BASE_PLANES_8_VERSION='3.11.3-gog72561' ARCHIVE_BASE_PLANES_5_NAME='stellaris_astral_planes_3_10_4_70670.sh' ARCHIVE_BASE_PLANES_5_MD5='fab105e52dffbf0ec425d4cedf89feae' ARCHIVE_BASE_PLANES_5_SIZE='46789' ARCHIVE_BASE_PLANES_5_VERSION='3.10.4-gog70670' ## The Machine Age ARCHIVE_BASE_MACHINE_3_NAME='stellaris_the_machine_age_3_12_5_74193.sh' ARCHIVE_BASE_MACHINE_3_MD5='06614dbbb8a94b20449f6a3a6f863347' ARCHIVE_BASE_MACHINE_3_SIZE='118726' ARCHIVE_BASE_MACHINE_3_VERSION='3.12.5-gog74193' ARCHIVE_BASE_MACHINE_3_URL='https://www.gog.com/game/stellaris_the_machine_age' ARCHIVE_BASE_MACHINE_2_NAME='stellaris_the_machine_age_3_12_4_1_74025.sh' ARCHIVE_BASE_MACHINE_2_MD5='b6a0b8fff344a7454f28321f5c135ea1' ARCHIVE_BASE_MACHINE_2_SIZE='118726' ARCHIVE_BASE_MACHINE_2_VERSION='3.12.4-gog74025' ARCHIVE_BASE_MACHINE_1_NAME='stellaris_the_machine_age_3_12_2_73401.sh' ARCHIVE_BASE_MACHINE_1_MD5='9ddc20ef2c06daac40bffeaf838c1f3b' ARCHIVE_BASE_MACHINE_1_SIZE='118726' ARCHIVE_BASE_MACHINE_1_VERSION='3.12.2-gog73401' ARCHIVE_BASE_MACHINE_0_NAME='stellaris_the_machine_age_3_12_1_73183.sh' ARCHIVE_BASE_MACHINE_0_MD5='7f56b69dd740fadc6a640b6e2a135e0a' ARCHIVE_BASE_MACHINE_0_SIZE='118726' ARCHIVE_BASE_MACHINE_0_VERSION='3.12.1-gog73183' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-stellaris.sh0000755000000000000000000001344214471751340014166 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Stellaris ### script_version=20240721.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='stellaris' GAME_NAME='Stellaris' ARCHIVE_BASE_55_NAME='stellaris_3_12_5_74193.sh' ARCHIVE_BASE_55_MD5='bb1b18f25732a09a6f257554a1d98375' ARCHIVE_BASE_55_SIZE='18792782' ARCHIVE_BASE_55_VERSION='3.12.5-gog74193' ARCHIVE_BASE_55_URL='https://www.gog.com/game/stellaris' ARCHIVE_BASE_54_NAME='stellaris_3_12_4_1_74025.sh' ARCHIVE_BASE_54_MD5='1e8b5cf1ed842230893beec4794ada09' ARCHIVE_BASE_54_SIZE='18917681' ARCHIVE_BASE_54_VERSION='3.12.4-gog74025' ARCHIVE_BASE_53_NAME='stellaris_3_12_2_73401.sh' ARCHIVE_BASE_53_MD5='7e58c45097f67a90eb6a877c1c6068c5' ARCHIVE_BASE_53_SIZE='18775413' ARCHIVE_BASE_53_VERSION='3.12.2-gog73401' ARCHIVE_BASE_52_NAME='stellaris_3_12_1_73183.sh' ARCHIVE_BASE_52_MD5='063a3f3b021dd095ac80c4e832dc9c9f' ARCHIVE_BASE_52_SIZE='18860653' ARCHIVE_BASE_52_VERSION='3.12.1-gog73183' ARCHIVE_BASE_51_NAME='stellaris_3_11_3_0_72561.sh' ARCHIVE_BASE_51_MD5='a03584bd08d67544607fade70c8cb157' ARCHIVE_BASE_51_SIZE='16450506' ARCHIVE_BASE_51_VERSION='3.11.3-gog72561' ARCHIVE_BASE_48_NAME='stellaris_3_10_4_70670.sh' ARCHIVE_BASE_48_MD5='8703e439a2588f88987ad7d600674714' ARCHIVE_BASE_48_SIZE='16449439' ARCHIVE_BASE_48_VERSION='3.10.4-gog70670' ARCHIVE_BASE_42_NAME='stellaris_3_9_3_68314.sh' ARCHIVE_BASE_42_MD5='fb96d68d043643b032328023c09bbb53' ARCHIVE_BASE_42_SIZE='16222112' ARCHIVE_BASE_42_VERSION='3.9.3-gog68314' ARCHIVE_BASE_39_NAME='stellaris_3_8_4_1_65337.sh' ARCHIVE_BASE_39_MD5='95e375ad5250a5ecc525e9f873edf642' ARCHIVE_BASE_39_SIZE='17000000' ARCHIVE_BASE_39_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_35_NAME='stellaris_3_7_4_63489.sh' ARCHIVE_BASE_35_MD5='2c0200a3eac988cf300b259ec0e75745' ARCHIVE_BASE_35_SIZE='16000000' ARCHIVE_BASE_35_VERSION='3.7.4-gog63489' ARCHIVE_BASE_32_NAME='stellaris_3_6_1_60754.sh' ARCHIVE_BASE_32_MD5='d2a56659e3ff14f1916e54cda1848efb' ARCHIVE_BASE_32_SIZE='16000000' ARCHIVE_BASE_32_VERSION='3.6.1-gog60754' ARCHIVE_BASE_30_NAME='stellaris_3_5_3_59410.sh' ARCHIVE_BASE_30_MD5='4476050de7a99e8de7dfb9674d770ab4' ARCHIVE_BASE_30_SIZE='16000000' ARCHIVE_BASE_30_VERSION='3.5.3-gog59410' ARCHIVE_BASE_28_NAME='stellaris_3_4_5_56913.sh' ARCHIVE_BASE_28_MD5='aadcdd3e618635fe0a014ee649ed9204' ARCHIVE_BASE_28_SIZE='16000000' ARCHIVE_BASE_28_VERSION='3.4.5-gog56913' ARCHIVE_BASE_24_NAME='stellaris_3_3_4_54421.sh' ARCHIVE_BASE_24_MD5='2fe3bf9955468eed06bfaaf6e8e48f89' ARCHIVE_BASE_24_SIZE='15000000' ARCHIVE_BASE_24_VERSION='3.3.4-gog54421' ARCHIVE_BASE_20_NAME='stellaris_3_2_1_1_51520.sh' ARCHIVE_BASE_20_MD5='91d1173e84573c04b4b84978dfe068e5' ARCHIVE_BASE_20_SIZE='15000000' ARCHIVE_BASE_20_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_19_NAME='stellaris_3_1_1_50008.sh' ARCHIVE_BASE_19_MD5='157bbf508ea354ced1cbbf0d06c15b0f' ARCHIVE_BASE_19_SIZE='12000000' ARCHIVE_BASE_19_VERSION='3.1.1-gog50008' ARCHIVE_BASE_18_NAME='stellaris_3_0_3_47193.sh' ARCHIVE_BASE_18_MD5='3c818f2b540998ddcc9c18dd98e15cba' ARCHIVE_BASE_18_SIZE='12000000' ARCHIVE_BASE_18_VERSION='3.0.3-gog47193' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libnakama-cpp.so libpops_api.so' CONTENT_GAME_BIN_FILES=' crash_reporter tools stellaris' CONTENT_GAME_DATA_MODELS_SHIPS_FILES=' gfx/models/ships' CONTENT_GAME_DATA_MODELS_FILES=' gfx/models' CONTENT_GAME_DATA_FILES=' common curated_save_games dlc dlc_metadata events flags fonts gfx interface licenses locales localisation localisation_synced map music prescripted_countries previewer_assets sound tweakergui_assets unchecked_defines ChangeLog.txt ChangeLogBlank.txt checksum_manifest.txt ThirdPartyLicenses.txt' ## TODO: Check why a symlinks farm prefix can not be used. APP_MAIN_PREFIX_TYPE='none' APP_MAIN_EXE='stellaris' APP_MAIN_ICON='gfx/exe_icon.bmp' PACKAGES_LIST=' PKG_BIN PKG_DATA_MODELS_SHIPS PKG_DATA_MODELS PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 libresolv.so.2 libstdc++.so.6 libuuid.so.1 libX11.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_MODELS' PKG_DATA_MODELS_ID="${PKG_DATA_ID}-models" PKG_DATA_MODELS_DESCRIPTION="${PKG_DATA_DESCRIPTION} - models" PKG_DATA_MODELS_DEPENDENCIES_SIBLINGS=' PKG_DATA_MODELS_SHIPS' PKG_DATA_MODELS_SHIPS_ID="${PKG_DATA_MODELS_ID}-ships" PKG_DATA_MODELS_SHIPS_DESCRIPTION="${PKG_DATA_MODELS_DESCRIPTION} - ships" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Prevent inclusion of the Paradox launcher. rm --force --recursive \ 'libPDXBrowser_IPC.so' \ launcher-* \ pdx_* ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Force the use of system-provided SDL. path_libraries_system=$( set_current_package 'PKG_BIN' path_libraries_system ) APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') # Force the use of system-provided SDL. export SDL_DYNAMIC_API='${path_libraries_system}/libSDL2-2.0.so.0' " launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-sunless-sea.sh0000755000000000000000000001656714471751340014441 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 BetaRays set -o errexit ### # Sunless Sea ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='sunless-sea' GAME_NAME='Sunless Sea' # Archives ## Zubmariner (stand-alone expansion, gog.com) ARCHIVE_BASE_GOG_ZUBMARINER_5_NAME='sunless_sea_zubmariner_2_2_11_3212_64426.sh' ARCHIVE_BASE_GOG_ZUBMARINER_5_MD5='35dfc1ccb8a152e7eae5e1468d33098e' ARCHIVE_BASE_GOG_ZUBMARINER_5_VERSION='2.2.11.3212-gog64426' ARCHIVE_BASE_GOG_ZUBMARINER_5_SIZE='928276' ARCHIVE_BASE_GOG_ZUBMARINER_5_URL='https://www.gog.com/game/sunless_sea_zubmariner' ARCHIVE_BASE_GOG_ZUBMARINER_4_NAME='sunless_sea_zubmariner_v2_2_7_3165_a_53438.sh' ARCHIVE_BASE_GOG_ZUBMARINER_4_MD5='2d160c6c91b3b7e603447714b3112fba' ARCHIVE_BASE_GOG_ZUBMARINER_4_VERSION='2.2.7.3165-gog53438' ARCHIVE_BASE_GOG_ZUBMARINER_4_SIZE='930000' ARCHIVE_BASE_GOG_ZUBMARINER_3_NAME='sunless_sea_zubmariner_2_2_7_3165_29003.sh' ARCHIVE_BASE_GOG_ZUBMARINER_3_MD5='7527c8f7a87c6d8f04a0cf2d75f30f4c' ARCHIVE_BASE_GOG_ZUBMARINER_3_VERSION='2.2.7.3165-gog29003' ARCHIVE_BASE_GOG_ZUBMARINER_3_SIZE='930000' ARCHIVE_BASE_GOG_ZUBMARINER_2_NAME='sunless_sea_zubmariner_2_2_6_3150_24613.sh' ARCHIVE_BASE_GOG_ZUBMARINER_2_MD5='427440ff2f5e57e5e556bbaa1ffcfa7c' ARCHIVE_BASE_GOG_ZUBMARINER_2_VERSION='2.2.6.3150-gog24613' ARCHIVE_BASE_GOG_ZUBMARINER_2_SIZE='930000' ARCHIVE_BASE_GOG_ZUBMARINER_1_NAME='sunless_sea_zubmariner_en_v2_2_4_3141_21326.sh' ARCHIVE_BASE_GOG_ZUBMARINER_1_MD5='438471f35119ca0131971082f6eb805c' ARCHIVE_BASE_GOG_ZUBMARINER_1_VERSION='2.2.4.3141-gog21326' ARCHIVE_BASE_GOG_ZUBMARINER_1_SIZE='930000' ARCHIVE_BASE_GOG_ZUBMARINER_0_NAME='gog_sunless_sea_zubmariner_2.5.0.6.sh' ARCHIVE_BASE_GOG_ZUBMARINER_0_MD5='692cd0dac832d5254bd38d7e1a05b918' ARCHIVE_BASE_GOG_ZUBMARINER_0_VERSION='2.2.2.3130-gog2.5.0.6' ARCHIVE_BASE_GOG_ZUBMARINER_0_SIZE='870000' ## Sunless Sea (base game, gog.com) ARCHIVE_BASE_GOG_5_NAME='sunless_sea_2_2_11_3212_64426.sh' ARCHIVE_BASE_GOG_5_MD5='f5ab5552b618f33c5ddf0d952aa1294c' ARCHIVE_BASE_GOG_5_VERSION='2.2.11.3212-gog64426' ARCHIVE_BASE_GOG_5_SIZE='756028' ARCHIVE_BASE_GOG_5_URL='https://www.gog.com/game/sunless_sea' ARCHIVE_BASE_GOG_4_NAME='sunless_sea_v2_2_7_3165_a_53438.sh' ARCHIVE_BASE_GOG_4_MD5='e7cdef68377026c0f61327342a6b68b4' ARCHIVE_BASE_GOG_4_VERSION='2.2.7.3165-gog53438' ARCHIVE_BASE_GOG_4_SIZE='760000' ARCHIVE_BASE_GOG_3_NAME='sunless_sea_2_2_7_3165_29003.sh' ARCHIVE_BASE_GOG_3_MD5='0feebd54ae67c772d189e19d2042fe91' ARCHIVE_BASE_GOG_3_VERSION='2.2.7.3165-gog29003' ARCHIVE_BASE_GOG_3_SIZE='760000' ARCHIVE_BASE_GOG_2_NAME='sunless_sea_2_2_6_3150_24613.sh' ARCHIVE_BASE_GOG_2_MD5='1ea56377e7636f354656c1f791f29a5c' ARCHIVE_BASE_GOG_2_VERSION='2.2.6.3150-gog24613' ARCHIVE_BASE_GOG_2_SIZE='760000' ARCHIVE_BASE_GOG_1_NAME='sunless_sea_en_v2_2_4_3141_21326.sh' ARCHIVE_BASE_GOG_1_MD5='df453a83ac1fb2767bdeafafb40f037a' ARCHIVE_BASE_GOG_1_VERSION='2.2.4.3141-gog21326' ARCHIVE_BASE_GOG_1_SIZE='760000' ARCHIVE_BASE_GOG_0_NAME='gog_sunless_sea_2.8.0.11.sh' ARCHIVE_BASE_GOG_0_MD5='1cf6bb7a440ce796abf8e7afcb6f7a54' ARCHIVE_BASE_GOG_0_VERSION='2.2.2.3129-gog2.8.0.11' ARCHIVE_BASE_GOG_0_SIZE='700000' ## Sunless Sea (base game, humblebundle.com) ARCHIVE_BASE_HUMBLE_1_NAME='Sunless_Sea_Setup_V2.2.4.3141_LINUX.zip' ARCHIVE_BASE_HUMBLE_1_MD5='076c6784bb96e4189f675f114c98ae85' ARCHIVE_BASE_HUMBLE_1_VERSION='2.2.4.3141-humble180606' ARCHIVE_BASE_HUMBLE_1_SIZE='760000' ARCHIVE_BASE_HUMBLE_1_URL='https://www.humblebundle.com/store/sunless-sea' ARCHIVE_BASE_HUMBLE_0_NAME='Sunless_Sea_Setup_V2.2.2.3129_LINUX.zip' ARCHIVE_BASE_HUMBLE_0_MD5='bdb37932e56fd0655a2e4263631e2582' ARCHIVE_BASE_HUMBLE_0_VERSION='2.2.2.3129-humble170131' ARCHIVE_BASE_HUMBLE_0_SIZE='700000' UNITY3D_NAME='Sunless Sea' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data/noarch' CONTENT_GAME_BIN64_PATH_HUMBLE='data/x86_64' CONTENT_GAME_BIN32_PATH_HUMBLE='data/x86' CONTENT_DOC_DATA_FILES=' README.linux' ## Application type can not be automatically guessed when using the Humble Bundle archive, because the game binary is not stored under CONTENT_PATH_DEFAULT. ## This application type is required to automatically generate the default files list for archive contents inclusion. APP_MAIN_TYPE_HUMBLE='native' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_GOG_ZUBMARINER="${PKG_DATA_ID}-zubmariner" PKG_DATA_PROVIDES=" $PKG_DATA_ID" PKG_DATA_DESCRIPTION='data' PKG_DATA_DESCRIPTION_GOG_ZUBMARINER="$PKG_DATA_DESCRIPTION (including Zubmariner DLC)" ## Ensure smooth upgrades from packages generated with pre-20231020.1 scripts. PKG_DATA_PROVIDES="${PKG_DATA_PROVIDES:-} sunless-sea-zubmariner-data" PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN64_DEPS="$PKG_BIN_DEPS" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # humblebundle.com - Check that tools required to handle the inner archive are available. case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_'*) SCRIPT_DEPS="${SCRIPT_DEPS:-} $(archive_requirements_mojosetup_list)" check_deps ;; esac # Extract game data archive_extraction_default case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_'*) ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/Sunless Sea.sh" archive_extraction 'ARCHIVE_INNER' rm "$(archive_path 'ARCHIVE_INNER')" ;; esac ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## humblebundle.com - Some arch-specific files in the archive are stored in the arch-independent path. case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_'*) cp --link --parents --recursive \ "$(unity3d_name)_Data/Mono/x86_64" \ "$(unity3d_name)_Data/Plugins/x86_64" \ "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN64')" cp --link --parents --recursive \ "$(unity3d_name)_Data/Mono/x86" \ "$(unity3d_name)_Data/Plugins/x86" \ "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN32')" rm --recursive \ "$(unity3d_name)_Data/Mono/x86_64" \ "$(unity3d_name)_Data/Mono/x86" \ "$(unity3d_name)_Data/Plugins/x86_64" \ "$(unity3d_name)_Data/Plugins/x86" rmdir "$(unity3d_name)_Data/Plugins" ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-sunless-skies-expansions.sh0000755000000000000000000000375514471751340017167 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Sunless Skies expansions: # - Cyclopean Owl ### script_version=20240701.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='sunless-skies' GAME_NAME='Sunless Skies' EXPANSION_ID_OWL='cyclopean-owl' EXPANSION_NAME_OWL='Cyclopean Owl' ## Cyclopean Owl ARCHIVE_BASE_OWL_3_NAME='sunless_skies_cyclopean_owl_2_0_5_6e8c8ff_74416.sh' ARCHIVE_BASE_OWL_3_MD5='163712d560736a51eb51fda83cee7336' ARCHIVE_BASE_OWL_3_SIZE='899' ARCHIVE_BASE_OWL_3_VERSION='2.0.5-gog74416' ARCHIVE_BASE_OWL_2_NAME='sunless_skies_cyclopean_owl_2_0_4_fcf0af7a_52215.sh' ARCHIVE_BASE_OWL_2_MD5='c3749871147607f488f58881b30b9600' ARCHIVE_BASE_OWL_2_SIZE='1300' ARCHIVE_BASE_OWL_2_VERSION='2.0.4-gog52215' ARCHIVE_BASE_OWL_0_NAME='sunless_skies_cyclopean_owl_2_0_2_9bcd3d8c_48199.sh' ARCHIVE_BASE_OWL_0_MD5='9d0dee370093bce46c35dc114c0d6241' ARCHIVE_BASE_OWL_0_SIZE='1300' ARCHIVE_BASE_OWL_0_VERSION='2.0.2-gog48199' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_MAIN_DEPS="$GAME_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Work around directory name case mismatch. if [ -e 'DLC' ]; then mv 'DLC' 'dlc' fi ) # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-sunless-skies.sh0000755000000000000000000000447114471751340014776 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Sunless Skies ### script_version=20240701.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='sunless-skies' GAME_NAME='Sunless Skies' ARCHIVE_BASE_2_NAME='sunless_skies_sovereign_edition_2_0_5_6e8c8ff_74416.sh' ARCHIVE_BASE_2_MD5='3405edfa656734537b13b253748fc556' ARCHIVE_BASE_2_SIZE='3276986' ARCHIVE_BASE_2_VERSION='2.0.5-gog74416' ARCHIVE_BASE_2_URL='https://www.gog.com/game/sunless_skies' ARCHIVE_BASE_1_NAME='sunless_skies_sovereign_edition_2_0_4_fcf0af7a_52215.sh' ARCHIVE_BASE_1_MD5='0d92a8c235d610e6ec560c25179c529a' ARCHIVE_BASE_1_SIZE='3300000' ARCHIVE_BASE_1_VERSION='2.0.4-gog52215' ARCHIVE_BASE_0_NAME='sunless_skies_sovereign_edition_2_0_2_9bcd3d8c_48199.sh' ARCHIVE_BASE_0_MD5='f99de4c6a893be6f7fcb8170c94478f4' ARCHIVE_BASE_0_SIZE='3300000' ARCHIVE_BASE_0_VERSION='2.0.2-gog48199' UNITY3D_NAME='Sunless Skies' CONTENT_PATH_DEFAULT='data/noarch/game' ## Without write access to the "dlc" directory, the game fails to load properly. USER_PERSISTENT_DIRECTORIES=' dlc' PACKAGES_LIST='PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Drop empty "Plugins" directory. rmdir "$(unity3d_name)_Data/Plugins" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-superflu-riteurnz.sh0000755000000000000000000001311614471751340015707 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Superflu Riteurnz ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='superflu-riteurnz' GAME_NAME='Superflu Riteurnz' ARCHIVE_BASE_1_NAME='superfluous-returnz-1.6.0-d13-gnunux.tar.gz' ARCHIVE_BASE_1_MD5='bbefabb57d0525a6e219251db7937e50' ARCHIVE_BASE_1_SIZE='256197' ARCHIVE_BASE_1_VERSION='1.6.0-itch.2023.12.20' ARCHIVE_BASE_1_URL='https://ptilouk.itch.io/superfluous-returnz' ARCHIVE_BASE_0_NAME='superfluous-returnz-1.5.5-d12-gnunux.tar.gz' ARCHIVE_BASE_0_MD5='a147cebc30b9439321b5d6c8b8f04539' ARCHIVE_BASE_0_SIZE='353012' ARCHIVE_BASE_0_VERSION='1.5.5-itch.2023.11.22' ## ./play.it 2.29 does not have good support for multiple archives sharing a same name. ## cf. https://forge.dotslashplay.it/play.it/scripts/-/issues/355 #ARCHIVE_BASE_MONOARCH_7_NAME='superfluous-returnz-1.5.5-d12-gnunux.tar.gz' #ARCHIVE_BASE_MONOARCH_7_MD5='6410e666d262dc32b4a143e5670d1805' #ARCHIVE_BASE_MONOARCH_7_SIZE='315764' #ARCHIVE_BASE_MONOARCH_7_VERSION='1.5.5-itch.2023.10.09' ARCHIVE_BASE_MONOARCH_6_NAME='superfluous-returnz-1.5.4-d11-gnunux.tar.gz' ARCHIVE_BASE_MONOARCH_6_MD5='8f1f27107d8195b252a4a95be4e49961' ARCHIVE_BASE_MONOARCH_6_SIZE='315924' ARCHIVE_BASE_MONOARCH_6_VERSION='1.5.4-itch.2023.09.14' ARCHIVE_BASE_MONOARCH_5_NAME='superfluous-returnz-1.5.3-d10-gnunux.tar.gz' ARCHIVE_BASE_MONOARCH_5_MD5='bf0989ee6fc571c5dfb1546700630a9a' ARCHIVE_BASE_MONOARCH_5_SIZE='315888' ARCHIVE_BASE_MONOARCH_5_VERSION='1.5.3-itch1' ARCHIVE_BASE_MONOARCH_4_NAME='superfluous-returnz-1.5.2-d10-gnunux.tar.gz' ARCHIVE_BASE_MONOARCH_4_MD5='8b07a4ee3c36e12335bfdad784aefcdf' ARCHIVE_BASE_MONOARCH_4_SIZE='320000' ARCHIVE_BASE_MONOARCH_4_VERSION='1.5.2-itch1' ARCHIVE_BASE_MONOARCH_3_NAME='superfluous-returnz-1.5.1-d10-gnunux.tar.gz' ARCHIVE_BASE_MONOARCH_3_MD5='34ca505142784f66a30f1c0d387aa920' ARCHIVE_BASE_MONOARCH_3_SIZE='320000' ARCHIVE_BASE_MONOARCH_3_VERSION='1.5.1-itch.2023.06.14' ARCHIVE_BASE_MONOARCH_2_NAME='superfluous-returnz-1.5.0-d10-gnunux.tar.gz' ARCHIVE_BASE_MONOARCH_2_MD5='0a243baf9fcc7dbe83a18394eb87a37f' ARCHIVE_BASE_MONOARCH_2_SIZE='320000' ARCHIVE_BASE_MONOARCH_2_VERSION='1.5.0-itch.2023.06.08' ARCHIVE_BASE_MONOARCH_1_NAME='superfluous-returnz-1.4.2-d7-gnunux.tar.gz' ARCHIVE_BASE_MONOARCH_1_MD5='a2086175774ea0038e5ea0f952971560' ARCHIVE_BASE_MONOARCH_1_SIZE='310000' ARCHIVE_BASE_MONOARCH_1_VERSION='1.4.2-itch.2023.05.16' ARCHIVE_BASE_MONOARCH_0_NAME='superfluous-returnz-1.4.1-d6-gnunux.tar.gz' ARCHIVE_BASE_MONOARCH_0_MD5='93a5592d1d10f4a73047ec46d4cc966b' ARCHIVE_BASE_MONOARCH_0_SIZE='310000' ARCHIVE_BASE_MONOARCH_0_VERSION='1.4.1-itch.2023.05.15' CONTENT_PATH_DEFAULT_1='superfluous-returnz-1.6.0-d13' CONTENT_PATH_DEFAULT_0='superfluous-returnz-1.5.5-d12' CONTENT_PATH_DEFAULT_MONOARCH_7='superfluous-returnz-1.5.5-d12' CONTENT_PATH_DEFAULT_MONOARCH_6='superfluous-returnz-1.5.4-d11' CONTENT_PATH_DEFAULT_MONOARCH_5='superfluous-returnz-1.5.3-d10' CONTENT_PATH_DEFAULT_MONOARCH_4='superfluous-returnz-1.5.2-d10' CONTENT_PATH_DEFAULT_MONOARCH_3='superfluous-returnz-1.5.1-d10' CONTENT_PATH_DEFAULT_MONOARCH_2='superfluous-returnz-1.5.0-d10' CONTENT_PATH_DEFAULT_MONOARCH_1='superfluous-returnz-1.4.2-d7' CONTENT_PATH_DEFAULT_MONOARCH_0='superfluous-returnz-1.4.1-d6' CONTENT_GAME_BIN_FILES=' bin64/superfluous-returnz' CONTENT_GAME_BIN_FILES_MONOARCH=' bin/superfluous-returnz' CONTENT_GAME_DATA_FILES=' share/superfluous-returnz/*.data' CONTENT_DOC_DATA_FILES=' LICENSE.md' APP_MAIN_EXE='bin64/superfluous-returnz' APP_MAIN_EXE_MONOARCH='bin/superfluous-returnz' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 liblz4.so.1 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libSDL2_ttf-2.0.so.0 libstdc++.so.6 libyaml-0.so.2' ## libSDL2_image-2.0.so.0 is required by < 1.6 game builds. PKG_BIN_DEPENDENCIES_LIBRARIES_PRE16=' libc.so.6 libgcc_s.so.1 liblz4.so.1 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libSDL2_image-2.0.so.0 libSDL2_ttf-2.0.so.0 libstdc++.so.6 libyaml-0.so.2' PKG_BIN_DEPENDENCIES_LIBRARIES_0="$PKG_BIN_DEPENDENCIES_LIBRARIES_PRE16" PKG_BIN_DEPENDENCIES_LIBRARIES_MONOARCH="$PKG_BIN_DEPENDENCIES_LIBRARIES_PRE16" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data ## An alternative icon path is used for < 1.6 game builds. case "$(current_archive)" in ('ARCHIVE_BASE_0'|'ARCHIVE_BASE_MONOARCH_'*) icon_path_source="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/share/icons/hicolor/scalable/apps/superfluous-returnz.svg" ;; (*) icon_path_source="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/share/icons/superfluous-returnz.svg" ;; esac install -D --mode=644 --no-target-directory \ "$icon_path_source" \ "$(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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-terra-nil.sh0000755000000000000000000000472214471751340014062 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Terra Nil ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='terra-nil' GAME_NAME='Terra Nil' GAME_ID_DEMO='terra-nil-demo' GAME_NAME_DEMO='Terra Nil Prototype' ARCHIVE_BASE_0_NAME='terra_nil_1_04_linux_68121.sh' ARCHIVE_BASE_0_MD5='d71c5f1da5d78d3a61c048240c2ecdb5' ARCHIVE_BASE_0_SIZE='2092001' ARCHIVE_BASE_0_VERSION='1.04-gog68121' ARCHIVE_BASE_0_URL='https://www.gog.com/game/terra_nil' ARCHIVE_BASE_DEMO_0_NAME='Terra Nil 0.41 Linux.zip' ARCHIVE_BASE_DEMO_0_MD5='0179d82ebf76eed15c519d419ecdcab1' ARCHIVE_BASE_DEMO_0_SIZE='167423' ARCHIVE_BASE_DEMO_0_VERSION='0.41-itch.2020.09.03' ARCHIVE_BASE_DEMO_0_URL='https://vfqd.itch.io/terra-nil' UNITY3D_NAME='Terra Nil' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_PATH_DEFAULT_DEMO='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPS_DEMO="$PKG_DATA_ID_DEMO" 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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Full game only - Drop duplicated files. case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) ;; (*) find . -name 'PaxHeader' -exec rm --recursive {} + ;; esac ## Full game only - Do not include the shipped Steam libraries. case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) ;; (*) rm --recursive "$(unity3d_name)_Data/Plugins" ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-the-elder-scrolls-3.sh0000755000000000000000000001132114471751340015646 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # The Elder Scrolls 3 ### script_version=20240507.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='the-elder-scrolls-3' GAME_NAME='The Elder Scrolls Ⅲ: Morrowind' ARCHIVE_BASE_EN_0_NAME='setup_tes_morrowind_goty_2.0.0.7.exe' ARCHIVE_BASE_EN_0_MD5='3a027504a0e4599f8c6b5b5bcc87a5c6' ## Do not convert file paths to lowercase, as it causes issues when importing morrowind.ini default settings. ARCHIVE_BASE_EN_0_EXTRACTOR='innoextract' ARCHIVE_BASE_EN_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_EN_0_SIZE='2300000' ARCHIVE_BASE_EN_0_VERSION='1.6.1820-gog2.0.0.7' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/the_elder_scrolls_iii_morrowind_goty_edition' ARCHIVE_BASE_FR_0_NAME='setup_tes_morrowind_goty_french_2.0.0.7.exe' ARCHIVE_BASE_FR_0_MD5='2aee024e622786b2cb5454ff074faf9b' ## Do not convert file paths to lowercase, as it causes issues when importing morrowind.ini default settings. ARCHIVE_BASE_FR_0_EXTRACTOR='innoextract' ARCHIVE_BASE_FR_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_FR_0_SIZE='2300000' ARCHIVE_BASE_FR_0_VERSION='1.6.1820-gog2.0.0.7' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/the_elder_scrolls_iii_morrowind_goty_edition' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_L10N_FILES=' Morrowind.ini Data Files/Sound/Vo Data Files/Splash Data Files/Video Data Files/*.bsa Data Files/*.esm' CONTENT_GAME_DATA_FILES=' Data Files/Fonts Data Files/Music Data Files/Sound/Cr Data Files/Sound/Fx Data Files/*.esp Data Files/*.txt Knife.ico' CONTENT_GAME_DATAFILES_DATA_PATH="${CONTENT_PATH_DEFAULT}/_OfficialPlugins/_unpacked_files" CONTENT_GAME_DATAFILES_DATA_FILES=' Icons Meshes Sound Textures *.esp *.txt' CONTENT_DOC_L10N_FILES=' *.txt' CONTENT_DOC_DATA_FILES=' *.pdf' APPLICATIONS_LIST='APP_MAIN' APP_MAIN_TYPE='custom' APP_MAIN_ICON='Morrowind.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_DEPS="$PKG_L10N_ID $PKG_DATA_ID" PKG_BIN_DEPENDENCIES_COMMANDS=' openmw-iniimporter openmw-launcher' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Fix .bsa/.esm dates on French version. case "$(current_archive)" in ('ARCHIVE_BASE_FR_'*) touch --date='2002-06-21 17:31:46.000000000 +0200' \ 'Data Files/Morrowind.bsa' touch --date='2002-07-17 18:59:22.000000000 +0200' \ 'Data Files/Morrowind.esm' touch --date='2002-10-29 21:22:06.000000000 +0100' \ 'Data Files/Tribunal.bsa' touch --date='2003-06-26 20:05:06.000000000 +0200' \ 'Data Files/Tribunal.esm' touch --date='2003-05-01 13:37:30.000000000 +0200' \ 'Data Files/Bloodmoon.bsa' touch --date='2003-07-07 17:27:56.000000000 +0200' \ 'Data Files/Bloodmoon.esm' ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion 'GAME_DATAFILES_DATA' 'PKG_DATA' "$(path_game_data)/Data Files" content_inclusion_default # Write launchers custom_launcher() { launcher_headers cat <<- EOF PATH_GAME_DATA="$(path_game_data)" EOF cat <<- 'OUTEREOF' OPENMW_CONFIG_PATH="${XDG_CONFIG_HOME:=${HOME}/.config}/openmw" OPENMW_CONFIG_FILE="${OPENMW_CONFIG_PATH}/openmw.cfg" OPENMW_CONFIG_LAUNCHER_FILE="${OPENMW_CONFIG_PATH}/launcher.cfg" # Initialize OpenMW configuration on first launch if [ ! -e "$OPENMW_CONFIG_FILE" ]; then mkdir --parents "$OPENMW_CONFIG_PATH" cat > "$OPENMW_CONFIG_FILE" <<- EOF data="${PATH_GAME_DATA}/Data Files" content=Morrowind.esm EOF openmw-iniimporter --ini "${PATH_GAME_DATA}/Morrowind.ini" --cfg "$OPENMW_CONFIG_FILE" if [ ! -e "$OPENMW_CONFIG_LAUNCHER_FILE" ]; then cat > "$OPENMW_CONFIG_LAUNCHER_FILE" <<- EOF [General] firstrun=false EOF fi fi openmw-launcher exit 0 OUTEREOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-the-excavation-of-hobs-barrow.sh0000755000000000000000000000324114471751340017724 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # The Excavation of Hob's Barrow ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='the-excavation-of-hobs-barrow' GAME_NAME='The Excavation of Hobʼs Barrow' ARCHIVE_BASE_0_NAME='the_excavation_of_hob_s_barrow_1_05_59783.sh' ARCHIVE_BASE_0_MD5='4282957f61e4cbea9c333bc99e56660a' ARCHIVE_BASE_0_SIZE='1170195' ARCHIVE_BASE_0_VERSION='1.05-gog59783' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_excavation_of_hobs_barrow' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' *.cfg *.exe *.vox' APP_MAIN_SCUMMID='ags:excavationhb' APP_MAIN_ICON='TEOHB.exe' ## Prevent conflicts with packages generated with pre-20230926.2 game scripts. PKG_MAIN_PROVIDES=' the-excavation-of-hobs-barrow-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 . "$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-the-fertile-crescent.sh0000755000000000000000000000406514471751340016201 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Fertile Crescent ### script_version=20240628.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='the-fertile-crescent' GAME_NAME='The Fertile Crescent' ARCHIVE_BASE_1_NAME='tfc_the_fertile_crescent_1_0014_74208.sh' ARCHIVE_BASE_1_MD5='9255deccb43f9eda5062614d0d6cf9d7' ARCHIVE_BASE_1_SIZE='524857' ARCHIVE_BASE_1_VERSION='1.0014-gog74208' ARCHIVE_BASE_1_URL='https://www.gog.com/game/tfc_the_fertile_crescent' ARCHIVE_BASE_0_NAME='tfc_the_fertile_crescent_1_0010b_74071.sh' ARCHIVE_BASE_0_MD5='619d9bbccea8d3b05037dacde8684533' ARCHIVE_BASE_0_SIZE='525376' ARCHIVE_BASE_0_VERSION='1.0010b-gog74071' UNITY3D_NAME='game' UNITY3D_PLUGINS=' libfmodL.so libfmod.so libfmodstudio.so libresonanceaudio.so' ## The game crashes on launch if the Steam library is missing. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-the-settlers-2.sh0000755000000000000000000001437514471751340014754 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # The Settlers 2 ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='the-settlers-2' GAME_NAME='The Settlers Ⅱ' # Archives ## German version ARCHIVE_BASE_DE_1_NAME='setup_the_settlers_2_gold_1.5.1_(german)_(30319).exe' ARCHIVE_BASE_DE_1_MD5='c360aaabd05e99b0f0752e52dd105107' ARCHIVE_BASE_DE_1_TYPE='innosetup' ARCHIVE_BASE_DE_1_SIZE='358538' ARCHIVE_BASE_DE_1_VERSION='1.5.1-gog30319' ARCHIVE_BASE_DE_1_URL='https://www.gog.com/game/the_settlers_2_gold_edition' ARCHIVE_BASE_DE_0_NAME='setup_settlers2_gold_german_2.1.0.17.exe' ARCHIVE_BASE_DE_0_MD5='f87a8fded6de455af4e6a284b3c4ed5e' ARCHIVE_BASE_DE_0_TYPE='innosetup' ARCHIVE_BASE_DE_0_SIZE='370000' ARCHIVE_BASE_DE_0_VERSION='1.5.1-gog2.1.0.17' ## English version ARCHIVE_BASE_EN_1_NAME='setup_the_settlers_2_gold_1.5.1_(30319).exe' ARCHIVE_BASE_EN_1_MD5='8381240ee580a298798b6afe863bac52' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_SIZE='359765' ARCHIVE_BASE_EN_1_VERSION='1.5.1-gog30319' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/the_settlers_2_gold_edition' ARCHIVE_BASE_EN_0_NAME='setup_settlers2_gold_2.0.0.14.exe' ARCHIVE_BASE_EN_0_MD5='6f64b47b15f6ba5d43670504dd0bb229' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='370000' ARCHIVE_BASE_EN_0_VERSION='1.5.1-gog2.0.0.14' ## French version ARCHIVE_BASE_FR_1_NAME='setup_the_settlers_2_gold_1.5.1_(french)_(30319).exe' ARCHIVE_BASE_FR_1_MD5='55a9d15f1260de5e711ea649120ece50' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_SIZE='395295' ARCHIVE_BASE_FR_1_VERSION='1.5.1-gog30319' ARCHIVE_BASE_FR_1_URL='https://www.gog.com/game/the_settlers_2_gold_edition' ARCHIVE_BASE_FR_0_NAME='setup_settlers2_gold_french_2.1.0.16.exe' ARCHIVE_BASE_FR_0_MD5='1eca72ca45d63e4390590d495657d213' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_SIZE='410000' ARCHIVE_BASE_FR_0_VERSION='1.5.1-gog2.1.0.16' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_DE_0='app' CONTENT_PATH_DEFAULT_EN_0='app' CONTENT_PATH_DEFAULT_FR_0='app' CONTENT_GAME_COMMON_FILES=' DOS4GW.EXE SETTLER2.VMC SETTLERS2.GOG SETTLERS2.INS DATA/*.DAT DATA/EDITRES.IDX DATA/ANIMDAT DATA/BOBS DATA/CBOB DATA/IO/*.DAT DATA/IO/*.FNT DATA/*.LST DATA/MASKS DATA/MBOB DATA/MISSIONS/MIS_00*.RTX DATA/MISSIONS/MIS_10*.RTX DATA/SOUNDDAT/SNG DATA/SOUNDDAT/SOUND.LST DATA/TEXTURES DRIVERS/*.AD DRIVERS/*.DIG DRIVERS/DIG.INI DRIVERS/*.EXE DRIVERS/*.LST DRIVERS/*.MDI DRIVERS/*.OPL GFX/PALETTE GFX/PICS2 GFX/PICS/INSTALL.LBM GFX/PICS/MISSION GFX/PICS/SETUP013.LBM GFX/PICS/SETUP015.LBM GFX/PICS/SETUP666.LBM GFX/PICS/SETUP667.LBM GFX/PICS/SETUP801.LBM GFX/PICS/SETUP802.LBM GFX/PICS/SETUP803.LBM GFX/PICS/SETUP804.LBM GFX/PICS/SETUP805.LBM GFX/PICS/SETUP806.LBM GFX/PICS/SETUP810.LBM GFX/PICS/SETUP811.LBM GFX/PICS/SETUP895.LBM GFX/PICS/SETUP896.LBM GFX/PICS/SETUP899.LBM GFX/PICS/SETUP990.LBM GFX/PICS/WORLD.LBM GFX/PICS/WORLDMSK.LBM GFX/TEXTURES VIDEO/SMACKPLY.EXE' CONTENT_GAME_MAIN_FILES=' DATA/RESOURCE.IDX DATA/IO/*.IDX DATA/MAPS* DATA/MISSIONS/MIS_0100.RTX DATA/ONLINE DATA/TXT* DRIVERS/MDI.INI GFX/PICS/SETUP000.LBM GFX/PICS/SETUP010.LBM GFX/PICS/SETUP011.LBM GFX/PICS/SETUP012.LBM GFX/PICS/SETUP014.LBM GFX/PICS/SETUP897.LBM GFX/PICS/SETUP898.LBM GFX/PICS/SETUP900.LBM GFX/PICS/SETUP901.LBM GFX/PICS/SETUP996.LBM GFX/PICS/SETUP997.LBM GFX/PICS/SETUP998.LBM SAVE/MISSION.DAT VIDEO/*.SMK *.EXE *.INI *.SCR' CONTENT_GAME0_MAIN_PATH="${CONTENT_PATH_DEFAULT}/__SUPPORT/SAVE" CONTENT_GAME0_MAIN_PATH_DE_0="${CONTENT_PATH_DEFAULT_DE_0}/__SUPPORT/SAVE" CONTENT_GAME0_MAIN_PATH_EN_0="${CONTENT_PATH_DEFAULT_EN_0}/__SUPPORT/SAVE" CONTENT_GAME0_MAIN_PATH_FR_0="${CONTENT_PATH_DEFAULT_FR_0}/__SUPPORT/SAVE" CONTENT_GAME0_MAIN_FILES=' SAVE/MISSION.DAT' CONTENT_DOC_MAIN_FILES=' EULA *.TXT' USER_PERSISTENT_FILES=' SETUP.INI' USER_PERSISTENT_DIRECTORIES=' DATA GFX SAVE WORLDS' GAME_IMAGE='SETTLERS2.INS' GAME_IMAGE_TYPE='iso' APP_MAIN_EXE='S2.EXE' APP_MAIN_ICON='APP/GOGGAME-1207658786.ICO' ## Play the intro movie before starting the game. APP_MAIN_DOSBOX_PRERUN=' @VIDEO\SMACKPLY VIDEO\INTRO.SMK' APP_EDITOR_ID="${GAME_ID}-editor" APP_EDITOR_EXE='S2EDIT.EXE' APP_EDITOR_NAME="$GAME_NAME - Editor" APP_EDITOR_ICON="$APP_MAIN_ICON" APP_SETUP_ID="${GAME_ID}-setup" APP_SETUP_EXE='SETUP.EXE' APP_SETUP_NAME="$GAME_NAME - Setup" APP_SETUP_CAT='Settings' APP_SETUP_ICON="$APP_MAIN_ICON" PACKAGES_LIST=' PKG_COMMON PKG_MAIN' PKG_COMMON_ID="${GAME_ID}-common" PKG_COMMON_DESCRIPTION='common data' PKG_MAIN_ID="$GAME_ID" PKG_MAIN_ID_DE="${GAME_ID}-de" PKG_MAIN_ID_EN="${GAME_ID}-en" PKG_MAIN_ID_FR="${GAME_ID}-fr" PKG_MAIN_PROVIDES=" $PKG_MAIN_ID" PKG_MAIN_DESCRIPTION_DE='German version' PKG_MAIN_DESCRIPTION_EN='English version' PKG_MAIN_DESCRIPTION_FR='French version' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_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 . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Convert all file paths to uppercase. toupper . ## Enforce disk image name. if [ -e 'SETTLERS2.INST' ]; then mv 'SETTLERS2.INST' "$GAME_IMAGE" fi ## Ensure case consistency in disk image table of contents. sed_pattern='settlers2.gog' sed_replacement='SETTLERS2.GOG' sed_expression="s/${sed_pattern}/${sed_replacement}/i" sed --in-place --expression="$sed_expression" "$GAME_IMAGE" ## Enforce icon name and path. for icon_path in \ 'GOGGAME-1207658786.ICO' \ 'GFW_HIGH.ICO' do if [ -e "$icon_path" ]; then mkdir --parents 'APP' mv "$icon_path" "$(icon_path 'APP_MAIN_ICON')" fi done ) # Include game data content_inclusion_icons 'PKG_COMMON' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-titan-quest-expansions.sh0000755000000000000000000000545714471751340016636 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Titan Quest expansions: # - Ragnarök # - Atlantis ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='titan-quest' GAME_NAME='Titan Quest' EXPANSION_ID_RAGNAROK='ragnarok' EXPANSION_NAME_RAGNAROK='Ragnarök' EXPANSION_ID_ATLANTIS='atlantis' EXPANSION_NAME_ATLANTIS='Atlantis' # Archives ## Ragnarök ARCHIVE_BASE_RAGNAROK_0_NAME='setup_titan_quest_ragnarok_2.10.6_(59562).exe' ARCHIVE_BASE_RAGNAROK_0_MD5='cb8f5a3f5567d9f84ad3add23347ad07' ARCHIVE_BASE_RAGNAROK_0_TYPE='innosetup' ARCHIVE_BASE_RAGNAROK_0_PART1_NAME='setup_titan_quest_ragnarok_2.10.6_(59562)-1.bin' ARCHIVE_BASE_RAGNAROK_0_PART1_MD5='e4a5d3bb1264c1a3881e2263cd3d6af3' ARCHIVE_BASE_RAGNAROK_0_SIZE='2553284' ARCHIVE_BASE_RAGNAROK_0_VERSION='2.10.6-gog59562' ARCHIVE_BASE_RAGNAROK_0_URL='https://www.gog.com/game/titan_quest_ragnarok' ## Atlantis ARCHIVE_BASE_ATLANTIS_0_NAME='setup_titan_quest_atlantis_2.10.6_(59562).exe' ARCHIVE_BASE_ATLANTIS_0_MD5='6924de3dc1dd15eec6f1e4e6d465f33c' ARCHIVE_BASE_ATLANTIS_0_TYPE='innosetup' ARCHIVE_BASE_ATLANTIS_0_PART1_NAME='setup_titan_quest_atlantis_2.10.6_(59562)-1.bin' ARCHIVE_BASE_ATLANTIS_0_PART1_MD5='2ad964c3cf35c13a0e05b7680b62d718' ARCHIVE_BASE_ATLANTIS_0_SIZE='2265041' ARCHIVE_BASE_ATLANTIS_0_VERSION='2.10.6-gog59562' ARCHIVE_BASE_ATLANTIS_0_URL='https://www.gog.com/game/titan_quest_atlantis' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES_RAGNAROK=' resources/quests.arc resources/xpack2/dialog.arc resources/xpack2/dialog_de.arc resources/xpack2/dialog_fr.arc resources/xpack2/dialog_ru.arc resources/xpack2/menu.arc resources/xpack2/quests.arc' CONTENT_GAME_MAIN_FILES_ATLANTIS=' resources/xpack3/dialog.arc resources/xpack3/dialog_de.arc resources/xpack3/dialog_fr.arc resources/xpack3/dialog_ru.arc resources/xpack3/menu.arc resources/xpack3/quests.arc resources/xpack3/system.arc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' PKG_MAIN_PROVIDES_RAGNAROK=" ${GAME_ID}-data-xpack2" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-titan-quest.sh0000755000000000000000000000750414471751340014444 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Titan Quest ### script_version=20240717.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='titan-quest' GAME_NAME='Titan Quest' ARCHIVE_BASE_0_NAME='setup_titan_quest_-_anniversary_edition_2.10.6_(59562).exe' ARCHIVE_BASE_0_MD5='a8b9399e2f968ca819c7138ff2ce5ab1' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_titan_quest_-_anniversary_edition_2.10.6_(59562)-1.bin' ARCHIVE_BASE_0_PART1_MD5='7164d6f1cf600aaa17101b4a263d4a70' ARCHIVE_BASE_0_PART2_NAME='setup_titan_quest_-_anniversary_edition_2.10.6_(59562)-2.bin' ARCHIVE_BASE_0_PART2_MD5='b8b5821c04bfed43068e02b5a1431511' ARCHIVE_BASE_0_PART3_NAME='setup_titan_quest_-_anniversary_edition_2.10.6_(59562)-3.bin' ARCHIVE_BASE_0_PART3_MD5='bb6bcb03b2ef688ef57d46d12d4b1233' ARCHIVE_BASE_0_PART4_NAME='setup_titan_quest_-_anniversary_edition_2.10.6_(59562)-4.bin' ARCHIVE_BASE_0_PART4_MD5='2a61ebe44e9424cdbad29f14e072c743' ARCHIVE_BASE_0_SIZE='13753628' ARCHIVE_BASE_0_VERSION='2.10.21415-gog59562' ARCHIVE_BASE_0_URL='https://www.gog.com/game/titan_quest_anniversary_edition' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' milesredist settings binkw32.dll concrt140.dll devil.dll direct3d11.dll direct3d.dll engine.dll game.dll gfsdk_ssao_d3d11.win32.dll libcurl.dll libeay32.dll libfbxsdk.dll memorymgr.dll mss32.dll msvcp140.dll msvcp71.dll msvcr71.dll natlib.dll pathengine.dll sourcecontrol.dll ssleay32.dll thqgdscore.dll thqno_api.dll vcruntime140.dll widget.dll zlib1.dll maxplugins.dlo aifeditor.exe animationcompiler.exe archivetool.exe artmanager.exe bitmapcreator.exe editor.exe fbxexporter.exe fontcompiler.exe mapcompiler.exe modelcompiler.exe pseditor.exe questeditor.exe resourcetree.exe shadercompiler.exe sourceserver.exe texturecompiler.exe tq.exe viewer.exe' ## The game crashes on launch if some store-specific libraries are missing: ## ## [2024-06-06-23:20:08][ERROR]: LoadPlugin: Unable to load plugin 'gog' from THQNOnline\gog\ ## [2024-06-06-23:20:08][ERROR]: LoadPlugin: Unable to load plugin 'gog' from THQNOnline\gog\ CONTENT_GAME0_BIN_FILES=' thqnonline/gog' CONTENT_GAME_DATA_XPACK2_FILES=' resources/quests.arc' CONTENT_GAME_DATA_RESOURCES_FILES=' resources' CONTENT_GAME_DATA_FILES=' audio database text toolset videos thqnocfg.dat' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Titan Quest - Immortal Throne' APP_MAIN_EXE='tq.exe' APP_MAIN_OPTIONS='/dx11' PACKAGES_LIST=' PKG_BIN PKG_DATA_XPACK2 PKG_DATA_RESOURCES PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_XPACK2 PKG_DATA_RESOURCES' PKG_DATA_XPACK2_ID="${PKG_DATA_ID}-xpack2" PKG_DATA_XPACK2_DESCRIPTION='resources shared between the base game and the Raganarök expansion' PKG_DATA_RESOURCES_ID="${PKG_DATA_ID}-resources" PKG_DATA_RESOURCES_DESCRIPTION="$PKG_DATA_DESCRIPTION - resources" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-tomb-raider-2.sh0000755000000000000000000000560614471751340014533 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Tomb Raider 2 ### script_version=20240609.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='tomb-raider-2' GAME_NAME='Tomb Raider Ⅱ' ARCHIVE_BASE_EN_0_NAME='setup_tomb_raider_2_20180108_(17720).exe' ARCHIVE_BASE_EN_0_MD5='858aa88bf7654a8fb7b7f8070cf1021b' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_VERSION='1.1-gog17720' ARCHIVE_BASE_EN_0_SIZE='340000' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/tomb_raider_123' ARCHIVE_BASE_FR_0_NAME='setup_tomb_raider_2_french_20180108_(17720).exe' ARCHIVE_BASE_FR_0_MD5='12ebe01ec7b4366862af31b860097f14' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_VERSION='1.1-gog17720' ARCHIVE_BASE_FR_0_SIZE='410000' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/tomb_raider_123' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' dec130.dll edec.dll libogg-0.dll libvorbis-0.dll libvorbisfile-3.dll msvcp90.dll msvcr90.dll sound.dll winplay.dll winsdec.dll winstr.dll data/dsetup16.dll data/dsetup32.dll data/dsetup.dll data/_setup.dll tomb2.exe' CONTENT_GAME_L10N_FILES=' audio data/*.dat data/*.pcx' CONTENT_GAME_DATA_FILES=' fmv music tombpc.dat data/*.sfx data/*.tr2' CONTENT_DOC_L10N_FILES=' manual.pdf readme.txt' CONTENT_DOC0_L10N_FILES_EN=' tomb raider ii_pc eula english.docx' CONTENT_DOC0_L10N_FILES_FR=' tomb raider ii_pc eula french.doc' USER_PERSISTENT_FILES=' savegame.*' APP_MAIN_EXE='tomb2.exe' APP_SETUP_ID="${GAME_ID}-setup" APP_SETUP_NAME="$GAME_NAME - setup" APP_SETUP_CAT='Settings' APP_SETUP_EXE='tomb2.exe' APP_SETUP_OPTIONS='-setup' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID $PKG_L10N_ID" PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' application/x-id3' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-tonight-we-riot.sh0000755000000000000000000000502314471751340015220 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Tonight We Riot ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' 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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-torchlight-1.sh0000755000000000000000000000465614471751340014500 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Torchlight 1 ### script_version=20240718.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='torchlight-1' GAME_NAME='Torchlight' ARCHIVE_BASE_1_NAME='setup_torchlight_1.15(a)_(23675).exe' ARCHIVE_BASE_1_MD5='a29e51f55aae740f4046d227d33fa64b' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='453318' ARCHIVE_BASE_1_VERSION='1.15-gog23675' ARCHIVE_BASE_1_URL='https://www.gog.com/game/torchlight' ARCHIVE_BASE_0_NAME='setup_torchlight_2.0.0.12.exe' ARCHIVE_BASE_0_MD5='4b721e1b3da90f170d66f42e60a3fece' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='460000' ARCHIVE_BASE_0_VERSION='1.15-gog2.0.0.12' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' plugins.cfg resources.cfg ceguibase.dll ceguiexpatparser.dll ceguifalagardwrbase.dll cg.dll d3dx9_39.dll fmodex.dll msvcp90.dll msvcr90.dll ogreguirenderer.dll ogremain.dll ois.dll particleuniverse.dll plugin_cgprogrammanager.dll plugin_octreescenemanager.dll plugin_particlefx.dll referenceapplayer.dll rendersystem_direct3d9.dll rendersystem_gl.dll torchlight.exe' CONTENT_GAME_DATA_FILES=' buildver.txt runicgames.ico torchlight.ico logo.bmp pak.zip icons music programs' CONTENT_DOC_DATA_FILES=' *.pdf' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/runic games/torchlight' APP_MAIN_EXE='torchlight.exe' APP_MAIN_ICON='torchlight.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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-torchlight-2.sh0000755000000000000000000001001714471751340014465 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Torchlight 2 ### script_version=20240718.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='torchlight-2' GAME_NAME='Torchlight Ⅱ' ARCHIVE_BASE_GOG_0_NAME='gog_torchlight_2_2.0.0.2.sh' ARCHIVE_BASE_GOG_0_MD5='e107f6d4c6d4cecea37ade420a8d4892' ARCHIVE_BASE_GOG_0_SIZE='1673501' ARCHIVE_BASE_GOG_0_VERSION='1.25.9.7-gog2.0.0.2' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/torchlight_ii' ARCHIVE_BASE_HUMBLE_0_NAME='Torchlight2-linux-2015-04-01.sh' ARCHIVE_BASE_HUMBLE_0_MD5='730a5d08c8f1cd4a65afbc0ca631d85c' ARCHIVE_BASE_HUMBLE_0_SIZE='1672909' ARCHIVE_BASE_HUMBLE_0_VERSION='1.25.2.4-humble150402' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/torchlight-ii' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_LIBS_BIN_FILES=' libCEGUIBase.so.1 libCEGUIExpatParser.so libCEGUIFalagardWRBase.so libCEGUIFreeImageImageCodec.so libfmodex.so libOgreMain.so.1 Plugin_OctreeSceneManager.so RenderSystem_GL.so' CONTENT_LIBS_BIN64_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib64" CONTENT_LIBS_BIN64_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86_64/lib64" CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_LIBS_BIN32_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib" CONTENT_LIBS_BIN32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86/lib" CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_GAME_BIN64_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86_64" CONTENT_GAME_BIN64_FILES=' Torchlight2.bin.x86_64 ModLauncher.bin.x86_64' CONTENT_GAME_BIN32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86" CONTENT_GAME_BIN32_FILES=' Torchlight2.bin.x86 ModLauncher.bin.x86' CONTENT_GAME_DATA_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/noarch" CONTENT_GAME_DATA_FILES=' icons movies music PAKS porting programs *.bmp *.cfg *.png' CONTENT_DOC_DATA_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/noarch" CONTENT_DOC_DATA_FILES=' licenses' APP_MAIN_EXE_BIN64='Torchlight2.bin.x86_64' APP_MAIN_EXE_BIN32='Torchlight2.bin.x86' APP_MAIN_ICON='Delvers.png' APP_MAIN_ICON_HUMBLE='noarch/Delvers.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 libexpat.so.1 libfontconfig.so.1 libfreeimage.so.3 libfreetype.so.6 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libICE.so.6 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libSM.so.6 libstdc++.so.6 libuuid.so.1 libX11.so.6 libXext.so.6 libXft.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 . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN32')" ## Add required execution bit on extra binaries. chmod 755 'ModLauncher.bin.x86' ) ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN64')" ## Add required execution bit on extra binaries. chmod 755 'ModLauncher.bin.x86_64' ) # 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-torment-tides-of-numenera.sh0000755000000000000000000001100214471751340017162 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Torment: Tides of Numenera ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='torment-tides-of-numenera' GAME_NAME='Torment: Tides of Numenera' ARCHIVE_BASE_0_NAME='gog_torment_tides_of_numenera_2.3.0.4.sh' ARCHIVE_BASE_0_MD5='839337b42a1618f3b445f363eca210d3' ARCHIVE_BASE_0_SIZE='9300000' ARCHIVE_BASE_0_VERSION='1.1.0-gog2.3.0.4' ARCHIVE_BASE_0_URL='https://www.gog.com/game/torment_tides_of_numenera' UNITY3D_NAME='TidesOfNumenera' UNITY3D_PLUGINS=' libAkFlanger.so libAkGuitarDistortion.so libAkHarmonizer.so libAkPitchShifter.so libAkSoundEngine.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_DATA_AUDIO_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/Audio" CONTENT_GAME_DATA_RESOURCES_FILES=" ${UNITY3D_NAME}_Data/resources.assets ${UNITY3D_NAME}_Data/resources.assets.resS" PACKAGES_LIST=' PKG_BIN PKG_DATA_AUDIO PKG_DATA_RESOURCES PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_AUDIO_ID="${PKG_DATA_ID}-audio" PKG_DATA_AUDIO_DESCRIPTION="$PKG_DATA_DESCRIPTION - audio" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_AUDIO_ID" ## Ensure smooth upgrades from packages generated with pre-20231020.1 game scripts. PKG_DATA_AUDIO_PROVIDES="${PKG_DATA_AUDIO_PROVIDES:-} torment-tides-of-numenera-audio" PKG_DATA_RESOURCES_ID="${PKG_DATA_ID}-resources" PKG_DATA_RESOURCES_DESCRIPTION="$PKG_DATA_DESCRIPTION - resources" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_RESOURCES_ID" ## Ensure smooth upgrades from packages generated with pre-20231020.1 game scripts. PKG_DATA_RESOURCES_PROVIDES="${PKG_DATA_RESOURCES_PROVIDES:-} torment-tides-of-numenera-resources" PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' # Include a workaround for the quest-breaking Anechoic Lazaret bugs # cf. https://steamcommunity.com/app/272270/discussions/1/1473096694453357831/?ctp=15#c1708438376918556245 SCRIPT_DEPS="${SCRIPT_DEPS:-} sed unix2dos" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Include a workaround for the quest-breaking Anechoic Lazaret bugs ## cf. https://steamcommunity.com/app/272270/discussions/1/1473096694453357831/?ctp=15#c1708438376918556245 conversation_file="$(unity3d_name)_Data/StreamingAssets/data/conversations/a_sagus/a2623_damaged_peerless_drone.conversation" sed_pattern=' ' sed_replacement=' \n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' false\n' sed_replacement="$sed_replacement"' Void SetGlobalValue(String, Int32)\n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' Quest_AnechoicLazaret_DefeatedDrones\n' sed_replacement="$sed_replacement"' 1\n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' ' sed_expression="1010s#${sed_pattern}#${sed_replacement}#" sed --in-place --expression="$sed_expression" "$conversation_file" unix2dos --quiet "$conversation_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-total-overdose.sh0000755000000000000000000000351014471751340015126 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Total Overdose ### script_version=20240624.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='total-overdose' GAME_NAME='Total Overdose' ARCHIVE_BASE_0_NAME='setup_total_overdose_1.00_(18925).exe' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_MD5='df9f6750e5f12fd83ee775365dfd9637' ARCHIVE_BASE_0_SIZE='1700000' ARCHIVE_BASE_0_VERSION='1.00-gog18925' ARCHIVE_BASE_0_URL='https://www.gog.com/game/total_overdose_a_gunslingers_tale_in_mexico' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' tod.exe *.dll' CONTENT_GAME_DATA_FILES=' *.dpc *.naz' CONTENT_DOC_DATA_FILES=' *.doc *.docx *.pdf' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Total Overdose' APP_MAIN_EXE='tod.exe' APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=101' 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 . "$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-transistor.sh0000755000000000000000000000670614471751340014401 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Transistor ### script_version=20240718.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='transistor' GAME_NAME='Transistor' ARCHIVE_BASE_2_NAME='transistor_1_50440_8123_23365.sh' ARCHIVE_BASE_2_MD5='dc89c175267dc1a1f3434a9d4f903cce' ARCHIVE_BASE_2_SIZE='3580037' ARCHIVE_BASE_2_VERSION='1.50440.8123-gog23365' ARCHIVE_BASE_2_URL='https://www.gog.com/game/transistor' ARCHIVE_BASE_1_NAME='transistor_en_v1_50423_21516.sh' ARCHIVE_BASE_1_MD5='52d0df1d959b333b17ede106f8e53062' ARCHIVE_BASE_1_SIZE='3600000' ARCHIVE_BASE_1_VERSION='1.50423-gog21516' ARCHIVE_BASE_0_NAME='gog_transistor_2.0.0.3.sh' ARCHIVE_BASE_0_MD5='53dbaf643471f3b8494548261584dd13' ARCHIVE_BASE_0_SIZE='3200000' ARCHIVE_BASE_0_VERSION='1.20140310-gog2.0.0.3' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_FILES=' libBink.so libFModPlugins.so libfmod.so.4 libfmodstudio.so.4 liblua52.so' CONTENT_LIBS_LIBS64_PATH="${CONTENT_PATH_DEFAULT}/lib64" CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_LIBS32_PATH="${CONTENT_PATH_DEFAULT}/lib" CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_MAIN_FILES=' Content monoconfig monomachineconfig Transistor.exe Transistor.exe.config Engine.dll Engine.dll.config Engine.SDL2.dll Engine.SDL2.dll.config HostessProtocol.dll KeraLua.dll MonoGame.Framework.SDL2.dll NLua.dll SDL2-CS.dll SDL2-CS.dll.config Newtonsoft.Json.dll Newtonsoft.Json.pdb Newtonsoft.Json.xml *.bmp *.cfg *.pdb *.xml *.txt' CONTENT_DOC_MAIN_FILES=' Linux.README' ## TODO: Check why a regular prefix can not be used. APP_MAIN_PREFIX_TYPE='none' APP_MAIN_EXE='Transistor.exe' APP_MAIN_ICON='Transistor.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libGL.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.Design.dll System.Drawing.dll System.Management.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Transactions.dll System.Xml.dll System.Xml.Linq.dll' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6' PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # 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 rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-tropico.sh0000755000000000000000000001242614471751340013644 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Tropico games: # - Tropico 1 # - Tropico 2 ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID_TROPICO1='tropico-1' GAME_NAME_TROPICO1='Tropico' GAME_ID_TROPICO2='tropico-2' GAME_NAME_TROPICO2='Tropico 2: Pirate Cove' # Archives ## Tropico 1 ARCHIVE_BASE_TROPICO1_EN_0_NAME='setup_tropico_2.1.0.14.exe' ARCHIVE_BASE_TROPICO1_EN_0_MD5='1bd761bc4a40a42a9caeb41c70d46465' ARCHIVE_BASE_TROPICO1_EN_0_TYPE='innosetup' ARCHIVE_BASE_TROPICO1_EN_0_SIZE='1400000' ARCHIVE_BASE_TROPICO1_EN_0_VERSION='1.5.3-gog2.1.0.14' ARCHIVE_BASE_TROPICO1_EN_0_URL='https://www.gog.com/game/tropico_reloaded' ARCHIVE_BASE_TROPICO1_FR_0_NAME='setup_tropico_french_2.1.0.14.exe' ARCHIVE_BASE_TROPICO1_FR_0_MD5='aad4ea5a6fe2b2c2f347cfa7aae058b3' ARCHIVE_BASE_TROPICO1_FR_0_TYPE='innosetup' ARCHIVE_BASE_TROPICO1_FR_0_SIZE='1400000' ARCHIVE_BASE_TROPICO1_FR_0_VERSION='1.5.3-gog2.1.0.14' ARCHIVE_BASE_TROPICO1_FR_0_URL='https://www.gog.com/game/tropico_reloaded' ## Tropico 2 ARCHIVE_BASE_TROPICO2_EN_0_NAME='setup_tropico2_2.1.0.14.exe' ARCHIVE_BASE_TROPICO2_EN_0_MD5='59a41778988f4b0a45d144f29187ffd8' ARCHIVE_BASE_TROPICO2_EN_0_TYPE='innosetup' ARCHIVE_BASE_TROPICO2_EN_0_SIZE='1900000' ARCHIVE_BASE_TROPICO2_EN_0_VERSION='1.20-gog2.1.0.14' ARCHIVE_BASE_TROPICO2_EN_0_URL='https://www.gog.com/game/tropico_reloaded' ARCHIVE_BASE_TROPICO2_FR_0_NAME='setup_tropico2_french_2.1.0.14.exe' ARCHIVE_BASE_TROPICO2_FR_0_MD5='e9cb36d88a03fd65b7152c815f05a7cc' ARCHIVE_BASE_TROPICO2_FR_0_TYPE='innosetup' ARCHIVE_BASE_TROPICO2_FR_0_SIZE='1900000' ARCHIVE_BASE_TROPICO2_FR_0_VERSION='1.20-gog2.1.0.14' ARCHIVE_BASE_TROPICO2_FR_0_URL='https://www.gog.com/game/tropico_reloaded' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' *.asi *.dll *.exe *.ini' CONTENT_GAME_L10N_FILES=' maps data/soun.{} data/text.{} data2/*.cfg data2/*.lng data2/*.txt data2/x1.dap data2/x2.dap movies/*.txt movies/campaigntoexit.bik movies/desktooutside.bik movies/s_f2o.bik movies/s_m2o.bik movies/s_s2o.bik' CONTENT_GAME_DATA_FILES=' data data2 movies voices' CONTENT_DOC_L10N_FILES=' *.doc *.pdf *.rtf *.txt' USER_PERSISTENT_DIRECTORIES=' campaign games maps save' USER_PERSISTENT_FILES=' *.ini *.cfg *.dat' WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE_TROPICO1='tropico.exe' APP_MAIN_EXE_TROPICO2='tropico2.exe' # Packages PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_DESCRIPTION='data' ## Tropico 1 PKG_L10N_BASE_ID_TROPICO1="${GAME_ID_TROPICO1}-l10n" PKG_L10N_ID_TROPICO1_EN="${PKG_L10N_BASE_ID_TROPICO1}-en" PKG_L10N_ID_TROPICO1_FR="${PKG_L10N_BASE_ID_TROPICO1}-fr" PKG_L10N_PROVIDES_TROPICO1=" $PKG_L10N_BASE_ID_TROPICO1" PKG_L10N_DESCRIPTION_TROPICO1_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_TROPICO1_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_TROPICO1="${GAME_ID_TROPICO1}-data" ## Tropico 2 PKG_L10N_BASE_ID_TROPICO2="${GAME_ID_TROPICO2}-l10n" PKG_L10N_ID_TROPICO2_EN="${PKG_L10N_BASE_ID_TROPICO2}-en" PKG_L10N_ID_TROPICO2_FR="${PKG_L10N_BASE_ID_TROPICO2}-fr" PKG_L10N_PROVIDES_TROPICO2=" $PKG_L10N_BASE_ID_TROPICO2" PKG_L10N_DESCRIPTION_TROPICO2_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_TROPICO2_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_TROPICO2="${GAME_ID_TROPICO2}-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 . "$PLAYIT_LIB2" # Run extra depencies check based on source archive ## Tropico 2 - Use software rendering by default. case "$(current_archive)" in ('ARCHIVE_BASE_TROPICO2_'*) SCRIPT_DEPS="${SCRIPT_DEPS:-} dos2unix" check_deps ;; esac # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Tropico 1 - Disable censorship in French version. case "$(current_archive)" in ('ARCHIVE_BASE_TROPICO1_FR_'*) localization_file='data2/tropico.lng' sed_expression='s/^\( \+406 .\+militaire\) \(.\+\)/\1 \2/' ## Force standard locale to avoid choking on some characters. LANG=C sed --in-place --expression="$sed_expression" "$localization_file" ;; esac ## Tropico 2 - Use software rendering by default. case "$(current_archive)" in ('ARCHIVE_BASE_TROPICO2_'*) ini_file='tropico2.ini' ini_field='SoftwareDevice' ini_value='1' sed_expression="s/^${ini_field}=.*$/${ini_field}=${ini_value}/" unix2dos --quiet "$ini_file" sed --in-place --expression="$sed_expression" "$ini_file" dos2unix --quiet "$ini_file" ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-tyranny-expansions.sh0000755000000000000000000005242614471751340016062 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Tyranny expansions: # - Coat of Arms # - Portrait Pack # - Tales from the Tiers # - Bastard's Wound ### script_version=20240718.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='tyranny' GAME_NAME='Tyranny' EXPANSION_ID_COATOFARMS='coat-of-arms' EXPANSION_NAME_COATOFARMS='Coat of Arms' EXPANSION_ID_PORTRAIT='portrait-pack' EXPANSION_NAME_PORTRAIT='Portrait Pack' EXPANSION_ID_TALES='tales-from-the-tiers' EXPANSION_NAME_TALES='Tales from the Tiers' EXPANSION_ID_WOUND='bastards-wound' EXPANSION_NAME_WOUND='Bastardʼs Wound' # Archives ## Coat of Arms ARCHIVE_BASE_COATOFARMS_0_NAME='tyranny_coat_of_arms_dlc_en_1_0_14773.sh' ARCHIVE_BASE_COATOFARMS_0_MD5='ba1403ce1f2535a00ae137c19204459f' ARCHIVE_BASE_COATOFARMS_0_SIZE='1342' ARCHIVE_BASE_COATOFARMS_0_VERSION='1.0-gog14773' ARCHIVE_BASE_COATOFARMS_0_URL='https://www.gog.com/game/tyranny_overlord_edition_upgrade' ## Portrait Pack ARCHIVE_BASE_PORTRAIT_0_NAME='tyranny_portrait_pack_dlc_en_1_0_14773.sh' ARCHIVE_BASE_PORTRAIT_0_MD5='165e1cf02119a0b2ddb4d8bfa8b6819d' ARCHIVE_BASE_PORTRAIT_0_SIZE='4150' ARCHIVE_BASE_PORTRAIT_0_VERSION='1.0-gog14773' ARCHIVE_BASE_PORTRAIT_0_URL='https://www.gog.com/game/tyranny_portrait_pack' ## Tales from the Tiers ARCHIVE_BASE_TALES_0_NAME='tyranny_tales_from_the_tiers_dlc_en_1_2_1_0158_15398.sh' ARCHIVE_BASE_TALES_0_MD5='08676e535375b162e2fa32b1bc4488a3' ARCHIVE_BASE_TALES_0_SIZE='4386' ARCHIVE_BASE_TALES_0_VERSION='1.2.1.0158-gog15398' ARCHIVE_BASE_TALES_0_URL='https://www.gog.com/game/tyranny_tales_from_the_tiers' ## Bastard's Wound ARCHIVE_BASE_WOUND_0_NAME='tyranny_bastard_s_wound_dlc_en_1_2_1_0158_15398.sh' ARCHIVE_BASE_WOUND_0_MD5='dbd2b51a410db2357b2e144f44139c19' ARCHIVE_BASE_WOUND_0_SIZE='1159755' ARCHIVE_BASE_WOUND_0_VERSION='1.2.1.0158-gog15398' ARCHIVE_BASE_WOUND_0_URL='https://www.gog.com/game/tyranny_bastards_wound' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' Tyranny_Data' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Bastard's Wound - Delete duplicated files already provided by the base game. case "$(current_archive)" in ('ARCHIVE_BASE_WOUND_'*) rm \ 'Tyranny_Data/bundles/st_vx1_ar_0901_bastardswound_ent_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0902_bastardswound_ent_02.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0903_bastardswound_central_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0904_bastardswound_farm_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0905_bastardswound_water_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0906_bastardswound_interior_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0907_bastardswound_interior_02.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0908_bastardswound_oldwall_int_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0909_bastardswound_oldwall_int_02.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0910_bastardswound_oldwall_int_03.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0911_southhaven.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0912_burnedvillage.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1001_merchant_cart.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1002_wilderness_camp.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1003_torn_strand.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1004_wilderness_home.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1005_burned_home.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1006_military_fort.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1007_merchant_nocart.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1101_sentinel_stand_outskirts.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1102_edgering_ruins_revisit.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1103_workshop.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1201_berry_field.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1202_lantry_house.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1203_lantry_house_int.unity3d' \ 'Tyranny_Data/bundles/vx1_characters.unity3d' \ 'Tyranny_Data/bundles/vx1_items.unity3d' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_bs_unbroken_soldier.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_catorius.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_essa.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_krokus.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_krokus_patrol.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_merchant_contact.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_unbroken_captain.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_verse.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_msv_neratintro.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_11_barik/vx1_11_cv_barik.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_11_barik/vx1_11_cv_carelessspark.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_11_barik/vx1_11_cv_lohara.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_11_barik/vx1_11_cv_lycentia.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_11_barik/vx1_11_cv_zdenya.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_ambush.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_berriesfound.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_berrytrip_chiasmus.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_berrytrip_lexeme.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_berrytrip_nerat.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_berrytrip_roundtwo.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_chronicle_farm.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_chronicle_oldwalls_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_chronicle_oldwalls_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_chronicle_oldwalls_03.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_lantryact2complete.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_lantryact3start.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_lantrylexeme.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_lantryshatteredbastionchat.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_questsend.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_stashedchronicle.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_poi_lantryshouse.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_00_cv_act3_companion_interjection.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_burnedvillage_hordeargue.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_companion_interjections.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_denizens_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_denizens_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_farmhands.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_fatebinder_leaving.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_gatekeeper_beast01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_gatekeeper_beast02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_hyrax.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_intro_runningaway.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_lower_horde_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_lower_horde_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_lullaby_adds_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_lullaby_adds_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_lullaby_adds_03.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_mercenaries_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_mercenaries_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_partii_sleepless.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_refugee_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_refugee_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_sleepless.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_southhaven_playercaught.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_southhaven_villagers.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_upper_chanter.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_upper_fury.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_woundkin.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_woundkin_cubs.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_argaen.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_basila.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_beast_gatekeeper.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_callia_stabbed.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_capteron.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_cassandra.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_contusion.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_crasscallia.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_cyril.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_ebstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_eisly.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_elyane.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_erasmus.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_execution_start.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_confrontation.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_decision.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_leader_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_leader_player.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_leader_reeftalon.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_leader_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_gloomofdawn.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_gwyneth.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_hyacine.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_hyrax.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_insipidmoniker.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_killsinshadow_mural_epiphany.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_kleitos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_lexeme.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_lohara.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_lullaby_fight_intro.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_lunet.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_melitta.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_mell.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_merchant_anaxios.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_merchant_eirena.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_merchant_elegy.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_merchant_neread.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_merchant_pelagia.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_needletoe.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_needletoe_fledreaction.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_nikodemus.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oceansfury.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_barrier.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_dead_woundkin.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_huntingparty_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_huntingparty_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mercenaries_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mercenaries_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_fractured_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_fractured_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_fractured_03.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_hollow_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_hollow_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_hollow_03.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_03.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_04.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_05.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_06.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_07.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_08.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_phoibe.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_ragwort.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_ratvek_the_butcher.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_reeftalon.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_reeftalon_firstmeeting.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_rostomlenk.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_sirin_cairnaltar.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_sirin_foundparchment.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_sirin_haseverything.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_sirin_librarian.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_skinner.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_telesophia.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_tonves.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_tycho.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_ulantis.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_warbler.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_msv_lexemeintromissive.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_beaconpuzzlecomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_bloodfarmcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_farmcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_friendlylullabycomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_huntingpartycomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_lullabybattlecomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_muralcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_oldwallsfloodingcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_sirin_entrance.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_sirin_shatteredbastion.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_sleeplesscomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_teleporterintocomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_wardens_key.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_wardens_key_used.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundbeastdencomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundcentralcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundfirstarrival.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundjasposcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundslaughtercomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundslaughterkeystone.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundwagstaffcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_tree_contusion.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_tree_needletoe.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_tree_ragwort.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_bs_burnedvillage_hordeargue.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_debug_cv_testiclees.conversation' \ 'Tyranny_Data/data/design/quests/vx1_10_verse/vx1_10_qst_verse_act2.quest' \ 'Tyranny_Data/data/design/quests/vx1_10_verse/vx1_10_qst_verse_act3.quest' \ 'Tyranny_Data/data/design/quests/vx1_11_barik/vx1_11_qst_barik_act2.quest' \ 'Tyranny_Data/data/design/quests/vx1_11_barik/vx1_11_qst_barik_act3.quest' \ 'Tyranny_Data/data/design/quests/vx1_12_lantry/vx1_12_qst_lantry_act2.quest' \ 'Tyranny_Data/data/design/quests/vx1_12_lantry/vx1_12_qst_lantry_act3.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_bloodofthebeast.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_bonesofthebeast.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_cleansingthewound.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_fatebindersjudgement.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_gamblersruin.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_hiddentruths.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_historyoftheoldwallspartii.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_historyoftheoldwallsparti.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_knappingonthejob.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_midnightwanderer.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_theoneswhogotaway.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_tidetogether.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_waterintoxication.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_whatliesbeyond.quest' ;; esac ) # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-tyranny.sh0000755000000000000000000000502514471751340013666 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Tyranny ### script_version=20240718.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='tyranny' GAME_NAME='Tyranny' ARCHIVE_BASE_0_NAME='tyranny_v1_2_1_160_v2_25169.sh' ARCHIVE_BASE_0_MD5='72bdb7c9f6966ac6f1ccfbbad9fb29e6' ARCHIVE_BASE_0_SIZE='15136872' ARCHIVE_BASE_0_VERSION='1.2.1.0160-gog25169' ARCHIVE_BASE_0_URL='https://www.gog.com/game/tyranny_commander_edition' ARCHIVE_BASE_1_NAME='tyranny_en_1_2_1_0158_15398.sh' ARCHIVE_BASE_1_MD5='664cba00a861611fb155f65b8d83d9e9' ARCHIVE_BASE_1_SIZE='15000000' ARCHIVE_BASE_1_VERSION='1.2.1.0158-gog15398' UNITY3D_NAME='Tyranny' UNITY3D_PLUGINS=' libpops_api.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_AREAS_FILES=" ${UNITY3D_NAME}_Data/bundles/st_ar_*" PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_AREAS PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_AREAS 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 libresolv.so.2 librt.so.1 libstdc++.so.6 libuuid.so.1 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_AREAS_ID="${GAME_ID}-areas" PKG_AREAS_DESCRIPTION='areas' 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 . "$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-unreal-tournament-2004.sh0000755000000000000000000001026514471751340016227 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Unreal Tournament 2004 ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='unreal-tournament-2004' GAME_NAME='Unreal Tournament 2004' # Archives ## Unreal Tournament 2004 (game installer) ## This game is no longer available for sale from gog.com since 2022-12-23. ARCHIVE_BASE_0_NAME='setup_unreal_tournament_2004_1.0_(18947).exe' ARCHIVE_BASE_0_MD5='243376d34413b830324c5879ac2f9cfd' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ## Do not convert file paths to lowercase. ARCHIVE_BASE_0_EXTRACTOR_OPTIONS='--progress=1 --silent' ARCHIVE_BASE_0_PART1_NAME='setup_unreal_tournament_2004_1.0_(18947)-1.bin' ARCHIVE_BASE_0_PART1_MD5='a211e2a6feed7334bb3b7deef6b858b5' ARCHIVE_BASE_0_SIZE='6000000' ARCHIVE_BASE_0_VERSION='3369-gog18947' ## Native Linux engine ARCHIVE_REQUIRED_ENGINE_0_NAME='ut2004-lnxpatch3369-2.tar.bz2' ARCHIVE_REQUIRED_ENGINE_0_MD5='0fa447e05fe5a38e0e32adf171be405e' ARCHIVE_REQUIRED_ENGINE_0_URL='https://liandri.beyondunreal.com/Unreal_Tournament_2004#Essential_Files' # Archives content ## Unreal Tournament 2004 (game installer) CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' System ut2004.txt' CONTENT_GAME0_BIN_PATH="${CONTENT_PATH_DEFAULT}/__support/app" CONTENT_GAME0_BIN_FILES=' *.ini' CONTENT_GAME_DATA_FILES=' Animations ForceFeedback KarmaData Maps Music Sounds Speech StaticMeshes Textures Web' CONTENT_DOC0_DATA_PATH="${CONTENT_PATH_DEFAULT}/Help" CONTENT_DOC0_DATA_FILES=' *.txt' CONTENT_DOC1_DATA_PATH="${CONTENT_PATH_DEFAULT}/Manual" CONTENT_DOC1_DATA_FILES=' *.pdf' ## Native Linux engine CONTENT_GAME1_BIN_PATH='UT2004-Patch' CONTENT_GAME1_BIN_FILES=' System' CONTENT_GAME0_DATA_PATH='UT2004-Patch' CONTENT_GAME0_DATA_FILES=' Animations Speech Textures Web' CONTENT_DOC2_DATA_PATH='UT2004-Patch/Help' CONTENT_DOC2_DATA_FILES=' *.txt' APP_MAIN_EXE='System/ut2004-bin-linux-amd64' APP_MAIN_ICON='System/Unreal.ico' ## Run the game binary from its parent directory. APP_MAIN_PRERUN='# Run the game binary from its parent directory cd "$(dirname "$APP_EXE")" APP_EXE=$(basename "$APP_EXE") ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL-1.2.so.0 libstdc++.so.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 . "$PLAYIT_LIB2" # Check for the presence of required extra archives archive_initialize_required \ 'ARCHIVE_ENGINE' \ 'ARCHIVE_REQUIRED_ENGINE_0' # Create required links for some libraries library_path=$( set_current_package 'PKG_BIN' path_libraries_system ) APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') # Create required link for libSDL-1.2.so.0 ln --force --symbolic '${library_path}/libSDL-1.2.so.0' 'libSDL-1.2.so.0' # Create required link for openal.so ln --force --symbolic '${library_path}/libopenal.so.1' 'openal.so'" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Include required CD key. grep --before=1 --fixed-strings 'CDKey' 'goggame-1207658691.script' | \ sed --silent 's/\s*"valueData": "\(.*\)",/\1/p' > 'System/CDKey' ) archive_extraction 'ARCHIVE_ENGINE' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_ENGINE_BIN')" ## Delete unwanted 32-bit binaries. rm --force \ 'System/ucc-bin' \ 'System/ut2004-bin' ) # 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-unreal-tournament.sh0000755000000000000000000001130114471751340015634 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 Jacek Szafarkiewicz # SPDX-FileCopyrightText: © 2018 Phil Morrell set -o errexit ### # Unreal Tournament ### script_version=20240530.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='unreal-tournament' GAME_NAME='Unreal Tournament' # Archives ## Unreal Tournament (game installer) ## This game is no longer available for sale from gog.com since 2022-12-23. ARCHIVE_BASE_0_NAME='setup_ut_goty_2.0.0.5.exe' ARCHIVE_BASE_0_MD5='0d25ec835648710a098aff7106187f38' ## Do not convert file paths to lowercase. ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_SIZE='640000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.5' ## Native Linux engine ARCHIVE_REQUIRED_ENGINE_1_NAME='OldUnreal-UTPatch469d-Linux-amd64.tar.bz2' ARCHIVE_REQUIRED_ENGINE_1_MD5='d0e133165bf1630288583e52a40b90db' ARCHIVE_REQUIRED_ENGINE_1_URL='https://github.com/OldUnreal/UnrealTournamentPatches/releases/tag/v469d' ARCHIVE_REQUIRED_ENGINE_0_NAME='OldUnreal-UTPatch469c-Linux-amd64.tar.bz2' ARCHIVE_REQUIRED_ENGINE_0_MD5='6cd032e70460b1393d9514ffe81dcb1a' ARCHIVE_REQUIRED_ENGINE_0_URL='https://github.com/OldUnreal/UnrealTournamentPatches/releases/tag/v469c' # Archives content ## Unreal Tournament (game installer) CONTENT_PATH_DEFAULT='app' CONTENT_GAME_DATA_FILES=' Maps Music Sounds Textures' CONTENT_DOC_DATA_FILES=' Help Manual' ## Native Linux engine CONTENT_PATH_DEFAULT_ENGINE='.' CONTENT_LIBS_BIN_PATH="${CONTENT_PATH_DEFAULT_ENGINE}/System64" CONTENT_LIBS_BIN_FILES=' ALAudio.so Cluster.so Core.so Editor.so Engine.so Fire.so IpDrv.so libfmod.so.13 OpenGLDrv.so Render.so SDLDrv.so udemo.so UWeb.so XOpenGLDrv.so' CONTENT_GAME_BIN_PATH="$CONTENT_PATH_DEFAULT_ENGINE" CONTENT_GAME_BIN_FILES=' System System64' CONTENT_GAME0_DATA_PATH="$CONTENT_PATH_DEFAULT_ENGINE" CONTENT_GAME0_DATA_FILES=' SystemLocalized Textures Web' CONTENT_DOC0_DATA_PATH="$CONTENT_PATH_DEFAULT_ENGINE" CONTENT_DOC0_DATA_FILES=' Help LICENSE.md' APP_MAIN_EXE='System64/ut-bin-amd64' APP_MAIN_ICON='System/Unreal.ico' ## Run the game binary from its parent directory. APP_MAIN_PRERUN='# Run the game binary from its parent directory cd "$(dirname "$APP_EXE")" APP_EXE=$(basename "$APP_EXE") ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libmpg123.so.0 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libxmp.so.4' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Chek for the presence of required extra archives archive_initialize_required \ 'ARCHIVE_ENGINE' \ 'ARCHIVE_REQUIRED_ENGINE_1' \ 'ARCHIVE_REQUIRED_ENGINE_0' ## Update the version string based on the engine build. current_archive=$(current_archive) engine_version=$(archive_name 'ARCHIVE_ENGINE' | sed 's/OldUnreal-UTPatch\([a-z0-9]\+\)-Linux-amd64.tar.bz2/\1/') archive_version_updated=$(get_value "${current_archive}_VERSION" | sed "s/^1.0-/${engine_version}-/") export "${current_archive}_VERSION=${archive_version_updated}" # The game engine looks for libmpg123.so instead of libmpg123.so.0 case "$(option_value 'package')" in ('arch') # Arch Linux already provides the unversioned .so ;; ('gentoo'|'egentoo') # Gentoo already provides the unversioned .so ;; ('deb') library_source="$(path_libraries_system)/libmpg123.so.0" library_destination="$(package_path 'PKG_BIN')$(path_libraries)/libmpg123.so" mkdir --parents "$(dirname "$library_destination")" ln --symbolic "$library_source" "$library_destination" ;; esac # Extract game data archive_extraction_default archive_extraction 'ARCHIVE_ENGINE' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN')" # Drop some shipped libraries rm \ 'System64/libmpg123.so' \ 'System64/libopenal.so.1' \ 'System64/libSDL2-2.0.so.0' \ 'System64/libxmp.so.4' ) # 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-vampire-the-masquerade-bloodlines.sh0000755000000000000000000002730014471751340020660 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 Mopi set -o errexit ### # Vampire: The Masquerade - Bloodlines ### script_version=20240712.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='vampire-the-masquerade-bloodlines' GAME_NAME='Vampire: The Masquerade - Bloodlines' ## The DotEmu store closed down in 2017, since then they only advertise Steam. ARCHIVE_BASE_DOTEMU_0_NAME='vampire_the_masquerade_bloodlines_v1.2.exe' ARCHIVE_BASE_DOTEMU_0_MD5='8981da5fa644475583b2888a67fdd741' ARCHIVE_BASE_DOTEMU_0_EXTRACTOR='unar' ARCHIVE_BASE_DOTEMU_0_SIZE='5013863' ARCHIVE_BASE_DOTEMU_0_VERSION='1.2-dotemu1' ARCHIVE_BASE_GOG_EN_5_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.511.410.2)_(68368).exe' ARCHIVE_BASE_GOG_EN_5_MD5='b2c1eff2640a4b7c52922a3c1ce3f36b' ARCHIVE_BASE_GOG_EN_5_TYPE='innosetup' ARCHIVE_BASE_GOG_EN_5_PART1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.511.410.2)_(68368)-1.bin' ARCHIVE_BASE_GOG_EN_5_PART1_MD5='96b585f441224ab5f8658815b74a0763' ARCHIVE_BASE_GOG_EN_5_SIZE='4209268' ARCHIVE_BASE_GOG_EN_5_VERSION='1.2-gog68368' ARCHIVE_BASE_GOG_EN_5_URL='https://www.gog.com/game/vampire_the_masquerade_bloodlines' ARCHIVE_BASE_GOG_FR_5_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.511.410.2)_(french)_(68368).exe' ARCHIVE_BASE_GOG_FR_5_MD5='ea6cec86b0eb1986164eefb6ddf458ef' ARCHIVE_BASE_GOG_FR_5_TYPE='innosetup' ARCHIVE_BASE_GOG_FR_5_PART1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.511.410.2)_(french)_(68368)-1.bin' ARCHIVE_BASE_GOG_FR_5_PART1_MD5='01194704a7c9b1e7c67e4743bcdb81f7' ARCHIVE_BASE_GOG_FR_5_SIZE='4242068' ARCHIVE_BASE_GOG_FR_5_VERSION='1.2-gog68368' ARCHIVE_BASE_GOG_FR_5_URL='https://www.gog.com/game/vampire_the_masquerade_bloodlines' ARCHIVE_BASE_GOG_EN_4_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.111.010.2)_hotfix_(55110).exe' ARCHIVE_BASE_GOG_EN_4_MD5='9a1c0824945008a3d520103002479fbc' ARCHIVE_BASE_GOG_EN_4_TYPE='innosetup' ARCHIVE_BASE_GOG_EN_4_PART1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.111.010.2)_hotfix_(55110)-1.bin' ARCHIVE_BASE_GOG_EN_4_PART1_MD5='50cbbf0ad7063e089ba4663cb599b7ac' ARCHIVE_BASE_GOG_EN_4_SIZE='4300000' ARCHIVE_BASE_GOG_EN_4_VERSION='1.2-gog55110' ARCHIVE_BASE_GOG_FR_4_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.111.010.2)_hotfix_(french)_(55110).exe' ARCHIVE_BASE_GOG_FR_4_MD5='2cf2aa09a1bfbd3151ded2457037f2ab' ARCHIVE_BASE_GOG_FR_4_TYPE='innosetup' ARCHIVE_BASE_GOG_FR_4_PART1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.111.010.2)_hotfix_(french)_(55110)-1.bin' ARCHIVE_BASE_GOG_FR_4_PART1_MD5='3925827a5aa7dfcd53609130ef128a18' ARCHIVE_BASE_GOG_FR_4_SIZE='4300000' ARCHIVE_BASE_GOG_FR_4_VERSION='1.2-gog55110' ARCHIVE_BASE_GOG_EN_3_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.111.010.2)_(54206).exe' ARCHIVE_BASE_GOG_EN_3_MD5='97cc63738b2eab02140c38883d82fa8b' ARCHIVE_BASE_GOG_EN_3_TYPE='innosetup' ARCHIVE_BASE_GOG_EN_3_PART1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.111.010.2)_(54206)-1.bin' ARCHIVE_BASE_GOG_EN_3_PART1_MD5='5024eb1ddef8ec13c2ed433d399193cf' ARCHIVE_BASE_GOG_EN_3_SIZE='4300000' ARCHIVE_BASE_GOG_EN_3_VERSION='1.2-gog54206' ARCHIVE_BASE_GOG_FR_3_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.111.010.2)_(french)_(54206).exe' ARCHIVE_BASE_GOG_FR_3_MD5='80bb9fab0f97230989b5f15aa5118f51' ARCHIVE_BASE_GOG_FR_3_TYPE='innosetup' ARCHIVE_BASE_GOG_FR_3_PART1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.111.010.2)_(french)_(54206)-1.bin' ARCHIVE_BASE_GOG_FR_3_PART1_MD5='3624eb7399c9d260889ab245f9bd43b1' ARCHIVE_BASE_GOG_FR_3_SIZE='4300000' ARCHIVE_BASE_GOG_FR_3_VERSION='1.2-gog54206' ARCHIVE_BASE_GOG_EN_2_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_10.2)_(28160).exe' ARCHIVE_BASE_GOG_EN_2_MD5='8c1907871d2ded8afda77d5b570d5383' ARCHIVE_BASE_GOG_EN_2_TYPE='innosetup' ARCHIVE_BASE_GOG_EN_2_PART1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_10.2)_(28160)-1.bin' ARCHIVE_BASE_GOG_EN_2_PART1_MD5='a28edc25dc3c0f818673196852490628' ARCHIVE_BASE_GOG_EN_2_SIZE='4100000' ARCHIVE_BASE_GOG_EN_2_VERSION='1.2-gog28160' ARCHIVE_BASE_GOG_FR_2_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_10.2)_(french)_(28160).exe' ARCHIVE_BASE_GOG_FR_2_MD5='8877c5ab14363b249e72034fe5333921' ARCHIVE_BASE_GOG_FR_2_TYPE='innosetup' ARCHIVE_BASE_GOG_FR_2_PART1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_10.2)_(french)_(28160)-1.bin' ARCHIVE_BASE_GOG_FR_2_PART1_MD5='0dddbbcd2dee5474066b4863c56aa5f0' ARCHIVE_BASE_GOG_FR_2_SIZE='4200000' ARCHIVE_BASE_GOG_FR_2_VERSION='1.2-gog28160' ARCHIVE_BASE_GOG_EN_1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_10.0)_(22135).exe' ARCHIVE_BASE_GOG_EN_1_MD5='095771daf8fd1b26d34a099f182c8d4a' ARCHIVE_BASE_GOG_EN_1_TYPE='innosetup' ARCHIVE_BASE_GOG_EN_1_PART1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_10.0)_(22135)-1.bin' ARCHIVE_BASE_GOG_EN_1_PART1_MD5='ef8a3fe212da189d811fcf6bc70a1e40' ARCHIVE_BASE_GOG_EN_1_SIZE='4100000' ARCHIVE_BASE_GOG_EN_1_VERSION='1.2-gog22135' ARCHIVE_BASE_GOG_EN_0_NAME='setup_vtmb_1.2_(up_9.7_basic)_(11362).exe' ARCHIVE_BASE_GOG_EN_0_MD5='62b8db3b054595fb46bd8eaa5f8ae7bc' ARCHIVE_BASE_GOG_EN_0_TYPE='innosetup' ARCHIVE_BASE_GOG_EN_0_PART1_NAME='setup_vtmb_1.2_(up_9.7_basic)_(11362)-1.bin' ARCHIVE_BASE_GOG_EN_0_PART1_MD5='4177042d5a6e03026d52428e900e6137' ARCHIVE_BASE_GOG_EN_0_SIZE='4100000' ARCHIVE_BASE_GOG_EN_0_VERSION='1.2-gog11362' CONTENT_PATH_DEFAULT_DOTEMU='.' CONTENT_PATH_DEFAULT_GOG='.' CONTENT_PATH_DEFAULT_GOG_EN_0='app' CONTENT_GAME_BIN_FILES=' bin vampire/dlls vampire/cl_dlls vampire.exe vampire.exe.12 dbghelp.dll loader.dll' ## These paths are created at the "Extract game data" step. CONTENT_GAME_L10N_EN_PATH_DOTEMU='l10n-en' CONTENT_GAME_L10N_FR_PATH_DOTEMU='l10n-fr' CONTENT_GAME_L10N_FILES=' vampire/pack101.vpk vampire/pack103.vpk' CONTENT_GAME_L10N_EN_FILES="$CONTENT_GAME_L10N_FILES" CONTENT_GAME_L10N_FR_FILES="$CONTENT_GAME_L10N_FILES" CONTENT_GAME_DATA_FILES=' vampire/maps vampire/media vampire/pack000.vpk vampire/pack001.vpk vampire/pack002.vpk vampire/pack003.vpk vampire/pack004.vpk vampire/pack005.vpk vampire/pack006.vpk vampire/pack007.vpk vampire/pack008.vpk vampire/pack009.vpk vampire/pack010.vpk vampire/pack100.vpk vampire/pack102.vpk vampire/python vampire/resource vampire/sound vtmbup-loader.txt vtmbup-readme.txt *.dat *.mpg *.tth' ## These paths are created at the "Extract game data" step. CONTENT_DOC_L10N_EN_PATH_DOTEMU='l10n-en' CONTENT_DOC_L10N_FR_PATH_DOTEMU='l10n-fr' CONTENT_DOC_L10N_FILES=' docs *.pdf' CONTENT_DOC_L10N_EN_FILES="$CONTENT_DOC_L10N_FILES" CONTENT_DOC_L10N_FR_FILES="$CONTENT_DOC_L10N_FILES" USER_PERSISTENT_DIRECTORIES=' vampire/cfg vampire/maps/graphs vampire/python vampire/save' USER_PERSISTENT_FILES=' vampire/vidcfg.bin' WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='vampire.exe' ## Work around the deletion of zlib1.dll. APP_MAIN_PRERUN=' # Work around the deletion of zlib1.dll system_library="${WINEPREFIX}/drive_c/windows/system32/zlib1.dll" if [ ! -e "$system_library" ]; then cp "bin/zlib1.dll" "$system_library" fi ' ## Switch French keyboard layout to us-azerty to provide direct access to digits. ## TODO: Update this snippet to make it work on Wayland too. APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # Switch French keyboard layout to us-azerty to provide direct access to digits. # This is required to not get stuck when asked to type digits in-game. ## This works on X.org only, not on Wayland. if [ -z "${WAYLAND_DISPLAY:-}" ] && [ -n "${DISPLAY:-}" ] && command -v setxkbmap >/dev/null 2>&1; then KEYBOARD_RESTORE_VARIANT=0 KEYBOARD_LAYOUT=$(LANG=C setxkbmap -query | awk "/layout:/ {print \$2}") if [ "$KEYBOARD_LAYOUT" = "fr" ]; then KEYBOARD_VARIANT=$(LANG=C setxkbmap -query | awk "/variant:/ {print \$2}") if [ "$KEYBOARD_VARIANT" != "us-azerty" ]; then KEYBOARD_RESTORE_VARIANT=1 setxkbmap -variant us-azerty fi fi fi ' APP_MAIN_POSTRUN=' # Restore the keyboard variant, if it has previously been switched to us-azerty. ## This works on X.org only, not on Wayland. if [ -z "${WAYLAND_DISPLAY:-}" ] && [ -n "${DISPLAY:-}" ] && command -v setxkbmap >/dev/null 2>&1; then if [ $KEYBOARD_RESTORE_VARIANT -eq 1 ]; then setxkbmap -variant "$KEYBOARD_VARIANT" fi fi ' PACKAGES_LIST_DOTEMU=' PKG_BIN PKG_L10N_EN PKG_L10N_FR PKG_DATA' PACKAGES_LIST_GOG_EN=' PKG_BIN PKG_L10N_EN PKG_DATA' PACKAGES_LIST_GOG_FR=' PKG_BIN PKG_L10N_FR PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_EN_ID="${PKG_L10N_BASE_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_EN_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_FR_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_EN_ENSCRIPTION='English localization' PKG_L10N_FR_FRSCRIPTION='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # DotEmu archive - unzip is required to extract the content of inner archives case "$(current_archive)" in ('ARCHIVE_BASE_DOTEMU_'*) SCRIPT_DEPS="${SCRIPT_DEPS:-} unzip" check_deps ;; esac # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" case "$(current_archive)" in ('ARCHIVE_BASE_DOTEMU_'*) localized_paths=' Docs Vampire/pack101.vpk Vampire/pack103.vpk' localized_paths_en=" $localized_paths manual_en.pdf" localized_paths_fr=" $localized_paths Manual_fr.pdf" ARCHIVE_COMMON1_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/common1.zip" archive_extraction 'ARCHIVE_COMMON1' rm "$(archive_path 'ARCHIVE_COMMON1')" ARCHIVE_COMMON2_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/common2.zip" archive_extraction 'ARCHIVE_COMMON2' rm "$(archive_path 'ARCHIVE_COMMON2')" ARCHIVE_EN_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/en.zip" archive_extraction 'ARCHIVE_EN' rm "$(archive_path 'ARCHIVE_EN')" ## Localized paths are moved out of the way to prevent them from being overwritten. mkdir 'l10n-en' cp --link --parents --recursive $localized_paths_en 'l10n-en' rm --recursive $localized_paths ARCHIVE_FR_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/fr.zip" archive_extraction 'ARCHIVE_FR' rm "$(archive_path 'ARCHIVE_FR')" ## Localized paths are moved out of the way to prevent them from being overwritten. mkdir 'l10n-fr' cp --link --parents --recursive $localized_paths_fr 'l10n-fr' rm --recursive $localized_paths tolower . ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation case "$(current_archive)" in ('ARCHIVE_BASE_DOTEMU_'*) case "$(messages_language)" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_BIN' 'PKG_L10N_EN' 'PKG_DATA' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN' 'PKG_L10N_FR' 'PKG_DATA' ;; (*) print_instructions ;; esac # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-victor-vran-expansions.sh0000755000000000000000000000420314471751340016616 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Victor Vran expansions: # - Motörhead - Through the Ages # - Fractured Worlds ### script_version=20240719.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='victor-vran' GAME_NAME='Victor Vran' EXPANSION_ID_MOTORHEAD='motorhead-through-the-ages' EXPANSION_NAME_MOTORHEAD='Motörhead - Through the Ages' EXPANSION_ID_FRACTURED='fractured-worlds' EXPANSION_NAME_FRACTURED='Fractured Worlds' # Archives ## Motörhead - Through the Ages ARCHIVE_BASE_MOTORHEAD_0_NAME='victor_vran_mot_rhead_through_the_ages_2_07_20181005_24296.sh' ARCHIVE_BASE_MOTORHEAD_0_MD5='e84685034d2d90782a3ab7c83901bc11' ARCHIVE_BASE_MOTORHEAD_0_SIZE='868392' ARCHIVE_BASE_MOTORHEAD_0_VERSION='2.07.20181005-gog24296' ARCHIVE_BASE_MOTORHEAD_0_URL='https://www.gog.com/game/victor_vran_motorhead_through_the_ages' ## Fractured Worlds ARCHIVE_BASE_FRACTURED_0_NAME='victor_vran_fractured_worlds_2_07_20181005_24296.sh' ARCHIVE_BASE_FRACTURED_0_MD5='94a8bd9f2ca09e3c4e2547a0d5a7bc8c' ARCHIVE_BASE_FRACTURED_0_SIZE='213785' ARCHIVE_BASE_FRACTURED_0_VERSION='2.07.20181005-gog24296' ARCHIVE_BASE_FRACTURED_0_URL='https://www.gog.com/game/victor_vran_fractured_worlds' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' DLC' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-victor-vran.sh0000755000000000000000000000712414471751340014436 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Jacek Szafarkiewicz # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Victor Vran ### script_version=20240719.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='victor-vran' GAME_NAME='Victor Vran' ARCHIVE_BASE_0_NAME='victor_vran_2_07_20181005_24296.sh' ARCHIVE_BASE_0_MD5='506f55f5521131e7ab69b656a3e55582' ARCHIVE_BASE_0_SIZE='4721209' ARCHIVE_BASE_0_VERSION='2.07.20181005-gog24296' ARCHIVE_BASE_0_URL='https://www.gog.com/game/victor_vran' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' VictorVranGOG' CONTENT_GAME_DATA_FILES=' DLC Local Movies Packs' APP_MAIN_EXE='VictorVranGOG' APP_MAIN_ICON='../support/icon.png' ## Work around a failure to launch due to not parsing the correct SSL configuration. APP_MAIN_PRERUN=' # Work around a failure to launch due to not parsing the correct SSL configuration export OPENSSL_CONF=/etc/ssl ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl-gnutls.so.4 libdl.so.2 libgcc_s.so.1 libgpg-error.so.0 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXrender.so.1 libXt.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PRELOAD_HACKS_LIST=' HACK_NOATIME' ## LD_PRELOAD shim working around the engine expectation that files are owned by the current user. HACK_NOATIME_NAME='vv_noatime' HACK_NOATIME_DESCRIPTION='LD_PRELOAD shim working around the engine expectation that files are owned by the current user' HACK_NOATIME_PACKAGE='PKG_BIN' HACK_NOATIME_SOURCE=' #define _GNU_SOURCE #include #include #include #include #include #include typedef int (*orig_open_f_type)(const char *pathname, int flags, mode_t mode); int open(const char *pathname, int flags, ...) { va_list valist; mode_t mode; static orig_open_f_type orig_open = NULL; if (orig_open == NULL) orig_open = (orig_open_f_type)dlsym(RTLD_NEXT, "open"); flags &= ~O_NOATIME; if (flags & (O_CREAT | O_TMPFILE)) { va_start(valist, flags); mode = va_arg(valist, mode_t); va_end(valist); } return orig_open(pathname, flags, mode); } ' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Build and include the LD_PRELOAD shims hacks_inclusion_default # Include shipped libgcrypt.so.11 on Debian. # Use the system-provided libraries on Arch Linux and Gentoo. case "$(option_value 'package')" in ('deb') CONTENT_LIBS_BIN_PATH="$(content_path_default)/i386/lib/i386-linux-gnu" CONTENT_LIBS_BIN_FILES=' libgcrypt.so.11 libgcrypt.so.11.7.0' ;; (*) PKG_BIN_DEPENDENCIES_LIBRARIES="$(dependencies_list_native_libraries 'PKG_BIN') libgcrypt.so.11" ;; esac # 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-wadjet-eye-games-ags.sh0000755000000000000000000002461114471751340016064 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # AGS games published by Wadjet Eye Games: # - The Shivah # - Gemini Rue # - Resonance # - Technobabylon # - Shardlight # - Unavowed ### script_version=20240628.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID_SHIVAH='the-shivah' GAME_NAME_SHIVAH='The Shivah' GAME_ID_GEMINIRUE='gemini-rue' GAME_NAME_GEMINIRUE='Gemini Rue' GAME_ID_RESONANCE='resonance' GAME_NAME_RESONANCE='Resonance' GAME_ID_TECHNOBABYLON='technobabylon' GAME_NAME_TECHNOBABYLON='Technobabylon' GAME_ID_SHARDLIGHT='shardlight' GAME_NAME_SHARDLIGHT='Shardlight' GAME_ID_UNAVOWED='unavowed' GAME_NAME_UNAVOWED='Unavowed' # Game archives ## The Shivah ARCHIVE_BASE_SHIVAH_1_NAME='the_shivah_3_0_66477.sh' ARCHIVE_BASE_SHIVAH_1_MD5='350e0e292792b1e44df1f54276843f4d' ARCHIVE_BASE_SHIVAH_1_SIZE='170000' ARCHIVE_BASE_SHIVAH_1_VERSION='3.0-gog66477' ARCHIVE_BASE_SHIVAH_1_URL='https://www.gog.com/game/the_shivah' ARCHIVE_BASE_SHIVAH_0_NAME='the_shivah_2_0_53607.sh' ARCHIVE_BASE_SHIVAH_0_MD5='da6d89db273313fe00a680c52554aea3' ARCHIVE_BASE_SHIVAH_0_SIZE='170000' ARCHIVE_BASE_SHIVAH_0_VERSION='2.0-gog53607' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_SHIVAH='the-shivah_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_SHIVAH='76cb6554e1c09596842391a71e696ded' ARCHIVE_OPTIONAL_ICONS_URL_SHIVAH='https://downloads.dotslashplay.it/games/the-shivah/' CONTENT_ICONS_PATH_SHIVAH='.' CONTENT_ICONS_FILES_SHIVAH=' 16x16 24x24 32x32 48x48 256x256' ## Gemini Rue ARCHIVE_BASE_GEMINIRUE_3_NAME='gemini_rue_3_0_1_66504.sh' ARCHIVE_BASE_GEMINIRUE_3_MD5='e117463c6b002dbfc57b2adf4d26161b' ARCHIVE_BASE_GEMINIRUE_3_SIZE='350000' ARCHIVE_BASE_GEMINIRUE_3_VERSION='3.0.1-gog66504' ARCHIVE_BASE_GEMINIRUE_3_URL='https://www.gog.com/game/gemini_rue' ARCHIVE_BASE_GEMINIRUE_2_NAME='gemini_rue_3_0_66190.sh' ARCHIVE_BASE_GEMINIRUE_2_MD5='3ad7b458713f1ba1d187d90b0dee8eaa' ARCHIVE_BASE_GEMINIRUE_2_SIZE='350000' ARCHIVE_BASE_GEMINIRUE_2_VERSION='3.0-gog66190' ARCHIVE_BASE_GEMINIRUE_1_NAME='gemini_rue_2_3_56797.sh' ARCHIVE_BASE_GEMINIRUE_1_MD5='f7883371b14f945163ffa040ee47806e' ARCHIVE_BASE_GEMINIRUE_1_SIZE='340000' ARCHIVE_BASE_GEMINIRUE_1_VERSION='2.3-gog56797' ARCHIVE_BASE_GEMINIRUE_0_NAME='gemini_rue_2_0a_53346.sh' ARCHIVE_BASE_GEMINIRUE_0_MD5='9626ba73b964458b26e25ed9e1ec737d' ARCHIVE_BASE_GEMINIRUE_0_SIZE='340000' ARCHIVE_BASE_GEMINIRUE_0_VERSION='2.0a-gog53346' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_GEMINIRUE='gemini-rue_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_GEMINIRUE='329019f63b1acdfe7c4d5219a562efab' ARCHIVE_OPTIONAL_ICONS_URL_GEMINIRUE='https://downloads.dotslashplay.it/games/gemini-rue/' CONTENT_ICONS_PATH_GEMINIRUE='.' CONTENT_ICONS_FILES_GEMINIRUE=' 256x256' ## Resonance ARCHIVE_BASE_RESONANCE_1_NAME='resonance_3_0_66305.sh' ARCHIVE_BASE_RESONANCE_1_MD5='87786f1035c3dbe8ebc35d1fb54f6d1a' ARCHIVE_BASE_RESONANCE_1_SIZE='1100000' ARCHIVE_BASE_RESONANCE_1_VERSION='3.0-gog66305' ARCHIVE_BASE_RESONANCE_1_URL='https://www.gog.com/game/resonance' ARCHIVE_BASE_RESONANCE_0_NAME='resonance_2_2_53439.sh' ARCHIVE_BASE_RESONANCE_0_MD5='5c86f3f82974b65ad3d2852c6a9338ed' ARCHIVE_BASE_RESONANCE_0_SIZE='1200000' ARCHIVE_BASE_RESONANCE_0_VERSION='2.2-gog53439' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_RESONANCE='resonance_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_RESONANCE='0a24712adffd9f5f2998bf355fc161b7' ARCHIVE_OPTIONAL_ICONS_URL_RESONANCE='https://downloads.dotslashplay.it/games/resonance/' CONTENT_ICONS_PATH_RESONANCE='.' CONTENT_ICONS_FILES_RESONANCE=' 16x16 24x24 32x32 48x48 256x256' ## Technobabylon ARCHIVE_BASE_TECHNOBABYLON_4_NAME='technobabylon_3_0_5_72309.sh' ARCHIVE_BASE_TECHNOBABYLON_4_MD5='42a3d460d92a5a778d009eebd7b2b867' ARCHIVE_BASE_TECHNOBABYLON_4_SIZE='1374766' ARCHIVE_BASE_TECHNOBABYLON_4_VERSION='3.0.5-gog72309' ARCHIVE_BASE_TECHNOBABYLON_4_URL='https://www.gog.com/game/technobabylon' ARCHIVE_BASE_TECHNOBABYLON_3_NAME='technobabylon_3_0_1_66582.sh' ARCHIVE_BASE_TECHNOBABYLON_3_MD5='6ddf6ed6e8df026f548025a90585a382' ARCHIVE_BASE_TECHNOBABYLON_3_SIZE='1400000' ARCHIVE_BASE_TECHNOBABYLON_3_VERSION='3.0.1-gog66582' ARCHIVE_BASE_TECHNOBABYLON_2_NAME='technobabylon_3_0_66305.sh' ARCHIVE_BASE_TECHNOBABYLON_2_MD5='5d522aa6349e26596e7a6e0ad3c5ff19' ARCHIVE_BASE_TECHNOBABYLON_2_SIZE='1400000' ARCHIVE_BASE_TECHNOBABYLON_2_VERSION='3.0-gog66305' ARCHIVE_BASE_TECHNOBABYLON_1_NAME='technobabylon_2_5a_57810.sh' ARCHIVE_BASE_TECHNOBABYLON_1_MD5='108abcf43ca17438717ddbad13a00f69' ARCHIVE_BASE_TECHNOBABYLON_1_SIZE='1400000' ARCHIVE_BASE_TECHNOBABYLON_1_VERSION='2.5a-gog57810' ARCHIVE_BASE_TECHNOBABYLON_0_NAME='technobabylon_2_1_53388.sh' ARCHIVE_BASE_TECHNOBABYLON_0_MD5='6bb58eccb57e2195d49266bd8798a9a1' ARCHIVE_BASE_TECHNOBABYLON_0_SIZE='1400000' ARCHIVE_BASE_TECHNOBABYLON_0_VERSION='2.1-gog53388' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_TECHNOBABYLON='technobabylon_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_TECHNOBABYLON='84a7104801c25d5e931fbdd4cc3d1916' ARCHIVE_OPTIONAL_ICONS_URL_TECHNOBABYLON='https://downloads.dotslashplay.it/games/technobabylon/' CONTENT_ICONS_PATH_TECHNOBABYLON='.' CONTENT_ICONS_FILES_TECHNOBABYLON=' 64x64' ## Shardlight ARCHIVE_BASE_SHARDLIGHT_4_NAME='shardlight_3_2_73879.sh' ARCHIVE_BASE_SHARDLIGHT_4_MD5='0207dcb6ee38949386c7ebe49ef18160' ARCHIVE_BASE_SHARDLIGHT_4_SIZE='952797' ARCHIVE_BASE_SHARDLIGHT_4_VERSION='3.2-gog73879' ARCHIVE_BASE_SHARDLIGHT_4_URL='https://www.gog.com/game/shardlight' ARCHIVE_BASE_SHARDLIGHT_3_NAME='shardlight_3_1_70695.sh' ARCHIVE_BASE_SHARDLIGHT_3_MD5='824cd0bf02463cfce8acd9c491399197' ARCHIVE_BASE_SHARDLIGHT_3_SIZE='952796' ARCHIVE_BASE_SHARDLIGHT_3_VERSION='3.1-gog70695' ARCHIVE_BASE_SHARDLIGHT_2_NAME='shardlight_3_0_66305.sh' ARCHIVE_BASE_SHARDLIGHT_2_MD5='2c3d7b7e0a541ee3a635189449608713' ARCHIVE_BASE_SHARDLIGHT_2_SIZE='960000' ARCHIVE_BASE_SHARDLIGHT_2_VERSION='3.0-gog66305' ARCHIVE_BASE_SHARDLIGHT_1_NAME='shardlight_2_4_56258.sh' ARCHIVE_BASE_SHARDLIGHT_1_MD5='854c59dcb914d934468a9475d17181e4' ARCHIVE_BASE_SHARDLIGHT_1_SIZE='1200000' ARCHIVE_BASE_SHARDLIGHT_1_VERSION='2.4-gog56258' ARCHIVE_BASE_SHARDLIGHT_0_NAME='shardlight_2_2_53577.sh' ARCHIVE_BASE_SHARDLIGHT_0_MD5='b48f7b1aac9b32ee7f5b236b6cc82e81' ARCHIVE_BASE_SHARDLIGHT_0_SIZE='1200000' ARCHIVE_BASE_SHARDLIGHT_0_VERSION='2.2-gog53577' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_SHARDLIGHT='shardlight_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_SHARDLIGHT='59bce49abce9678d963cecd72be8b512' ARCHIVE_OPTIONAL_ICONS_URL_SHARDLIGHT='https://downloads.dotslashplay.it/games/shardlight/' CONTENT_ICONS_PATH_SHARDLIGHT='.' CONTENT_ICONS_FILES_SHARDLIGHT=' 16x16 32x32' ## Unavowed ARCHIVE_BASE_UNAVOWED_7_NAME='unavowed_2_0_2_70667.sh' ARCHIVE_BASE_UNAVOWED_7_MD5='00c9f35c3e3e506f8238de49c8ac781a' ARCHIVE_BASE_UNAVOWED_7_SIZE='2310224' ARCHIVE_BASE_UNAVOWED_7_VERSION='2.0.2-gog70667' ARCHIVE_BASE_UNAVOWED_7_URL='https://www.gog.com/game/unavowed' ARCHIVE_BASE_UNAVOWED_6_NAME='unavowed_2_0_2_70012.sh' ARCHIVE_BASE_UNAVOWED_6_MD5='a9cfabc33e91f0d7b7649e302966b591' ARCHIVE_BASE_UNAVOWED_6_SIZE='2310224' ARCHIVE_BASE_UNAVOWED_6_VERSION='2.0.2-gog70012' ARCHIVE_BASE_UNAVOWED_5_NAME='unavowed_2_0_1_66601.sh' ARCHIVE_BASE_UNAVOWED_5_MD5='bacc5d7cf9da4970da580c7ee43e1a2e' ARCHIVE_BASE_UNAVOWED_5_SIZE='2400000' ARCHIVE_BASE_UNAVOWED_5_VERSION='2.0.1-gog66601' ARCHIVE_BASE_UNAVOWED_4_NAME='unavowed_2_0_66472.sh' ARCHIVE_BASE_UNAVOWED_4_MD5='771d43bf86a85da9a70d02da80a6eb01' ARCHIVE_BASE_UNAVOWED_4_SIZE='2400000' ARCHIVE_BASE_UNAVOWED_4_VERSION='2.0-gog66472' ARCHIVE_BASE_UNAVOWED_3_NAME='unavowed_1_5_64507.sh' ARCHIVE_BASE_UNAVOWED_3_MD5='0029204a1edc703c2fc90bcc2741c442' ARCHIVE_BASE_UNAVOWED_3_SIZE='2500000' ARCHIVE_BASE_UNAVOWED_3_VERSION='1.5-gog64507' ARCHIVE_BASE_UNAVOWED_2_NAME='unavowed_1_4_57370.sh' ARCHIVE_BASE_UNAVOWED_2_MD5='c785b049e60d60e45296acda30bd9aa2' ARCHIVE_BASE_UNAVOWED_2_SIZE='2500000' ARCHIVE_BASE_UNAVOWED_2_VERSION='1.4-gog57370' ARCHIVE_BASE_UNAVOWED_1_NAME='unavowed_1_32_55233.sh' ARCHIVE_BASE_UNAVOWED_1_MD5='6d92c60a1a3406f619b4fb4c204adecc' ARCHIVE_BASE_UNAVOWED_1_SIZE='2500000' ARCHIVE_BASE_UNAVOWED_1_VERSION='1.3.2-gog55233' ARCHIVE_BASE_UNAVOWED_0_NAME='unavowed_1_31_54237.sh' ARCHIVE_BASE_UNAVOWED_0_MD5='f0060c808571a4324714c69f653a4caa' ARCHIVE_BASE_UNAVOWED_0_SIZE='2500000' ARCHIVE_BASE_UNAVOWED_0_VERSION='1.3.1-gog54237' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_UNAVOWED='unavowed_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_UNAVOWED='359eae49cc167a34a1cc5525cf6ab340' ARCHIVE_OPTIONAL_ICONS_URL_UNAVOWED='https://downloads.dotslashplay.it/games/unavowed/' CONTENT_ICONS_PATH_UNAVOWED='.' CONTENT_ICONS_FILES_UNAVOWED=' 16x16 24x24 32x32 48x48 256x256' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' ENGV.tmp Music Sounds *.ags *.cfg *.exe *.ogv *.tra *.vox' CONTENT_DOC_MAIN_FILES=' licenses' ## TODO: Check if "ags:shivahkosher" should be used instead. APP_MAIN_SCUMMID_SHIVAH='ags:shivah' APP_MAIN_SCUMMID_GEMINIRUE='ags:geminirue' APP_MAIN_SCUMMID_RESONANCE='ags:resonance' APP_MAIN_SCUMMID_TECHNOBABYLON='ags:technobabylon' APP_MAIN_SCUMMID_SHARDLIGHT='ags:shardlight' APP_MAIN_SCUMMID_UNAVOWED='ags:unavowed' APP_MAIN_ICON='../support/icon.png' APP_MAIN_ICON_SHIVAH_0='Shivah.exe' APP_MAIN_ICON_GEMINIRUE_1='Gemini Rue.exe' APP_MAIN_ICON_GEMINIRUE_0='Gemini Rue.exe' APP_MAIN_ICON_RESONANCE_0='Resonance.exe' APP_MAIN_ICON_TECHNOBABYLON_1='Technobabylon.exe' APP_MAIN_ICON_TECHNOBABYLON_0='Technobabylon.exe' APP_MAIN_ICON_SHARDLIGHT_1='Shardlight.exe' APP_MAIN_ICON_SHARDLIGHT_0='Shardlight.exe' APP_MAIN_ICON_UNAVOWED_3='Unavowed.exe' APP_MAIN_ICON_UNAVOWED_2='Unavowed.exe' APP_MAIN_ICON_UNAVOWED_1='Unavowed.exe' APP_MAIN_ICON_UNAVOWED_0='Unavowed.exe' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-war-for-the-overworld-expansions.sh0000755000000000000000000002530014471751340020521 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # War for the Overworld expansions: # - The Cynical Imp # - Founders Theme # - Kickstarter Theme # - Underlord Edition # - Heart of Gold # - My Pet Dungeon # - Seasonal Worker Skins # - The Under Games ### script_version=20240721.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='war-for-the-overworld' GAME_NAME='War for the Overworld' EXPANSION_ID_CYNICAL='the-cynical-imp' EXPANSION_NAME_CYNICAL='The Cynical Imp' EXPANSION_ID_FOUNDERS='founders-theme' EXPANSION_NAME_FOUNDERS='Founders Theme' EXPANSION_ID_KICKSTARTER='kickstarter-theme' EXPANSION_NAME_KICKSTARTER='Kickstarter Theme' EXPANSION_ID_UNDERLORD='underlord-edition' EXPANSION_NAME_UNDERLORD='Underlord Edition' EXPANSION_ID_HEARTOFGOLD='heart-of-gold' EXPANSION_NAME_HEARTOFGOLD='Heart of Gold' EXPANSION_ID_PETDUNGEON='my-pet-dungeon' EXPANSION_NAME_PETDUNGEON='My Pet Dungeon' EXPANSION_ID_SEASONALWORKER='seasonal-worker-skins' EXPANSION_NAME_SEASONALWORKER='Seasonal Worker Skins' EXPANSION_ID_UNDERGAMES='the-under-games' EXPANSION_NAME_UNDERGAMES='The Under Games' # Archives ## The Cynical Imp ARCHIVE_BASE_CYNICAL_2_NAME='war_for_the_overworld_cynical_imp_charity_v2_1_1_73576.sh' ARCHIVE_BASE_CYNICAL_2_MD5='a82cbdad5ac4320dac813d5d588af23d' ARCHIVE_BASE_CYNICAL_2_SIZE='1048' ARCHIVE_BASE_CYNICAL_2_VERSION='2.1.1-gog73576' ARCHIVE_BASE_CYNICAL_2_URL='http://buy.wftogame.com/charity/' ARCHIVE_BASE_CYNICAL_1_NAME='war_for_the_overworld_cynical_imp_charity_v2_1_0f4_55096.sh' ARCHIVE_BASE_CYNICAL_1_MD5='7941c2d30434ec481056ca668d8901d6' ARCHIVE_BASE_CYNICAL_1_SIZE='1400' ARCHIVE_BASE_CYNICAL_1_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_CYNICAL_0_NAME='war_for_the_overworld_cynical_imp_charity_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_CYNICAL_0_MD5='301e40e80942c2382dbf892fd3801216' ARCHIVE_BASE_CYNICAL_0_SIZE='1300' ARCHIVE_BASE_CYNICAL_0_VERSION='2.0.7f1-gog36563' ## Founders Theme ARCHIVE_BASE_FOUNDERS_2_NAME='war_for_the_overworld_founders_theme_charity_v2_1_1_73576.sh' ARCHIVE_BASE_FOUNDERS_2_MD5='1b12880acd1ddbd352ff8321e6c0b6c8' ARCHIVE_BASE_FOUNDERS_2_SIZE='1048' ARCHIVE_BASE_FOUNDERS_2_VERSION='2.1.1-gog73576' ARCHIVE_BASE_FOUNDERS_2_URL='http://buy.wftogame.com/charity/' ARCHIVE_BASE_FOUNDERS_1_NAME='war_for_the_overworld_founders_theme_charity_v2_1_0f4_55096.sh' ARCHIVE_BASE_FOUNDERS_1_MD5='0313b90d995d5f527feea040995677f7' ARCHIVE_BASE_FOUNDERS_1_SIZE='1400' ARCHIVE_BASE_FOUNDERS_1_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_FOUNDERS_0_NAME='war_for_the_overworld_founders_theme_charity_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_FOUNDERS_0_MD5='a8fec55ffb2c9eda265f7f346c8998e6' ARCHIVE_BASE_FOUNDERS_0_SIZE='1300' ARCHIVE_BASE_FOUNDERS_0_VERSION='2.0.7f1-gog36563' ## Kickstarter Theme ARCHIVE_BASE_KICKSTARTER_2_NAME='war_for_the_overworld_kickstarter_theme_charity_v2_1_1_73576.sh' ARCHIVE_BASE_KICKSTARTER_2_MD5='d63028e7708e7bbf167d4ea44db42ab6' ARCHIVE_BASE_KICKSTARTER_2_SIZE='1048' ARCHIVE_BASE_KICKSTARTER_2_VERSION='2.1.1-gog73576' ARCHIVE_BASE_KICKSTARTER_2_URL='http://buy.wftogame.com/charity/' ARCHIVE_BASE_KICKSTARTER_1_NAME='war_for_the_overworld_kickstarter_theme_charity_v2_1_0f4_55096.sh' ARCHIVE_BASE_KICKSTARTER_1_MD5='194826ab3072cd5007a8214fe96bc071' ARCHIVE_BASE_KICKSTARTER_1_SIZE='1400' ARCHIVE_BASE_KICKSTARTER_1_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_KICKSTARTER_0_NAME='war_for_the_overworld_kickstarter_theme_charity_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_KICKSTARTER_0_MD5='9ee5fad56ab9dd6676ab4718fa7e5e2e' ARCHIVE_BASE_KICKSTARTER_0_SIZE='1300' ARCHIVE_BASE_KICKSTARTER_0_VERSION='2.0.7f1-gog36563' ## Underlord Edition ARCHIVE_BASE_UNDERLORD_7_NAME='war_for_the_overworld_underlord_edition_upgrade_v2_1_1_73576.sh' ARCHIVE_BASE_UNDERLORD_7_MD5='066e110e2b85ffca512ce8c8d3d67ca3' ARCHIVE_BASE_UNDERLORD_7_SIZE='1048' ARCHIVE_BASE_UNDERLORD_7_VERSION='2.1.1-gog73576' ARCHIVE_BASE_UNDERLORD_7_URL='https://www.gog.com/game/war_for_the_overworld_underlord_edition_upgrade' ARCHIVE_BASE_UNDERLORD_6_NAME='war_for_the_overworld_underlord_edition_upgrade_v2_1_0f4_55096.sh' ARCHIVE_BASE_UNDERLORD_6_MD5='b2b81108728fe2bbadd51c7897f9269c' ARCHIVE_BASE_UNDERLORD_6_SIZE='1400' ARCHIVE_BASE_UNDERLORD_6_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_UNDERLORD_5_NAME='war_for_the_overworld_underlord_edition_upgrade_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_UNDERLORD_5_MD5='7cd85994986cf75f9fd81d4be0df82fe' ARCHIVE_BASE_UNDERLORD_5_SIZE='1300' ARCHIVE_BASE_UNDERLORD_5_VERSION='2.0.7f1-gog36563' ARCHIVE_BASE_UNDERLORD_4_NAME='war_for_the_overworld_underlord_edition_upgrade_2_0_7f1_30014.sh' ARCHIVE_BASE_UNDERLORD_4_MD5='9d67c88dd331703315e9056dc6abb78c' ARCHIVE_BASE_UNDERLORD_4_SIZE='1300' ARCHIVE_BASE_UNDERLORD_4_VERSION='2.0.6f1-gog30014' ARCHIVE_BASE_UNDERLORD_3_NAME='war_for_the_overworld_underlord_edition_upgrade_2_0_6f1_24637.sh' ARCHIVE_BASE_UNDERLORD_3_MD5='0be12c1160fdba4f180dc3776f1bb21e' ARCHIVE_BASE_UNDERLORD_3_SIZE='1300' ARCHIVE_BASE_UNDERLORD_3_VERSION='2.0.6f1-gog24637' ARCHIVE_BASE_UNDERLORD_2_NAME='war_for_the_overworld_underlord_edition_upgrade_2_0_5_24177.sh' ARCHIVE_BASE_UNDERLORD_2_MD5='97857939a158c470d04936bc580838c2' ARCHIVE_BASE_UNDERLORD_2_SIZE='1300' ARCHIVE_BASE_UNDERLORD_2_VERSION='2.0.5-gog24177' ## Heart of Gold ARCHIVE_BASE_HEARTOFGOLD_3_NAME='war_for_the_overworld_heart_of_gold_v2_1_1_73576.sh' ARCHIVE_BASE_HEARTOFGOLD_3_MD5='653ab69838583a231b7cc8128286e183' ARCHIVE_BASE_HEARTOFGOLD_3_SIZE='1048' ARCHIVE_BASE_HEARTOFGOLD_3_VERSION='2.1.1-gog73576' ARCHIVE_BASE_HEARTOFGOLD_3_URL='https://www.gog.com/game/war_for_the_overworld_heart_of_gold' ARCHIVE_BASE_HEARTOFGOLD_2_NAME='war_for_the_overworld_heart_of_gold_v2_1_0f4_55096.sh' ARCHIVE_BASE_HEARTOFGOLD_2_MD5='c492a072ab257817abeb7c80f76c1eca' ARCHIVE_BASE_HEARTOFGOLD_2_SIZE='1400' ARCHIVE_BASE_HEARTOFGOLD_2_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_HEARTOFGOLD_1_NAME='war_for_the_overworld_heart_of_gold_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_HEARTOFGOLD_1_MD5='c512019fa698759ba0a96e79fadcb06e' ARCHIVE_BASE_HEARTOFGOLD_1_SIZE='1400' ARCHIVE_BASE_HEARTOFGOLD_1_VERSION='2.0.7f1-gog36563' ARCHIVE_BASE_HEARTOFGOLD_0_NAME='war_for_the_overworld_heart_of_gold_2_0_7f1_30014.sh' ARCHIVE_BASE_HEARTOFGOLD_0_MD5='2d3555bfea2aafca9ff9e8eb7a970c0d' ARCHIVE_BASE_HEARTOFGOLD_0_SIZE='1400' ARCHIVE_BASE_HEARTOFGOLD_0_VERSION='2.0.6f1-gog30014' ## My Pet Dungeon ARCHIVE_BASE_PETDUNGEON_6_NAME='war_for_the_overworld_my_pet_dungeon_v2_1_1_73576.sh' ARCHIVE_BASE_PETDUNGEON_6_MD5='435ec9378fbefad46ad4827d870b84e1' ARCHIVE_BASE_PETDUNGEON_6_SIZE='1048' ARCHIVE_BASE_PETDUNGEON_6_VERSION='2.1.1-gog73576' ARCHIVE_BASE_PETDUNGEON_6_URL='https://www.gog.com/game/war_for_the_overworld_my_pet_dungeon' ARCHIVE_BASE_PETDUNGEON_5_NAME='war_for_the_overworld_my_pet_dungeon_v2_1_0f4_55096.sh' ARCHIVE_BASE_PETDUNGEON_5_MD5='5aadd3ab719d2fd71df604708b9a29e1' ARCHIVE_BASE_PETDUNGEON_5_SIZE='1400' ARCHIVE_BASE_PETDUNGEON_5_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_PETDUNGEON_4_NAME='war_for_the_overworld_my_pet_dungeon_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_PETDUNGEON_4_MD5='55fd7104b3c3141bc38a2809ae470c92' ARCHIVE_BASE_PETDUNGEON_4_SIZE='1400' ARCHIVE_BASE_PETDUNGEON_4_VERSION='2.0.7f1-gog36563' ARCHIVE_BASE_PETDUNGEON_3_NAME='war_for_the_overworld_my_pet_dungeon_2_0_7f1_30014.sh' ARCHIVE_BASE_PETDUNGEON_3_MD5='f9cd5f6fbe46d46c98837410f8cbfeee' ARCHIVE_BASE_PETDUNGEON_3_SIZE='1400' ARCHIVE_BASE_PETDUNGEON_3_VERSION='2.0.6f1-gog30014' ARCHIVE_BASE_PETDUNGEON_2_NAME='war_for_the_overworld_my_pet_dungeon_2_0_6f1_24637.sh' ARCHIVE_BASE_PETDUNGEON_2_MD5='7788aeeee1e9c7cd365eb595e772ff52' ARCHIVE_BASE_PETDUNGEON_2_SIZE='1400' ARCHIVE_BASE_PETDUNGEON_2_VERSION='2.0.6f1-gog24637' ARCHIVE_BASE_PETDUNGEON_1_NAME='war_for_the_overworld_my_pet_dungeon_2_0_5_24177.sh' ARCHIVE_BASE_PETDUNGEON_1_MD5='eb45d5ee8c699d9ded7d15b82ad1efa3' ARCHIVE_BASE_PETDUNGEON_1_SIZE='1400' ARCHIVE_BASE_PETDUNGEON_1_VERSION='2.0.5-gog24177' ## Seasonal Worker Skins ARCHIVE_BASE_SEASONALWORKER_3_NAME='war_for_the_overworld_seasonal_worker_skins_v2_1_1_73576.sh' ARCHIVE_BASE_SEASONALWORKER_3_MD5='a74c7dc94c79c37a328a15d9cc4a8385' ARCHIVE_BASE_SEASONALWORKER_3_SIZE='1048' ARCHIVE_BASE_SEASONALWORKER_3_VERSION='2.1.1-gog73576' ARCHIVE_BASE_SEASONALWORKER_3_URL='https://www.gog.com/game/war_for_the_overworld_worker_skin_collection' ARCHIVE_BASE_SEASONALWORKER_2_NAME='war_for_the_overworld_seasonal_worker_skins_v2_1_0f4_55096.sh' ARCHIVE_BASE_SEASONALWORKER_2_MD5='874a21a49ba212ef716e35e0a5b98357' ARCHIVE_BASE_SEASONALWORKER_2_SIZE='1400' ARCHIVE_BASE_SEASONALWORKER_2_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_SEASONALWORKER_1_NAME='war_for_the_overworld_seasonal_worker_skins_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_SEASONALWORKER_1_MD5='ccc02cab316dff3f6a9351217f38f029' ARCHIVE_BASE_SEASONALWORKER_1_SIZE='1400' ARCHIVE_BASE_SEASONALWORKER_1_VERSION='2.0.7f1-gog36563' ARCHIVE_BASE_SEASONALWORKER_0_NAME='war_for_the_overworld_seasonal_worker_skins_2_0_7f1_30014.sh' ARCHIVE_BASE_SEASONALWORKER_0_MD5='6b4c2c19a901547b1fe9a8a51edab522' ARCHIVE_BASE_SEASONALWORKER_0_SIZE='1400' ARCHIVE_BASE_SEASONALWORKER_0_VERSION='2.0.6f1-gog30014' ## The Under Games ARCHIVE_BASE_UNDERGAMES_2_NAME='war_for_the_overworld_the_under_games_v2_1_1_73576.sh' ARCHIVE_BASE_UNDERGAMES_2_MD5='820594211c64b3fe94716921c1da3f73' ARCHIVE_BASE_UNDERGAMES_2_SIZE='1048' ARCHIVE_BASE_UNDERGAMES_2_VERSION='2.1.1-gog73576' ARCHIVE_BASE_UNDERGAMES_2_URL='https://www.gog.com/game/war_for_the_overworld_the_under_games' ARCHIVE_BASE_UNDERGAMES_1_NAME='war_for_the_overworld_the_under_games_v2_1_0f4_55096.sh' ARCHIVE_BASE_UNDERGAMES_1_MD5='8c7bdf2299a2cc5795f92e58c94aa57b' ARCHIVE_BASE_UNDERGAMES_1_SIZE='1400' ARCHIVE_BASE_UNDERGAMES_1_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_UNDERGAMES_0_NAME='war_for_the_overworld_the_under_games_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_UNDERGAMES_0_MD5='c63ba259c40ab080f697fe03678d287e' ARCHIVE_BASE_UNDERGAMES_0_SIZE='1400' ARCHIVE_BASE_UNDERGAMES_0_VERSION='2.0.7f1-gog36563' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' goggame-*.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-war-for-the-overworld.sh0000755000000000000000000001123614471751340016337 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # War for the Overworld ### script_version=20240721.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='war-for-the-overworld' GAME_NAME='War for the Overworld' ARCHIVE_BASE_7_NAME='war_for_the_overworld_v2_1_1_73576.sh' ARCHIVE_BASE_7_MD5='d3095d210fda9c39cd2cec6c2d0a882f' ARCHIVE_BASE_7_SIZE='4792845' ARCHIVE_BASE_7_VERSION='2.1.1-gog73576' ARCHIVE_BASE_7_URL='https://www.gog.com/game/war_for_the_overworld' ARCHIVE_BASE_6_NAME='war_for_the_overworld_v2_1_0f4_55096.sh' ARCHIVE_BASE_6_MD5='97a9bd6ee2f88fa9c64a75cd578d3677' ARCHIVE_BASE_6_SIZE='4800000' ARCHIVE_BASE_6_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_5_NAME='war_for_the_overworld_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_5_MD5='e957781ef8559841ed2e32032e43d2cd' ARCHIVE_BASE_5_SIZE='4700000' ARCHIVE_BASE_5_VERSION='2.0.7f1-gog36563' ARCHIVE_BASE_4_NAME='war_for_the_overworld_2_0_7f1_30014.sh' ARCHIVE_BASE_4_MD5='a352307c8fbf70c33bdfdd97a82c6530' ARCHIVE_BASE_4_SIZE='4700000' ARCHIVE_BASE_4_VERSION='2.0.6f1-gog30014' ARCHIVE_BASE_3_NAME='war_for_the_overworld_2_0_6f1_24637.sh' ARCHIVE_BASE_3_MD5='e58f2720ed974185e9e5b29d08aa6238' ARCHIVE_BASE_3_SIZE='4700000' ARCHIVE_BASE_3_VERSION='2.0.6f1-gog24637' ARCHIVE_BASE_2_NAME='war_for_the_overworld_2_0_5_24177.sh' ARCHIVE_BASE_2_MD5='79b604f0d19caf3af5fdc4cb3903b370' ARCHIVE_BASE_2_SIZE='4700000' ARCHIVE_BASE_2_VERSION='2.0.5-gog24177' ARCHIVE_BASE_1_NAME='war_for_the_overworld_en_2_0_4_23102.sh' ARCHIVE_BASE_1_MD5='2873095f86b17c613b84af9624986f42' ARCHIVE_BASE_1_SIZE='4700000' ARCHIVE_BASE_1_VERSION='2.0.4-gog23102' ARCHIVE_BASE_0_NAME='war_for_the_overworld_en_2_0_3f1_22287.sh' ARCHIVE_BASE_0_MD5='4f1ff4e136aeaa795fce8ba26445cbe8' ARCHIVE_BASE_0_SIZE='4700000' ARCHIVE_BASE_0_VERSION='2.0.3f1-gog22287' UNITY3D_NAME='WFTOGame' UNITY3D_PLUGINS=' libCoherentGTCore.so libCoherentGTJS.so libcoherenticudata.so libcoherenticui18n.so libcoherenticuuc.so libCoherentUIGT_Native.so libGameLogic.so libRenoirCore.Linux.so libWTF.so ScreenSelector.so' ## If libsteam_api.so is not included, ending a level will fail. UNITY3D_PLUGINS="${UNITY3D_PLUGINS:-} libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_BIN_FILES=" ${UNITY3D_NAME}_Data/CoherentUI_Host" CONTENT_GAME0_DATA_FILES=' GameData *.info' USER_PERSISTENT_DIRECTORIES=" GameData ${UNITY3D_NAME}_Data/GameData ${UNITY3D_NAME}_Data/uiresources/minimapSnapshot" ## Work around the engine inability to play video files without write permissions. USER_PERSISTENT_DIRECTORIES="${USER_PERSISTENT_DIRECTORIES:-} ${UNITY3D_NAME}_Data/uiresources/wftoUI/menu/vids" 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 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 . "$PLAYIT_LIB2" # Link some Unity3D plugin libraries in the game data path as the game engine fails to find them otherwise. libraries_source=$( set_current_package 'PKG_BIN' path_libraries ) libraries_destination="$(package_path 'PKG_BIN')$(path_game_data)/$(unity3d_name)_Data/Plugins/x86_64" mkdir --parents "$libraries_destination" ln --symbolic \ "${libraries_source}/libCoherentUIGT_Native.so" \ "${libraries_source}/libGameLogic.so" \ "$libraries_destination" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Add required execution permissions (this is only required by some old builds of the game). unity3d_name=$(unity3d_name) for file in \ "${unity3d_name}_Data/CoherentUI_Host/linux/CoherentUI_Host" \ "${unity3d_name}_Data/CoherentUI_Host/linux/CoherentUI_Host.bin" do if [ -e "$file" ]; then chmod 755 "$file" fi done ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warcraft-1.sh0000755000000000000000000000332414471751340014131 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Warcraft 1 ### script_version=20240719.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='warcraft-1' GAME_NAME='Warcraft: Orcs & Humans' ARCHIVE_BASE_0_NAME='setup_warcraft_orcs__humans_1.2_(28330).exe' ARCHIVE_BASE_0_MD5='79d30dbb24395d32f77156a2e2b4639c' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='642266' ARCHIVE_BASE_0_VERSION='1.2-gog28330' ARCHIVE_BASE_0_URL='https://www.gog.com/game/warcraft_orcs_and_humans' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' data drivers *.bin *.cue *.exe *.war' CONTENT_DOC_MAIN_PATH=' *.txt' GAME_IMAGE='war1.cue' USER_PERSISTENT_FILES=' *.SAV *.war' APP_MAIN_EXE='war.exe' APP_MAIN_ICON='app/goggame-1706049527.ico' ## Use fixed cpu cycles, to avoid scrolling issues. APP_MAIN_DOSBOX_PRERUN=' config -set cpu cycles=fixed 30000' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build package packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warcraft-3.sh0000755000000000000000000000606614471751340014141 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Warcraft 3 ### script_version=20240601.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='warcraft-3' GAME_NAME='Warcraft Ⅲ: Reign of Chaos' ## This DRM-free archive is no longer available for download, ## as Blizzard would rather have us use their new DRM-infested build. ARCHIVE_BASE_0_NAME='Installer Tome.mpq' ARCHIVE_BASE_0_MD5='dd5926d8bb6ed10c47617bbc69b0ce1a' ARCHIVE_BASE_0_SIZE='780000' ARCHIVE_BASE_0_VERSION='1.27-blizzard1' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_PATH='PC' CONTENT_GAME_BIN_FILES=' redist blizzard.ax *.dll *.exe' CONTENT_GAME_DATA_PATH='Common' CONTENT_GAME_DATA_FILES=' Maps Movies *.mpq' USER_PERSISTENT_DIRECTORIES=' Campaigns Maps Replay Save' APP_MAIN_EXE='Warcraft III.exe' APP_MAIN_OPTIONS='-opengl' APP_MAIN_ICON='PC/War3.exe' APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=WAR3.ICO' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/x-msvideo' # Set the list of requirements to extract the archive contents. SCRIPT_DEPS="${SCRIPT_DEPS:-} smpq" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Check for the presence of required extra archives ## Check for the presence of the CD key files. ## See notes/warcraft-3 for details on how to get these files. ARCHIVE_REQUIRED_CDKEY_1_NAME='font.clh' ARCHIVE_REQUIRED_CDKEY_2_NAME='font.gid' archive_initialize_required \ 'ARCHIVE_CDKEY_1' \ 'ARCHIVE_REQUIRED_CDKEY_1' archive_initialize_required \ 'ARCHIVE_CDKEY_2' \ 'ARCHIVE_REQUIRED_CDKEY_2' # Extract game data archive_path=$(archive_path $(current_archive)) archive_path_cdkey_1=$(archive_path 'ARCHIVE_CDKEY_1') archive_path_cdkey_2=$(archive_path 'ARCHIVE_CDKEY_2') mkdir --parents "${PLAYIT_WORKDIR}/gamedata" information_archive_data_extraction "$archive_path" ( cd "${PLAYIT_WORKDIR}/gamedata" smpq --extract "$archive_path" ## Update .mpq file. ( cd 'PC-100' smpq --append ../Common/War3.mpq * ) ( cd 'Files' cp --dereference \ "$archive_path_cdkey_1" \ "$archive_path_cdkey_2" \ 'font' smpq --append ../Common/War3.mpq \ font/font.ccd \ font/font.clh \ font/font.gid rm --force --recursive 'font' ) ) # 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-warhammer-40k-dawn-of-war.sh0000755000000000000000000004140014471751340016656 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 Hoël Bézier set -o errexit ### # Warhammer 40,000: Dawn of War: # - Dawn of War (original game) # - Winter Assault (full game and free demo) # - Dark Crusade # - Soulstorm ### script_version=20240626.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='warhammer-40k-dawn-of-war' GAME_NAME='Warhammer 40,000: Dawn of War' GAME_ID_WA="${GAME_ID}-winter-assault" GAME_NAME_WA="$GAME_NAME - Winter Assault" GAME_ID_WA_DEMO="${GAME_ID_WA}-demo" GAME_NAME_WA_DEMO="$GAME_NAME_WA (demo)" GAME_ID_DC="${GAME_ID}-dark-crusade" GAME_NAME_DC="$GAME_NAME - Dark Crusade" GAME_ID_SS="${GAME_ID}-soulstorm" GAME_NAME_SS="$GAME_NAME - Soulstorm" # Archives ## Dawn of War (base game) ARCHIVE_BASE_DOW_EN_0_NAME='setup_warhammer_40000_dawn_of_war_0.19_(64626).exe' ARCHIVE_BASE_DOW_EN_0_MD5='a45fc06675d678b282e7f72f39c2591c' ARCHIVE_BASE_DOW_EN_0_TYPE='innosetup' ARCHIVE_BASE_DOW_EN_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_0.19_(64626)-1.bin' ARCHIVE_BASE_DOW_EN_0_PART1_MD5='e89415bc33d078598a19650ddd80d2be' ARCHIVE_BASE_DOW_EN_0_SIZE='2800000' ARCHIVE_BASE_DOW_EN_0_VERSION='1.51-gog64626' ARCHIVE_BASE_DOW_EN_0_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ARCHIVE_BASE_DOW_FR_0_NAME='setup_warhammer_40000_dawn_of_war_0.19_(french)_(64626).exe' ARCHIVE_BASE_DOW_FR_0_MD5='e1cdc8cc2b9a81b390cd1996053d5c04' ARCHIVE_BASE_DOW_FR_0_TYPE='innosetup' ARCHIVE_BASE_DOW_FR_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_0.19_(french)_(64626)-1.bin' ARCHIVE_BASE_DOW_FR_0_PART1_MD5='32eecc81507d84f6d39f9c74aeb5e1ef' ARCHIVE_BASE_DOW_FR_0_SIZE='2800000' ARCHIVE_BASE_DOW_FR_0_VERSION='1.51-gog64626' ARCHIVE_BASE_DOW_FR_0_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ## Winter Assault (full game) ARCHIVE_BASE_WA_EN_1_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(64626).exe' ARCHIVE_BASE_WA_EN_1_MD5='223385b79c6ee7eb691248a943eb53fa' ARCHIVE_BASE_WA_EN_1_TYPE='innosetup' ARCHIVE_BASE_WA_EN_1_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(64626)-1.bin' ARCHIVE_BASE_WA_EN_1_PART1_MD5='61e354453cb8638b995f5ed17a4bdbbd' ARCHIVE_BASE_WA_EN_1_SIZE='2763147' ARCHIVE_BASE_WA_EN_1_VERSION='1.51-gog64626' ARCHIVE_BASE_WA_EN_1_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ARCHIVE_BASE_WA_FR_1_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(french)_(64626).exe' ARCHIVE_BASE_WA_FR_1_MD5='99640045bdd625ff55aed497aef96e78' ARCHIVE_BASE_WA_FR_1_TYPE='innosetup' ARCHIVE_BASE_WA_FR_1_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(french)_(64626)-1.bin' ARCHIVE_BASE_WA_FR_1_PART1_MD5='e6263848739e9c9975632c0766fae2e1' ARCHIVE_BASE_WA_FR_1_SIZE='2769494' ARCHIVE_BASE_WA_FR_1_VERSION='1.51-gog64626' ARCHIVE_BASE_WA_FR_1_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ## Support for this archive can only be restored after ./play.it gains support for multiple archives with an identical name. ## cf. https://forge.dotslashplay.it/play.it/scripts/-/issues/355 #ARCHIVE_BASE_WA_EN_0_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(64626).exe' #ARCHIVE_BASE_WA_EN_0_MD5='a610066c44aee835f0ac608864c31ef9' #ARCHIVE_BASE_WA_EN_0_TYPE='innosetup' #ARCHIVE_BASE_WA_EN_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(64626)-1.bin' #ARCHIVE_BASE_WA_EN_0_PART1_MD5='fd954304b3f38cccf859edf7ca4e1dd5' #ARCHIVE_BASE_WA_EN_0_SIZE='2800000' #ARCHIVE_BASE_WA_EN_0_VERSION='1.51-gog64626' ## Support for this archive can only be restored after ./play.it gains support for multiple archives with an identical name. ## cf. https://forge.dotslashplay.it/play.it/scripts/-/issues/355 #ARCHIVE_BASE_WA_FR_0_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(french)_(64626).exe' #ARCHIVE_BASE_WA_FR_0_MD5='9423b22d50f707d794e961aef63a9a44' #ARCHIVE_BASE_WA_FR_0_TYPE='innosetup' #ARCHIVE_BASE_WA_FR_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(french)_(64626)-1.bin' #ARCHIVE_BASE_WA_FR_0_PART1_MD5='b4a188c7ed2012a9c4fd300af07c831d' #ARCHIVE_BASE_WA_FR_0_SIZE='2800000' #ARCHIVE_BASE_WA_FR_0_VERSION='1.51-gog64626' ## Winter Assault (free demo) ARCHIVE_BASE_WA_DEMO_EN_0_NAME='Dawn of War - Winter Assault.rar' ARCHIVE_BASE_WA_DEMO_EN_0_MD5='555f5b3844c80866b0cb9fa536692380' ARCHIVE_BASE_WA_DEMO_EN_0_SIZE='480000' ARCHIVE_BASE_WA_DEMO_EN_0_VERSION='1.0-archiveorg1' ARCHIVE_BASE_WA_DEMO_EN_0_URL='https://archive.org/details/DawnOfWarWinterAssault_201404' ## Dark Crusade ARCHIVE_BASE_DC_EN_0_NAME='setup_warhammer_40000_dawn_of_war_-_dark_crusade_0.19_(64626).exe' ARCHIVE_BASE_DC_EN_0_MD5='e54248e3e006fa378e374a9a60f33418' ARCHIVE_BASE_DC_EN_0_TYPE='innosetup' ARCHIVE_BASE_DC_EN_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_dark_crusade_0.19_(64626)-1.bin' ARCHIVE_BASE_DC_EN_0_PART1_MD5='8830adc7aa004a800411b0f95919af5f' ARCHIVE_BASE_DC_EN_0_SIZE='4500000' ARCHIVE_BASE_DC_EN_0_VERSION='1.20-gog64626' ARCHIVE_BASE_DC_EN_0_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ARCHIVE_BASE_DC_FR_0_NAME='setup_warhammer_40000_dawn_of_war_-_dark_crusade_0.19_(french)_(64626).exe' ARCHIVE_BASE_DC_FR_0_MD5='5a254443909788b595baf16610809056' ARCHIVE_BASE_DC_FR_0_TYPE='innosetup' ARCHIVE_BASE_DC_FR_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_dark_crusade_0.19_(french)_(64626)-1.bin' ARCHIVE_BASE_DC_FR_0_PART1_MD5='0a64baaffaa392b9afd570a0a811cb2f' ARCHIVE_BASE_DC_FR_0_SIZE='4600000' ARCHIVE_BASE_DC_FR_0_VERSION='1.20-gog64626' ARCHIVE_BASE_DC_FR_0_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ## Soulstorm ARCHIVE_BASE_SS_EN_1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(64955).exe' ARCHIVE_BASE_SS_EN_1_MD5='8da443afebb589ca1f1b0100579325d2' ARCHIVE_BASE_SS_EN_1_TYPE='innosetup' ARCHIVE_BASE_SS_EN_1_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(64955)-1.bin' ARCHIVE_BASE_SS_EN_1_PART1_MD5='ac634ca5d861d3fc502325646cffbd83' ARCHIVE_BASE_SS_EN_1_PART2='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(64955)-2.bin' ARCHIVE_BASE_SS_EN_1_PART2_MD5='5c4cde5ecf4dae72bbdbc97a7659dbe5' ARCHIVE_BASE_SS_EN_1_SIZE='5458668' ARCHIVE_BASE_SS_EN_1_VERSION='1.2.0-gog64955' ARCHIVE_BASE_SS_EN_1_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ARCHIVE_BASE_SS_FR_1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(french)_(64955).exe' ARCHIVE_BASE_SS_FR_1_MD5='e2fd0c36f0b36a9ad06c10ff4d044478' ARCHIVE_BASE_SS_FR_1_TYPE='innosetup' ARCHIVE_BASE_SS_FR_1_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(french)_(64955)-1.bin' ARCHIVE_BASE_SS_FR_1_PART1_MD5='29203f3fc2424b33f3251e44fbe65d13' ARCHIVE_BASE_SS_FR_1_PART2='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(french)_(64955)-2.bin' ARCHIVE_BASE_SS_FR_1_PART2_MD5='6ad688745bba4fe353b1da9b330e956a' ARCHIVE_BASE_SS_FR_1_SIZE='5459544' ARCHIVE_BASE_SS_FR_1_VERSION='1.2.0-gog64955' ARCHIVE_BASE_SS_FR_1_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ARCHIVE_BASE_SS_EN_0_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(64626).exe' ARCHIVE_BASE_SS_EN_0_MD5='ccf68576db62f61c3d4967a1e66d3863' ARCHIVE_BASE_SS_EN_0_TYPE='innosetup' ARCHIVE_BASE_SS_EN_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(64626)-1.bin' ARCHIVE_BASE_SS_EN_0_PART1_MD5='944e2a30b2036dbfb37b1b649c370541' ARCHIVE_BASE_SS_EN_0_PART2_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(64626)-2.bin' ARCHIVE_BASE_SS_EN_0_PART2_MD5='949587a4ce461c4900636913ab53e5a1' ARCHIVE_BASE_SS_EN_0_SIZE='5500000' ARCHIVE_BASE_SS_EN_0_VERSION='1.2.0-gog64626' ARCHIVE_BASE_SS_FR_0_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(french)_(64626).exe' ARCHIVE_BASE_SS_FR_0_MD5='a652d618bdc2071ad476842939b63373' ARCHIVE_BASE_SS_FR_0_TYPE='innosetup' ARCHIVE_BASE_SS_FR_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(french)_(64626)-1.bin' ARCHIVE_BASE_SS_FR_0_PART1_MD5='3ffd1c39b68c984acb23263c9ffec133' ARCHIVE_BASE_SS_FR_0_PART2_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(french)_(64626)-2.bin' ARCHIVE_BASE_SS_FR_0_PART2_MD5='6ba9d30068b91823d838812c8930c8b3' ARCHIVE_BASE_SS_FR_0_SIZE='5500000' ARCHIVE_BASE_SS_FR_0_VERSION='1.2.0-gog64626' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bugreport *.dll *.exe *.ini' CONTENT_GAME_L10N_FILES=' bugreport/english bugreport/french dxp2/locale engine/locale graphicsoptions/locale w40k/locale wxp/locale regions.ini' CONTENT_GAME_DATA_FILES=' drivers dxp2 engine graphicsoptions patch w40k wxp *.dat *.module' CONTENT_DOC_L10N_FILES=' *.htm' USER_PERSISTENT_DIRECTORIES=' badges banners playback profiles screenshots stats' USER_PERSISTENT_FILES=' drivers/spdx9_config.txt local.ini' WINE_WINEPREFIX_TWEAKS='mono' ## Mono is not required by the Winter Assault demo. ## FIXME: ./play.it 2.29 has no context support for this variable, so the Mono archive is required anyway. WINE_WINEPREFIX_TWEAKS_WA_DEMO=' ' APP_MAIN_EXE_DOW='w40k.exe' APP_MAIN_EXE_WA='w40kwa.exe' APP_MAIN_EXE_WA_DEMO='winterassault.exe' APP_MAIN_EXE_DC='darkcrusade.exe' APP_MAIN_EXE_SS='soulstorm.exe' APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=101' APP_MAIN_ICON_WRESTOOL_OPTIONS_WA_DEMO='--type=14' ## Type must be set explicitly, ## or it will be wrongly identified as a Mono application. APP_MAIN_TYPE='wine' # Packages PACKAGES_LIST=' PKG_L10N PKG_BIN PKG_DATA' PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' ## Dawn of War (base game) PKG_L10N_ID_DOW="${GAME_ID}-l10n" PKG_L10N_ID_DOW_EN="${PKG_L10N_ID_DOW}-en" PKG_L10N_ID_DOW_FR="${PKG_L10N_ID_DOW}-fr" PKG_L10N_PROVIDES_DOW=" $PKG_L10N_ID_DOW" PKG_L10N_DESCRIPTION_DOW_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_DOW_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_DOW="${GAME_ID}-data" PKG_BIN_DEPS_DOW="$PKG_L10N_ID_DOW $PKG_DATA_ID_DOW" ## Winter Assault (full game) PKG_L10N_ID_WA="${GAME_ID_WA}-l10n" PKG_L10N_ID_WA_EN="${PKG_L10N_ID_WA}-en" PKG_L10N_ID_WA_FR="${PKG_L10N_ID_WA}-fr" PKG_L10N_PROVIDES_WA=" $PKG_L10N_ID_WA" PKG_L10N_DESCRIPTION_WA_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_WA_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_WA="${GAME_ID_WA}-data" PKG_BIN_DEPS_WA="$PKG_L10N_ID_WA $PKG_DATA_ID_WA" ## Winter Assault (free demo) PKG_L10N_ID_WA_DEMO="${GAME_ID_WA_DEMO}-l10n" PKG_L10N_ID_WA_DEMO_EN="${PKG_L10N_ID_WA_DEMO}-en" PKG_L10N_PROVIDES_WA_DEMO=" $PKG_L10N_ID_WA_DEMO" PKG_L10N_DESCRIPTION_WA_DEMO_EN="$PKG_L10N_DESCRIPTION_EN" PKG_DATA_ID_WA_DEMO="${GAME_ID_WA_DEMO}-data" PKG_BIN_DEPS_WA_DEMO="$PKG_L10N_ID_WA_DEMO $PKG_DATA_ID_WA_DEMO" ## Dark Crusade PKG_L10N_ID_DC="${GAME_ID_DC}-l10n" PKG_L10N_ID_DC_EN="${PKG_L10N_ID_DC}-en" PKG_L10N_ID_DC_FR="${PKG_L10N_ID_DC}-fr" PKG_L10N_PROVIDES_DC=" $PKG_L10N_ID_DC" PKG_L10N_DESCRIPTION_DC_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_DC_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_DC="${GAME_ID_DC}-data" PKG_BIN_DEPS_DC="$PKG_L10N_ID_DC $PKG_DATA_ID_DC" ## Soulstorm PKG_L10N_ID_SS="${GAME_ID_SS}-l10n" PKG_L10N_ID_SS_EN="${PKG_L10N_ID_SS}-en" PKG_L10N_ID_SS_FR="${PKG_L10N_ID_SS}-fr" PKG_L10N_PROVIDES_SS=" $PKG_L10N_ID_SS" PKG_L10N_DESCRIPTION_SS_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_SS_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_SS="${GAME_ID_SS}-data" PKG_BIN_DEPS_SS="$PKG_L10N_ID_SS $PKG_DATA_ID_SS" # Winter Assault (free demo) # - cabextract is required to extract the content of an inner archive # - unix2dos is required to generate a .ini file SCRIPT_DEPS_WA_DEMO="${SCRIPT_DEPS:-} cabextract unix2dos" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Check for the presence of archive-specific requirements SCRIPT_DEPS=$(context_value 'SCRIPT_DEPS') check_deps # FIXME: Work around ./play.it 2.29 lack of context support for WINE_WINEPREFIX_TWEAKS WINE_WINEPREFIX_TWEAKS=$(context_value 'WINE_WINEPREFIX_TWEAKS') # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Delete unwanted files. ## TODO: We should set a more explicit list of files to include to avoid that step. case "$(current_archive)" in ('ARCHIVE_BASE_WA_DEMO_'*) rm *.exe *.ini *.msi ;; (*) rm --force --recursive \ '__redist' \ 'app' \ 'commonappdata' \ 'tmp' ;; esac ) ## Winter Assault (free demo) - Extract game data from the cabinet installer. case "$(current_archive)" in ('ARCHIVE_BASE_WA_DEMO_'*) ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/WinterAssaultDemo1.cab" archive_extraction 'ARCHIVE_INNER' rm "$ARCHIVE_INNER_PATH" ;; esac ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Winter Assault (free demo) - Create the expected game arborescence. case "$(current_archive)" in ('ARCHIVE_BASE_WA_DEMO_'*) mkdir --parents \ 'badges' \ 'banners' \ 'bugreport/english' \ 'drivers' \ 'engine' \ 'engine/data' \ 'engine/locale/english' \ 'engine/movies' \ 'graphicsoptions/data' \ 'graphicsoptions/locale/english' \ 'logfiles' \ 'patch' \ 'playback' \ 'profiles' \ 'screenshots' \ 'stats' \ 'w40k' \ 'w40k/data' \ 'w40k/locale/english' \ 'wxp' \ 'wxp/data' \ 'wxp/locale/english' \ 'wxp/movies' mv 'bugreport.exe' 'bugreport/bugreport.exe' mv 'bugreport.ini' 'bugreport/bugreport.ini' mv 'bugreport.ucs' 'bugreport/english/bugreport.ucs' mv 'ati.txt' 'drivers/ati.txt' mv 'nvidia.txt' 'drivers/nvidia.txt' mv 'shader.txt' 'drivers/shader.txt' mv 'spdx9_config.txt' 'drivers/spdx9_config.txt' mv 'engine.sga' 'engine/engine.sga' mv 'engine.ucs' 'engine/locale/english/engine.ucs' mv 'enginloc.sga' 'engine/locale/english/enginloc.sga' mv 'dow_intro.avi' 'engine/movies/dow_intro.avi' mv 'dow_intro.lua' 'engine/movies/dow_intro.lua' mv 'dxp_relic_intro.avi' 'engine/movies/dxp_relic_intro.avi' mv 'dxp_relic_intro.lua' 'engine/movies/dxp_relic_intro.lua' mv 'gotdata.sga' 'graphicsoptions/gotdata.sga' mv 'graphicsoptionsutility.ucs' 'graphicsoptions/locale/english/graphicsoptionsutility.ucs' mv 'w40k.ucs' 'w40k/locale/english/w40k.ucs' mv 'w40kdatasoundspeech.sga' 'w40k/locale/english/w40kdata-sound-speech.sga' mv 'w40kdatakeys.sga' 'w40k/locale/english/w40kdatakeys.sga' mv 'w40kdataloc.sga' 'w40k/locale/english/w40kdataloc.sga' mv 'w40kdata.sga' 'w40k/w40kdata.sga' mv 'w40kdatasharedtexturesfull.sga' 'w40k/w40kdata-sharedtextures-full.sga' mv 'w40kdatasoundmed.sga' 'w40k/w40kdata-sound-med.sga' mv 'w40kdatawhmmedium.sga' 'w40k/w40kdata-whm-medium.sga' mv 'wxp.ucs' 'wxp/locale/english/wxp.ucs' mv 'wxpdatasoundspeech.sga' 'wxp/locale/english/wxpdata-sound-speech.sga' mv 'wxpdatakeys.sga' 'wxp/locale/english/wxpdatakeys.sga' mv 'wxpdataloc.sga' 'wxp/locale/english/wxpdataloc.sga' mv 'wxp_order.avi' 'wxp/movies/wxp_order.avi' mv 'wxp_order.lua' 'wxp/movies/wxp_order.lua' mv 'wxpdata.sga' 'wxp/wxpdata.sga' mv 'wxpdatamusic.sga' 'wxp/wxpdata-music.sga' mv 'wxpdatasharedtexturesfull.sga' 'wxp/wxpdata-sharedtextures-full.sga' mv 'wxpdatasoundmed.sga' 'wxp/wxpdata-sound-med.sga' mv 'wxpdatawhmmedium.sga' 'wxp/wxpdata-whm-medium.sga' ;; esac ## Prevent mouse cursor flickering. sed_pattern='allowhwcursor 1' sed_replacement='allowhwcursor 0' sed_expression="s/${sed_pattern}/${sed_replacement}/" sed --in-place --expression="$sed_expression" 'drivers/spdx9_config.txt' ## Winter Assault (free demo) - Generate a required configuration file. case "$(current_archive)" in ('ARCHIVE_BASE_WA_DEMO_'*) config_file="${PLAYIT_WORKDIR}/gamedata/regions.ini" cat > "$config_file" <<- 'EOF' [mods] wxp=english [global] lang=english EOF unix2dos --quiet "$config_file" ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warhammer-40k-gladius-expansions-extra.sh0000755000000000000000000000641714471751340021503 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Warhammer 40k: Gladius expansions (extra content): # - Lord of Skulls ### script_version=20240627.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='warhammer-40k-gladius' GAME_NAME='Warhammer 40,000: Gladius' EXPANSION_ID_LORDOFSKULLS='lord-of-skulls' EXPANSION_NAME_LORDOFSKULLS='Lord of Skulls' # Archives ## Lord of Skulls ARCHIVE_BASE_LORDOFSKULLS_18_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_14_00_73692.sh' ARCHIVE_BASE_LORDOFSKULLS_18_MD5='c5005b4ba055899457848a0cdfaa6fff' ARCHIVE_BASE_LORDOFSKULLS_18_SIZE='' ARCHIVE_BASE_LORDOFSKULLS_18_VERSION='1.14.0-gog73692' ARCHIVE_BASE_LORDOFSKULLS_18_URL='https://www.gog.com/game/warhammer_40000_gladius_relics_of_war_lord_of_skulls' ARCHIVE_BASE_LORDOFSKULLS_17_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_13_03_72014.sh' ARCHIVE_BASE_LORDOFSKULLS_17_MD5='4e14b2240bb38489dad212e05cbadba3' ARCHIVE_BASE_LORDOFSKULLS_17_SIZE='1086' ARCHIVE_BASE_LORDOFSKULLS_17_VERSION='1.13.3-gog72014' ARCHIVE_BASE_LORDOFSKULLS_14_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_12_03_67548.sh' ARCHIVE_BASE_LORDOFSKULLS_14_MD5='b0481ff1c15b0393bfd7c1b1c8d80709' ARCHIVE_BASE_LORDOFSKULLS_14_SIZE='1400' ARCHIVE_BASE_LORDOFSKULLS_14_VERSION='1.12.3-gog67548' ARCHIVE_BASE_LORDOFSKULLS_11_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_11_04_64361.sh' ARCHIVE_BASE_LORDOFSKULLS_11_MD5='82bf8335b67ecfc66ca0a58abfee40b6' ARCHIVE_BASE_LORDOFSKULLS_11_SIZE='1400' ARCHIVE_BASE_LORDOFSKULLS_11_VERSION='1.11.4-gog64361' ARCHIVE_BASE_LORDOFSKULLS_6_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_10_01_00_57375.sh' ARCHIVE_BASE_LORDOFSKULLS_6_MD5='ad8818e83aec830eb11385cfbf1c3d10' ARCHIVE_BASE_LORDOFSKULLS_6_SIZE='1400' ARCHIVE_BASE_LORDOFSKULLS_6_VERSION='1.10.01-gog57375' ARCHIVE_BASE_LORDOFSKULLS_4_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_v1_09_03_00_54377.sh' ARCHIVE_BASE_LORDOFSKULLS_4_MD5='a3e949e976d3248ea338a4555454c804' ARCHIVE_BASE_LORDOFSKULLS_4_SIZE='1400' ARCHIVE_BASE_LORDOFSKULLS_4_VERSION='1.9.3.0-gog54377' ARCHIVE_BASE_LORDOFSKULLS_2_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_08_04_01_49548.sh' ARCHIVE_BASE_LORDOFSKULLS_2_MD5='a5cad7f6b77e112e10172709f531bb76' ARCHIVE_BASE_LORDOFSKULLS_2_SIZE='1400' ARCHIVE_BASE_LORDOFSKULLS_2_VERSION='1.8.4.1-gog49548' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' Data/*.dlc' PKG_MAIN_DEPS="$GAME_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warhammer-40k-gladius-expansions-units-packs.sh0000755000000000000000000002456114471751340022621 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Warhammer 40k: Gladius expansions (units packs): # - Reinforcement # - Fortification # - Specialist # - Escalation # - Firepower ### script_version=20240627.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='warhammer-40k-gladius' GAME_NAME='Warhammer 40,000: Gladius' EXPANSION_ID_REINFORCEMENT='reinforcement-pack' EXPANSION_NAME_REINFORCEMENT='Reinforcement Pack' EXPANSION_ID_FORTIFICATION='fortification-pack' EXPANSION_NAME_FORTIFICATION='Fortification Pack' EXPANSION_ID_ASSAULT='assault-pack' EXPANSION_NAME_ASSAULT='Assault Pack' EXPANSION_ID_SPECIALIST='specialist-pack' EXPANSION_NAME_SPECIALIST='Specialist Pack' EXPANSION_ID_ESCALATION='escalation-pack' EXPANSION_NAME_ESCALATION='Escalation Pack' EXPANSION_ID_FIREPOWER='firepower-pack' EXPANSION_NAME_FIREPOWER='Firepower Pack' # Archives ## Reinforcement ARCHIVE_BASE_REINFORCEMENT_19_NAME='warhammer_40_000_gladius_reinforcement_pack_1_14_00_73692.sh' ARCHIVE_BASE_REINFORCEMENT_19_MD5='5f06d70d46bae16ee09ae1f7239cb0fe' ARCHIVE_BASE_REINFORCEMENT_19_SIZE='1086' ARCHIVE_BASE_REINFORCEMENT_19_VERSION='1.14.0-gog73692' ARCHIVE_BASE_REINFORCEMENT_19_URL='https://www.gog.com/game/warhammer_40000_gladius_reinforcement_pack' ARCHIVE_BASE_REINFORCEMENT_18_NAME='warhammer_40_000_gladius_reinforcement_pack_1_13_03_72014.sh' ARCHIVE_BASE_REINFORCEMENT_18_MD5='f7d2e11be209a004bc4d1f666ab18875' ARCHIVE_BASE_REINFORCEMENT_18_SIZE='1086' ARCHIVE_BASE_REINFORCEMENT_18_VERSION='1.13.3-gog72014' ARCHIVE_BASE_REINFORCEMENT_15_NAME='warhammer_40_000_gladius_reinforcement_pack_1_12_03_67548.sh' ARCHIVE_BASE_REINFORCEMENT_15_MD5='290f8f6e2a054d2fcc543318b3636063' ARCHIVE_BASE_REINFORCEMENT_15_SIZE='1400' ARCHIVE_BASE_REINFORCEMENT_15_VERSION='1.12.3-gog67548' ARCHIVE_BASE_REINFORCEMENT_12_NAME='warhammer_40_000_gladius_reinforcement_pack_1_11_04_64361.sh' ARCHIVE_BASE_REINFORCEMENT_12_MD5='145f5a09d46543718f8bcc8b643f6807' ARCHIVE_BASE_REINFORCEMENT_12_SIZE='1400' ARCHIVE_BASE_REINFORCEMENT_12_VERSION='1.11.4-gog64361' ARCHIVE_BASE_REINFORCEMENT_7_NAME='warhammer_40_000_gladius_reinforcement_pack_1_10_01_00_57375.sh' ARCHIVE_BASE_REINFORCEMENT_7_MD5='59ac7359ac72a1f40f5ba237fcee8698' ARCHIVE_BASE_REINFORCEMENT_7_SIZE='1400' ARCHIVE_BASE_REINFORCEMENT_7_VERSION='1.10.01-gog57375' ARCHIVE_BASE_REINFORCEMENT_5_NAME='warhammer_40_000_gladius_reinforcement_pack_v1_09_03_00_54377.sh' ARCHIVE_BASE_REINFORCEMENT_5_MD5='20cce6c9a3a012a4b2d3fda7101606f4' ARCHIVE_BASE_REINFORCEMENT_5_SIZE='1400' ARCHIVE_BASE_REINFORCEMENT_5_VERSION='1.9.3.0-gog54377' ARCHIVE_BASE_REINFORCEMENT_3_NAME='warhammer_40_000_gladius_reinforcement_pack_1_08_04_01_49548.sh' ARCHIVE_BASE_REINFORCEMENT_3_MD5='72e9d71403328df72d4505096c98c423' ARCHIVE_BASE_REINFORCEMENT_3_SIZE='1400' ARCHIVE_BASE_REINFORCEMENT_3_VERSION='1.8.4.1-gog49548' ARCHIVE_BASE_REINFORCEMENT_0_NAME='warhammer_40_000_gladius_reinforcement_pack_1_07_04_44200.sh' ARCHIVE_BASE_REINFORCEMENT_0_MD5='013e6db4458c5fe0c39b3a33bdda68e5' ARCHIVE_BASE_REINFORCEMENT_0_SIZE='1400' ARCHIVE_BASE_REINFORCEMENT_0_VERSION='1.7.4-gog44200' ## Fortification ARCHIVE_BASE_FORTIFICATION_18_NAME='warhammer_40_000_gladius_fortification_pack_1_14_00_73692.sh' ARCHIVE_BASE_FORTIFICATION_18_MD5='2bf88e8ad8d905851467212e835afe2b' ARCHIVE_BASE_FORTIFICATION_18_SIZE='1086' ARCHIVE_BASE_FORTIFICATION_18_VERSION='1.14.0-gog73692' ARCHIVE_BASE_FORTIFICATION_18_URL='https://www.gog.com/game/warhammer_40000_gladius_fortification_pack' ARCHIVE_BASE_FORTIFICATION_17_NAME='warhammer_40_000_gladius_fortification_pack_1_13_03_72014.sh' ARCHIVE_BASE_FORTIFICATION_17_MD5='8c9b997c2dfb6e141db5e02f7b519c93' ARCHIVE_BASE_FORTIFICATION_17_SIZE='1086' ARCHIVE_BASE_FORTIFICATION_17_VERSION='1.13.3-gog72014' ARCHIVE_BASE_FORTIFICATION_14_NAME='warhammer_40_000_gladius_fortification_pack_1_12_03_67548.sh' ARCHIVE_BASE_FORTIFICATION_14_MD5='32c26b39aaa8329f20bddccc4059a257' ARCHIVE_BASE_FORTIFICATION_14_SIZE='1400' ARCHIVE_BASE_FORTIFICATION_14_VERSION='1.12.3-gog67548' ARCHIVE_BASE_FORTIFICATION_11_NAME='warhammer_40_000_gladius_fortification_pack_1_11_04_64361.sh' ARCHIVE_BASE_FORTIFICATION_11_MD5='90d66263e66f30aa7c6df35ec2b0d276' ARCHIVE_BASE_FORTIFICATION_11_SIZE='1400' ARCHIVE_BASE_FORTIFICATION_11_VERSION='1.11.4-gog64361' ARCHIVE_BASE_FORTIFICATION_6_NAME='warhammer_40_000_gladius_fortification_pack_1_10_01_00_57375.sh' ARCHIVE_BASE_FORTIFICATION_6_MD5='859c6d14d76a4b1a43880ea89e01ed27' ARCHIVE_BASE_FORTIFICATION_6_SIZE='1400' ARCHIVE_BASE_FORTIFICATION_6_VERSION='1.10.01-gog57375' ARCHIVE_BASE_FORTIFICATION_4_NAME='warhammer_40_000_gladius_fortification_pack_v1_09_03_00_54377.sh' ARCHIVE_BASE_FORTIFICATION_4_MD5='4221b279557e7af587ec6207f8654071' ARCHIVE_BASE_FORTIFICATION_4_SIZE='1400' ARCHIVE_BASE_FORTIFICATION_4_VERSION='1.9.3.0-gog54377' ARCHIVE_BASE_FORTIFICATION_2_NAME='warhammer_40_000_gladius_fortification_pack_1_08_04_01_49548.sh' ARCHIVE_BASE_FORTIFICATION_2_MD5='d485b048b4c1d391c7671ecc4c88e66d' ARCHIVE_BASE_FORTIFICATION_2_SIZE='1400' ARCHIVE_BASE_FORTIFICATION_2_VERSION='1.8.4.1-gog49548' ## Assault ARCHIVE_BASE_ASSAULT_15_NAME='warhammer_40_000_gladius_assault_pack_1_14_00_73692.sh' ARCHIVE_BASE_ASSAULT_15_MD5='13243c15668b4cbf6c1bbc3a7fc63b64' ARCHIVE_BASE_ASSAULT_15_SIZE='1086' ARCHIVE_BASE_ASSAULT_15_VERSION='1.14.0-gog73692' ARCHIVE_BASE_ASSAULT_15_URL='https://www.gog.com/game/warhammer_40000_gladius_assault_pack' ARCHIVE_BASE_ASSAULT_14_NAME='warhammer_40_000_gladius_assault_pack_1_13_03_72014.sh' ARCHIVE_BASE_ASSAULT_14_MD5='f0c6a21687fbcad8442f5bb1c835b1aa' ARCHIVE_BASE_ASSAULT_14_SIZE='1086' ARCHIVE_BASE_ASSAULT_14_VERSION='1.13.3-gog72014' ARCHIVE_BASE_ASSAULT_11_NAME='warhammer_40_000_gladius_assault_pack_1_12_03_67548.sh' ARCHIVE_BASE_ASSAULT_11_MD5='9e56693f4d1623a9c7dcc9c2cf63a59a' ARCHIVE_BASE_ASSAULT_11_SIZE='1400' ARCHIVE_BASE_ASSAULT_11_VERSION='1.12.3-gog67548' ARCHIVE_BASE_ASSAULT_8_NAME='warhammer_40_000_gladius_assault_pack_1_11_04_64361.sh' ARCHIVE_BASE_ASSAULT_8_MD5='aae3f873d640d36f3821921efb7525c2' ARCHIVE_BASE_ASSAULT_8_SIZE='1400' ARCHIVE_BASE_ASSAULT_8_VERSION='1.11.4-gog64361' ARCHIVE_BASE_ASSAULT_3_NAME='warhammer_40_000_gladius_assault_pack_1_10_01_00_57375.sh' ARCHIVE_BASE_ASSAULT_3_MD5='69d3d257e8caa70c7af8bd50b6963e0a' ARCHIVE_BASE_ASSAULT_3_SIZE='1400' ARCHIVE_BASE_ASSAULT_3_VERSION='1.10.01-gog57375' ARCHIVE_BASE_ASSAULT_1_NAME='warhammer_40_000_gladius_assault_pack_v1_09_03_00_54377.sh' ARCHIVE_BASE_ASSAULT_1_MD5='8812a45df8fa62523f655ecc2a1dbd46' ARCHIVE_BASE_ASSAULT_1_SIZE='1400' ARCHIVE_BASE_ASSAULT_1_VERSION='1.9.3.0-gog54377' ## Specialist ARCHIVE_BASE_SPECIALIST_13_NAME='warhammer_40_000_gladius_specialist_pack_1_14_00_73692.sh' ARCHIVE_BASE_SPECIALIST_13_MD5='9ba78294300ee82890e2f15121a6f5d5' ARCHIVE_BASE_SPECIALIST_13_SIZE='1086' ARCHIVE_BASE_SPECIALIST_13_VERSION='1.14.0-gog73692' ARCHIVE_BASE_SPECIALIST_13_URL='https://www.gog.com/game/warhammer_40000_gladius_specialist_pack' ARCHIVE_BASE_SPECIALIST_12_NAME='warhammer_40_000_gladius_specialist_pack_1_13_03_72014.sh' ARCHIVE_BASE_SPECIALIST_12_MD5='065713713aaa72418d048a20dcd9203e' ARCHIVE_BASE_SPECIALIST_12_SIZE='1086' ARCHIVE_BASE_SPECIALIST_12_VERSION='1.13.3-gog72014' ARCHIVE_BASE_SPECIALIST_9_NAME='warhammer_40_000_gladius_specialist_pack_1_12_03_67548.sh' ARCHIVE_BASE_SPECIALIST_9_MD5='f8e1aaacc5a30496abae99c8a6965799' ARCHIVE_BASE_SPECIALIST_9_SIZE='1400' ARCHIVE_BASE_SPECIALIST_9_VERSION='1.12.3-gog67548' ARCHIVE_BASE_SPECIALIST_6_NAME='warhammer_40_000_gladius_specialist_pack_1_11_04_64361.sh' ARCHIVE_BASE_SPECIALIST_6_MD5='5f44ab4c03bf70047e6716000a29f910' ARCHIVE_BASE_SPECIALIST_6_SIZE='1400' ARCHIVE_BASE_SPECIALIST_6_VERSION='1.11.4-gog64361' ARCHIVE_BASE_SPECIALIST_1_NAME='warhammer_40_000_gladius_specialist_pack_1_10_01_00_57375.sh' ARCHIVE_BASE_SPECIALIST_1_MD5='b0b788d180a82919048621796f68fb1e' ARCHIVE_BASE_SPECIALIST_1_SIZE='1400' ARCHIVE_BASE_SPECIALIST_1_VERSION='1.10.01-gog57375' ## Escalation ARCHIVE_BASE_ESCALATION_6_NAME='warhammer_40_000_gladius_escalation_pack_1_14_00_73692.sh' ARCHIVE_BASE_ESCALATION_6_MD5='ace7d3fad7f621f27e6d12f7e7cdc584' ARCHIVE_BASE_ESCALATION_6_SIZE='1086' ARCHIVE_BASE_ESCALATION_6_VERSION='1.14.0-gog73692' ARCHIVE_BASE_ESCALATION_6_URL='https://www.gog.com/game/warhammer_40000_gladius_adeptus_mechanicus' ARCHIVE_BASE_ESCALATION_5_NAME='warhammer_40_000_gladius_escalation_pack_1_13_03_72014.sh' ARCHIVE_BASE_ESCALATION_5_MD5='5dba4c9a1719723682a2857b44dce0c5' ARCHIVE_BASE_ESCALATION_5_SIZE='1086' ARCHIVE_BASE_ESCALATION_5_VERSION='1.13.3-gog72014' ARCHIVE_BASE_ESCALATION_2_NAME='warhammer_40_000_gladius_escalation_pack_1_12_03_67548.sh' ARCHIVE_BASE_ESCALATION_2_MD5='ce318c4cc0ee526f1abcd18ddbd4937c' ARCHIVE_BASE_ESCALATION_2_SIZE='1400' ARCHIVE_BASE_ESCALATION_2_VERSION='1.12.3-gog67548' ## Firepower ARCHIVE_BASE_FIREPOWER_5_NAME='warhammer_40_000_gladius_firepower_pack_1_14_00_73692.sh' ARCHIVE_BASE_FIREPOWER_5_MD5='d75e09b23b6d204e62c5f96dddcc371d' ARCHIVE_BASE_FIREPOWER_5_SIZE='1086' ARCHIVE_BASE_FIREPOWER_5_VERSION='1.14.0-gog73692' ARCHIVE_BASE_FIREPOWER_5_URL='https://www.gog.com/game/warhammer_40000_gladius_firepower_pack' ARCHIVE_BASE_FIREPOWER_4_NAME='warhammer_40_000_gladius_firepower_pack_1_13_03_72014.sh' ARCHIVE_BASE_FIREPOWER_4_MD5='813f40d7fbce991eae9db43aad552a4e' ARCHIVE_BASE_FIREPOWER_4_SIZE='1086' ARCHIVE_BASE_FIREPOWER_4_VERSION='1.13.3-gog72014' ARCHIVE_BASE_FIREPOWER_1_NAME='warhammer_40_000_gladius_firepower_pack_1_12_03_67548.sh' ARCHIVE_BASE_FIREPOWER_1_MD5='4f5adaaf42d40278df28bae531313c1d' ARCHIVE_BASE_FIREPOWER_1_SIZE='1400' ARCHIVE_BASE_FIREPOWER_1_VERSION='1.12.3-gog67548' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' Data/*.dlc' PKG_MAIN_DEPS="$GAME_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warhammer-40k-gladius-expansions.sh0000755000000000000000000002446214471751340020362 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Warhammer 40k: Gladius expansions: # - Tyranids # - Chaos Space Marines # - T'au # - Craftworld Aeldari # - Adeptus Mechanicus # - Adepta Sororitas # - Drukhari ### script_version=20240627.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='warhammer-40k-gladius' GAME_NAME='Warhammer 40,000: Gladius' EXPANSION_ID_TYRANIDS='tyranids' EXPANSION_NAME_TYRANIDS='Tyranids' EXPANSION_ID_CHAOS='chaos-space-marines' EXPANSION_NAME_CHAOS='Chaos Space Marines' EXPANSION_ID_TAU='tau' EXPANSION_NAME_TAU='Tʼau' EXPANSION_ID_AELDARI='craftworld-aeldari' EXPANSION_NAME_AELDARI='Craftworld Aeldari' EXPANSION_ID_MECHANICUS='adeptus-mechanicus' EXPANSION_NAME_MECHANICUS='Adeptus Mechanicus' EXPANSION_ID_SORORITAS='adepta-sororitas' EXPANSION_NAME_SORORITAS='Adepta Sororitas' EXPANSION_ID_DRUKHARI='drukhari' EXPANSION_NAME_DRUKHARI='Drukhari' # Archives ## Tyranids ARCHIVE_BASE_TYRANIDS_19_NAME='warhammer_40_000_gladius_tyranids_1_14_00_73692.sh' ARCHIVE_BASE_TYRANIDS_19_MD5='0c29f27eef9ab4f90c8bc03a755fcbc7' ARCHIVE_BASE_TYRANIDS_19_SIZE='' ARCHIVE_BASE_TYRANIDS_19_VERSION='1.14.0-gog73692' ARCHIVE_BASE_TYRANIDS_19_URL='https://www.gog.com/game/warhammer_40000_gladius_tyranids' ARCHIVE_BASE_TYRANIDS_18_NAME='warhammer_40_000_gladius_tyranids_1_13_03_72014.sh' ARCHIVE_BASE_TYRANIDS_18_MD5='1126da61c9bdc27a4c9c4cc9444ff87d' ARCHIVE_BASE_TYRANIDS_18_SIZE='1086' ARCHIVE_BASE_TYRANIDS_18_VERSION='1.13.3-gog72014' ARCHIVE_BASE_TYRANIDS_15_NAME='warhammer_40_000_gladius_tyranids_1_12_03_67548.sh' ARCHIVE_BASE_TYRANIDS_15_MD5='6fd672b4230bceebc496e7ce7aa455b4' ARCHIVE_BASE_TYRANIDS_15_SIZE='1400' ARCHIVE_BASE_TYRANIDS_15_VERSION='1.12.3-gog67548' ARCHIVE_BASE_TYRANIDS_12_NAME='warhammer_40_000_gladius_tyranids_1_11_04_64361.sh' ARCHIVE_BASE_TYRANIDS_12_MD5='53da0257c7ae0ca6c4b2712a70f8b666' ARCHIVE_BASE_TYRANIDS_12_SIZE='1400' ARCHIVE_BASE_TYRANIDS_12_VERSION='1.11.4-gog64361' ARCHIVE_BASE_TYRANIDS_7_NAME='warhammer_40_000_gladius_tyranids_1_10_01_00_57375.sh' ARCHIVE_BASE_TYRANIDS_7_MD5='30934475a2b0c8f794234d5e38f504cc' ARCHIVE_BASE_TYRANIDS_7_SIZE='1400' ARCHIVE_BASE_TYRANIDS_7_VERSION='1.10.01-gog57375' ARCHIVE_BASE_TYRANIDS_5_NAME='warhammer_40_000_gladius_tyranids_v1_09_03_00_54377.sh' ARCHIVE_BASE_TYRANIDS_5_MD5='ac2e7f57d90a405688304573e6332443' ARCHIVE_BASE_TYRANIDS_5_SIZE='1400' ARCHIVE_BASE_TYRANIDS_5_VERSION='1.9.3.0-gog54377' ARCHIVE_BASE_TYRANIDS_3_NAME='warhammer_40_000_gladius_tyranids_1_08_04_01_49548.sh' ARCHIVE_BASE_TYRANIDS_3_MD5='a6e5921db60b6a366619354b1eb47d23' ARCHIVE_BASE_TYRANIDS_3_SIZE='1400' ARCHIVE_BASE_TYRANIDS_3_VERSION='1.8.4.1-gog49548' ARCHIVE_BASE_TYRANIDS_0_NAME='warhammer_40_000_gladius_tyranids_1_07_04_44200.sh' ARCHIVE_BASE_TYRANIDS_0_MD5='c6c04852f1a3128dbfa267c89f1c9626' ARCHIVE_BASE_TYRANIDS_0_SIZE='1400' ARCHIVE_BASE_TYRANIDS_0_VERSION='1.7.4-gog44200' ## Chaos Space Marines ARCHIVE_BASE_CHAOS_18_NAME='warhammer_40_000_gladius_chaos_space_marines_1_14_00_73692.sh' ARCHIVE_BASE_CHAOS_18_MD5='51e52611615ec0bde7ad5a549c9cbc71' ARCHIVE_BASE_CHAOS_18_SIZE='' ARCHIVE_BASE_CHAOS_18_VERSION='1.14.0-gog73692' ARCHIVE_BASE_CHAOS_18_URL='https://www.gog.com/game/warhammer_40000_gladius_chaos_space_marines' ARCHIVE_BASE_CHAOS_17_NAME='warhammer_40_000_gladius_chaos_space_marines_1_13_03_72014.sh' ARCHIVE_BASE_CHAOS_17_MD5='a7c63aa885dd1a5b51b2b5a3d55d4e21' ARCHIVE_BASE_CHAOS_17_SIZE='1086' ARCHIVE_BASE_CHAOS_17_VERSION='1.13.3-gog72014' ARCHIVE_BASE_CHAOS_14_NAME='warhammer_40_000_gladius_chaos_space_marines_1_12_03_67548.sh' ARCHIVE_BASE_CHAOS_14_MD5='5103e5a13f5e04f6a0d4ce2124ae9b8f' ARCHIVE_BASE_CHAOS_14_SIZE='1400' ARCHIVE_BASE_CHAOS_14_VERSION='1.12.3-gog67548' ARCHIVE_BASE_CHAOS_11_NAME='warhammer_40_000_gladius_chaos_space_marines_1_11_04_64361.sh' ARCHIVE_BASE_CHAOS_11_MD5='2c613e93f92197efb004a4d590f6412e' ARCHIVE_BASE_CHAOS_11_SIZE='1400' ARCHIVE_BASE_CHAOS_11_VERSION='1.11.4-gog64361' ARCHIVE_BASE_CHAOS_6_NAME='warhammer_40_000_gladius_chaos_space_marines_1_10_01_00_57375.sh' ARCHIVE_BASE_CHAOS_6_MD5='88542a8341638e1d51e2758c9886e2c6' ARCHIVE_BASE_CHAOS_6_SIZE='1400' ARCHIVE_BASE_CHAOS_6_VERSION='1.10.01-gog57375' ARCHIVE_BASE_CHAOS_4_NAME='warhammer_40_000_gladius_chaos_space_marines_v1_09_03_00_54377.sh' ARCHIVE_BASE_CHAOS_4_MD5='ed2c64df977669d9413648347c883a35' ARCHIVE_BASE_CHAOS_4_SIZE='1400' ARCHIVE_BASE_CHAOS_4_VERSION='1.9.3.0-gog54377' ARCHIVE_BASE_CHAOS_2_NAME='warhammer_40_000_gladius_chaos_space_marines_1_08_04_01_49548.sh' ARCHIVE_BASE_CHAOS_2_MD5='37894d5cd89aaa67dc841d2f5023ebf2' ARCHIVE_BASE_CHAOS_2_SIZE='1400' ARCHIVE_BASE_CHAOS_2_VERSION='1.8.4.1-gog49548' ## T'au ARCHIVE_BASE_TAU_15_NAME='warhammer_40_000_gladius_t_au_1_14_00_73692.sh' ARCHIVE_BASE_TAU_15_MD5='8f6527c12166f5e70287c01915511bfd' ARCHIVE_BASE_TAU_15_SIZE='' ARCHIVE_BASE_TAU_15_VERSION='1.14.0-gog73692' ARCHIVE_BASE_TAU_15_URL='https://www.gog.com/game/warhammer_40000_gladius_tau' ARCHIVE_BASE_TAU_14_NAME='warhammer_40_000_gladius_t_au_1_13_03_72014.sh' ARCHIVE_BASE_TAU_14_MD5='cc6b1b472357aafe1a92906dbac6ce56' ARCHIVE_BASE_TAU_14_SIZE='1086' ARCHIVE_BASE_TAU_14_VERSION='1.13.3-gog72014' ARCHIVE_BASE_TAU_11_NAME='warhammer_40_000_gladius_t_au_1_12_03_67548.sh' ARCHIVE_BASE_TAU_11_MD5='c0dd6e15c253f1b58a0d596fec8d1531' ARCHIVE_BASE_TAU_11_SIZE='1396' ARCHIVE_BASE_TAU_11_VERSION='1.12.3-gog67548' ARCHIVE_BASE_TAU_8_NAME='warhammer_40_000_gladius_t_au_1_11_04_64361.sh' ARCHIVE_BASE_TAU_8_MD5='b8d20922d142704e61dbb8dbe83ce2b0' ARCHIVE_BASE_TAU_8_SIZE='1400' ARCHIVE_BASE_TAU_8_VERSION='1.11.4-gog64361' ARCHIVE_BASE_TAU_3_NAME='warhammer_40_000_gladius_t_au_1_10_01_00_57375.sh' ARCHIVE_BASE_TAU_3_MD5='1f7770a75d1c846aca32f905cd4ce51f' ARCHIVE_BASE_TAU_3_SIZE='1400' ARCHIVE_BASE_TAU_3_VERSION='1.10.01-gog57375' ARCHIVE_BASE_TAU_1_NAME='warhammer_40_000_gladius_t_au_v1_09_03_00_54377.sh' ARCHIVE_BASE_TAU_1_MD5='22b575c6ce8da35f7d57335662de4747' ARCHIVE_BASE_TAU_1_SIZE='1400' ARCHIVE_BASE_TAU_1_VERSION='1.9.3.0-gog54377' ## Craftworld Aeldari ARCHIVE_BASE_AELDARI_13_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_14_00_73692.sh' ARCHIVE_BASE_AELDARI_13_MD5='ed2a02564d5f289dcb171cc65db63e06' ARCHIVE_BASE_AELDARI_13_SIZE='' ARCHIVE_BASE_AELDARI_13_VERSION='1.14.0-gog73692' ARCHIVE_BASE_AELDARI_13_URL='https://www.gog.com/game/warhammer_40000_gladius_craftworld_aeldari' ARCHIVE_BASE_AELDARI_12_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_13_03_72014.sh' ARCHIVE_BASE_AELDARI_12_MD5='18e5d21d0d2b202d746de192cc4370da' ARCHIVE_BASE_AELDARI_12_SIZE='1086' ARCHIVE_BASE_AELDARI_12_VERSION='1.13.3-gog72014' ARCHIVE_BASE_AELDARI_9_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_12_03_67548.sh' ARCHIVE_BASE_AELDARI_9_MD5='a9ed6a70658299ab82d2934f7b572151' ARCHIVE_BASE_AELDARI_9_SIZE='1400' ARCHIVE_BASE_AELDARI_9_VERSION='1.12.3-gog67548' ARCHIVE_BASE_AELDARI_6_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_11_04_64361.sh' ARCHIVE_BASE_AELDARI_6_MD5='2c2b76c50ee3d7c29fd24c8aea0fe6e0' ARCHIVE_BASE_AELDARI_6_SIZE='1400' ARCHIVE_BASE_AELDARI_6_VERSION='1.11.4-gog64361' ARCHIVE_BASE_AELDARI_1_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_10_01_00_57375.sh' ARCHIVE_BASE_AELDARI_1_MD5='b3698a59f99611fb8431a76ea50ef35d' ARCHIVE_BASE_AELDARI_1_SIZE='1400' ARCHIVE_BASE_AELDARI_1_VERSION='1.10.01-gog57375' ## Adeptus Mechanicus ARCHIVE_BASE_MECHANICUS_6_NAME='warhammer_40_000_gladius_adeptus_mechanicus_1_14_00_73692.sh' ARCHIVE_BASE_MECHANICUS_6_MD5='bb01fdebd083135d288c4b25f7e79552' ARCHIVE_BASE_MECHANICUS_6_SIZE='' ARCHIVE_BASE_MECHANICUS_6_VERSION='1.14.0-gog73692' ARCHIVE_BASE_MECHANICUS_6_URL='https://www.gog.com/game/warhammer_40000_gladius_adeptus_mechanicus' ARCHIVE_BASE_MECHANICUS_5_NAME='warhammer_40_000_gladius_adeptus_mechanicus_1_13_03_72014.sh' ARCHIVE_BASE_MECHANICUS_5_MD5='7670878de137f0de17cdae93ded39f09' ARCHIVE_BASE_MECHANICUS_5_SIZE='1086' ARCHIVE_BASE_MECHANICUS_5_VERSION='1.13.3-gog72014' ARCHIVE_BASE_MECHANICUS_2_NAME='warhammer_40_000_gladius_adeptus_mechanicus_1_12_03_67548.sh' ARCHIVE_BASE_MECHANICUS_2_MD5='0be493045812d7ee50c5c7846b60151e' ARCHIVE_BASE_MECHANICUS_2_SIZE='1400' ARCHIVE_BASE_MECHANICUS_2_VERSION='1.12.3-gog67548' ## Adepta Sororitas ARCHIVE_BASE_SORORITAS_5_NAME='warhammer_40_000_gladius_adepta_sororitas_1_14_00_73692.sh' ARCHIVE_BASE_SORORITAS_5_MD5='fa6c13cdbc344de227d2468f7fadfe42' ARCHIVE_BASE_SORORITAS_5_SIZE='' ARCHIVE_BASE_SORORITAS_5_VERSION='1.14.0-gog73692' ARCHIVE_BASE_SORORITAS_5_URL='https://www.gog.com/game/warhammer_40000_gladius_adepta_sororitas' ARCHIVE_BASE_SORORITAS_4_NAME='warhammer_40_000_gladius_adepta_sororitas_1_13_03_72014.sh' ARCHIVE_BASE_SORORITAS_4_MD5='6d588bac7b0e51c140f8cbb888b8de61' ARCHIVE_BASE_SORORITAS_4_SIZE='1086' ARCHIVE_BASE_SORORITAS_4_VERSION='1.13.3-gog72014' ARCHIVE_BASE_SORORITAS_1_NAME='warhammer_40_000_gladius_adepta_sororitas_1_12_03_67548.sh' ARCHIVE_BASE_SORORITAS_1_MD5='1c69d1ce8301b0fb42f10718a4271761' ARCHIVE_BASE_SORORITAS_1_SIZE='1400' ARCHIVE_BASE_SORORITAS_1_VERSION='1.12.3-gog67548' ## Drukhari ARCHIVE_BASE_DRUKHARI_2_NAME='warhammer_40_000_gladius_drukhari_1_14_00_73692.sh' ARCHIVE_BASE_DRUKHARI_2_MD5='119befb3c9614d3921d25627723a3765' ARCHIVE_BASE_DRUKHARI_2_SIZE='' ARCHIVE_BASE_DRUKHARI_2_VERSION='1.14.0-gog73692' ARCHIVE_BASE_DRUKHARI_2_URL='https://www.gog.com/game/warhammer_40000_gladius_drukhari' ARCHIVE_BASE_DRUKHARI_1_NAME='warhammer_40_000_gladius_drukhari_1_13_03_72014.sh' ARCHIVE_BASE_DRUKHARI_1_MD5='9f04c3d2b819a9865f853fcf184df6fe' ARCHIVE_BASE_DRUKHARI_1_SIZE='1086' ARCHIVE_BASE_DRUKHARI_1_VERSION='1.13.3-gog72014' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' Data/*.dlc' PKG_MAIN_DEPS="$GAME_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warhammer-40k-gladius.sh0000755000000000000000000001356114471751340016173 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Warhammer 40k: Gladius ### script_version=20240627.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='warhammer-40k-gladius' GAME_NAME='Warhammer 40,000: Gladius - Relics of War' ARCHIVE_BASE_1_NAME='warhammer_40_000_gladius_relics_of_war_1_14_00_73692.sh' ARCHIVE_BASE_1_MD5='87bf2387036336768c1e4eb8ddd8f5be' ARCHIVE_BASE_1_SIZE='3558301' ARCHIVE_BASE_1_VERSION='1.14.0-gog73692' ARCHIVE_BASE_1_URL='https://www.gog.com/game/warhammer_40000_gladius_relics_of_war' ARCHIVE_BASE_0_NAME='warhammer_40_000_gladius_relics_of_war_1_13_03_72014.sh' ARCHIVE_BASE_0_MD5='6ff6665c0a2ead9b1807fcddb28a9a08' ARCHIVE_BASE_0_SIZE='3489255' ARCHIVE_BASE_0_VERSION='1.13.3-gog72014' ARCHIVE_BASE_OLDLIBS_9_NAME='warhammer_40_000_gladius_relics_of_war_1_12_03_67548.sh' ARCHIVE_BASE_OLDLIBS_9_MD5='9bbcc5e63c4793fddceea5d8b8fbe1d8' ARCHIVE_BASE_OLDLIBS_9_SIZE='3254164' ARCHIVE_BASE_OLDLIBS_9_VERSION='1.12.3-gog67548' ARCHIVE_BASE_OLDLIBS_8_NAME='warhammer_40_000_gladius_relics_of_war_1_11_04_64361.sh' ARCHIVE_BASE_OLDLIBS_8_MD5='eb7bcdf1a43f47dbc7407e309fd209a3' ARCHIVE_BASE_OLDLIBS_8_SIZE='3200000' ARCHIVE_BASE_OLDLIBS_8_VERSION='1.11.4-gog64361' ARCHIVE_BASE_OLDLIBS_7_NAME='warhammer_40_000_gladius_relics_of_war_1_10_01_00_57375.sh' ARCHIVE_BASE_OLDLIBS_7_MD5='924bba1e75fdc323d72f24eccc2856a7' ARCHIVE_BASE_OLDLIBS_7_SIZE='2900000' ARCHIVE_BASE_OLDLIBS_7_VERSION='1.10.01-gog57375' ARCHIVE_BASE_OLDLIBS_6_NAME='warhammer_40_000_gladius_relics_of_war_v1_09_03_00_54377.sh' ARCHIVE_BASE_OLDLIBS_6_MD5='f3271281015c34f1ce3c6974998d886f' ARCHIVE_BASE_OLDLIBS_6_SIZE='2900000' ARCHIVE_BASE_OLDLIBS_6_VERSION='1.9.3.0-gog54377' ARCHIVE_BASE_OLDLIBS_5_NAME='warhammer_40_000_gladius_relics_of_war_1_08_04_01_49548.sh' ARCHIVE_BASE_OLDLIBS_5_MD5='d2e88289b1b7b1ebe1037d999f14578e' ARCHIVE_BASE_OLDLIBS_5_SIZE='2600000' ARCHIVE_BASE_OLDLIBS_5_VERSION='1.8.4.1-gog49548' ARCHIVE_BASE_OLDLIBS_4_NAME='warhammer_40_000_gladius_relics_of_war_1_07_04_44200.sh' ARCHIVE_BASE_OLDLIBS_4_MD5='b8534d0956159736ee49f207da516ba6' ARCHIVE_BASE_OLDLIBS_4_SIZE='2600000' ARCHIVE_BASE_OLDLIBS_4_VERSION='1.7.4-gog44200' ARCHIVE_BASE_OLDLIBS_3_NAME='warhammer_40_000_gladius_relics_of_war_1_06_4b_41966.sh' ARCHIVE_BASE_OLDLIBS_3_MD5='dbdcdd7450f009ffd2c5feae2fbc9fd2' ARCHIVE_BASE_OLDLIBS_3_SIZE='2300000' ARCHIVE_BASE_OLDLIBS_3_VERSION='1.6.4b-gog41966' ARCHIVE_BASE_OLDLIBS_2_NAME='warhammer_40_000_gladius_relics_of_war_1_05_01_36614.sh' ARCHIVE_BASE_OLDLIBS_2_MD5='faf0d5df1a800d8102bdf20309aa9b6c' ARCHIVE_BASE_OLDLIBS_2_SIZE='2200000' ARCHIVE_BASE_OLDLIBS_2_VERSION='1.5.1-gog36614' ARCHIVE_BASE_OLDLIBS_1_NAME='warhammer_40_000_gladius_relics_of_war_1_04_07_36064.sh' ARCHIVE_BASE_OLDLIBS_1_MD5='d42c72ef55cb2a42487f8173d26b2260' ARCHIVE_BASE_OLDLIBS_1_SIZE='2300000' ARCHIVE_BASE_OLDLIBS_1_VERSION='1.4.7-gog36064' ARCHIVE_BASE_OLDLIBS_0_NAME='warhammer_40_000_gladius_relics_of_war_1_03_08_32868.sh' ARCHIVE_BASE_OLDLIBS_0_MD5='0739ede31aa10db01b2afef9f66c5e12' ARCHIVE_BASE_OLDLIBS_0_SIZE='2100000' ARCHIVE_BASE_OLDLIBS_0_VERSION='1.3.8-gog32868' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_PATH="${CONTENT_PATH_DEFAULT}/Binaries/Linux-x86_64" CONTENT_LIBS_BIN_FILES=' libavcodec.so.58 libavformat.so.58 libavutil.so.56 libcrypto.so.1.1 libEOSSDK-Linux-Shipping.so libjemalloc.so.1 libjpeg.so.8 libnettle.so.6 libswresample.so.3' ## Include libraries shipped with old game builds. CONTENT_LIBS_BIN_FILES_OLDLIBS=' libavcodec.so.58 libavformat.so.58 libavutil.so.56 libcrypto.so.1.1 libboost_locale.so.1.65.1 libboost_system.so.1.65.1 libboost_thread.so.1.65.1 libEOSSDK-Linux-Shipping.so libicudata.so.60 libicui18n.so.60 libicuuc.so.60 libjemalloc.so.1 libjpeg.so.8 libswresample.so.3' ## The game binary is linked against libsteam_api.so. CONTENT_LIBS0_BIN_PATH="${CONTENT_PATH_DEFAULT}/Binaries/Linux-x86_64" CONTENT_LIBS0_BIN_FILES=' libsteam_api.so' CONTENT_GAME_BIN_FILES=' Binaries/Linux-x86_64/Gladius.bin' CONTENT_GAME_DATA_FILES=' Data Documents Manuals Resources *.doc *.pdf' APP_MAIN_PREFIX_TYPE='none' APP_MAIN_EXE='Binaries/Linux-x86_64/Gladius.bin' APP_MAIN_ICON='Data/Video/Textures/Icon.png' ## Run the game binary from its parent directory. APP_MAIN_PRERUN='# Run the game binary from its parent directory cd "$(dirname "$APP_EXE")" APP_EXE=$(basename "$APP_EXE") ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libboost_locale.so.1.74.0 libc.so.6 libcurl.so.4 libdl.so.2 libfreetype.so.6 libgcc_s.so.1 libglfw.so.3 libminiupnpc.so.17 libm.so.6 libopenal.so.1 libpng16.so.16 libpthread.so.0 librt.so.1 libstdc++.so.6 libvorbisfile.so.3 libvulkan.so.1 libz.so.1' ## Set dependencies for old game builds. PKG_BIN_DEPENDENCIES_LIBRARIES_OLDLIBS=' libc.so.6 libcurl.so.4 libdl.so.2 libfreetype.so.6 libgcc_s.so.1 libglfw.so.3 libminiupnpc.so.17 libm.so.6 libopenal.so.1 libpng16.so.16 libpthread.so.0 librt.so.1 libstdc++.so.6 libvorbisfile.so.3 libvulkan.so.1 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-warhammer-40k-rogue-trader.sh0000755000000000000000000001413314471751340017137 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Warhammer 40k: Rogue Trader ### script_version=20240720.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='warhammer-40k-rogue-trader' GAME_NAME='Warhammer 40,000: Rogue Trader' ARCHIVE_BASE_1_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681).exe' ARCHIVE_BASE_1_MD5='4dacb9055aefe3aba3c0b9d69f1e7bbe' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-1.bin' ARCHIVE_BASE_1_PART1_MD5='0992b9315611a76db8eb3ec16af01437' ARCHIVE_BASE_1_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-2.bin' ARCHIVE_BASE_1_PART2_MD5='8390e0d884653541edf3d489cf069aab' ARCHIVE_BASE_1_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-3.bin' ARCHIVE_BASE_1_PART3_MD5='0c8dcda2d01a9db6d48750213454ae46' ARCHIVE_BASE_1_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-4.bin' ARCHIVE_BASE_1_PART4_MD5='3857bdce47b4d311c1712eb8bf96e76d' ARCHIVE_BASE_1_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-5.bin' ARCHIVE_BASE_1_PART5_MD5='498fd37ca55b4082a5620e0892ef7e85' ARCHIVE_BASE_1_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-6.bin' ARCHIVE_BASE_1_PART6_MD5='c471fa41f77b39003e4cbcc5177636e2' ARCHIVE_BASE_1_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-7.bin' ARCHIVE_BASE_1_PART7_MD5='1d9ee45fd389fac0a34c9154f52068cf' ARCHIVE_BASE_1_PART8_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-8.bin' ARCHIVE_BASE_1_PART8_MD5='d36f057b4f24c2c4f0a6fe8341d258f4' ARCHIVE_BASE_1_SIZE='37037198' ARCHIVE_BASE_1_VERSION='1.1.58.505-gog72681' ARCHIVE_BASE_1_URL='https://www.gog.com/game/warhammer_40000_rogue_trader' ARCHIVE_BASE_0_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073).exe' ARCHIVE_BASE_0_MD5='adecb272b3abcafcdadcc661fd0fa16a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-1.bin' ARCHIVE_BASE_0_PART1_MD5='750087be34c3e067e8f117cb75abf01b' ARCHIVE_BASE_0_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-2.bin' ARCHIVE_BASE_0_PART2_MD5='3ac14fc89b7770aaa91ace86b5d77fa0' ARCHIVE_BASE_0_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-3.bin' ARCHIVE_BASE_0_PART3_MD5='9d75b578aff00669425099c77d39c946' ARCHIVE_BASE_0_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-4.bin' ARCHIVE_BASE_0_PART4_MD5='4873f86957ee03b4c6d5a9b467300d43' ARCHIVE_BASE_0_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-5.bin' ARCHIVE_BASE_0_PART5_MD5='e63da686a49e98310fdc26a426d94fd2' ARCHIVE_BASE_0_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-6.bin' ARCHIVE_BASE_0_PART6_MD5='71395b57d293fabd7e2e930523cbf909' ARCHIVE_BASE_0_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-7.bin' ARCHIVE_BASE_0_PART7_MD5='e172106a1819cf3ff50229d01986ebbd' ARCHIVE_BASE_0_PART8_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-8.bin' ARCHIVE_BASE_0_PART8_MD5='cd37f515a987c38b8bbef29c073f29f9' ARCHIVE_BASE_0_SIZE='37034784' ARCHIVE_BASE_0_VERSION='1.0.89.426-gog70073' UNITY3D_NAME='wh40krt' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_BUNDLES_SCENES_1_FILES=' bundles/[a-p]*.scenes' CONTENT_GAME_DATA_BUNDLES_SCENES_2_FILES=' bundles/*.scenes' CONTENT_GAME_DATA_BUNDLES_UNIT_FILES=' bundles/*.unit' CONTENT_GAME_DATA_BUNDLES_FILES=' bundles' CONTENT_GAME0_DATA_FILES=' whrtmodificationtemplate-release.rar' ## While the game works with the default wined3d renderer, ## performances are much better when using dxvk instead. WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Owlcat Games/Warhammer 40000 Rogue Trader' PACKAGES_LIST=' PKG_BIN PKG_DATA_BUNDLES_SCENES_1 PKG_DATA_BUNDLES_SCENES_2 PKG_DATA_BUNDLES_UNIT PKG_DATA_BUNDLES PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_BUNDLES' PKG_DATA_BUNDLES_ID="${PKG_DATA_ID}-bundles" PKG_DATA_BUNDLES_DESCRIPTION="$PKG_DATA_DESCRIPTION - bundles" PKG_DATA_BUNDLES_DEPENDENCIES_SIBLINGS=' PKG_DATA_BUNDLES_SCENES_1 PKG_DATA_BUNDLES_SCENES_2 PKG_DATA_BUNDLES_UNIT' PKG_DATA_BUNDLES_SCENES_ID="${PKG_DATA_BUNDLES_ID}-scenes" PKG_DATA_BUNDLES_SCENES_1_ID="${PKG_DATA_BUNDLES_SCENES_ID}-1" PKG_DATA_BUNDLES_SCENES_2_ID="${PKG_DATA_BUNDLES_SCENES_ID}-2" PKG_DATA_BUNDLES_SCENES_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - scenes" PKG_DATA_BUNDLES_SCENES_1_DESCRIPTION="$PKG_DATA_BUNDLES_SCENES_DESCRIPTION - 1" PKG_DATA_BUNDLES_SCENES_2_DESCRIPTION="$PKG_DATA_BUNDLES_SCENES_DESCRIPTION - 2" PKG_DATA_BUNDLES_UNIT_ID="${PKG_DATA_BUNDLES_ID}-unit" PKG_DATA_BUNDLES_UNIT_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - unit" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Drop Steam-specific stuff. ## --force is used because it is not included in all releases. rm --force --recursive 'steam workshop tool' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warlords-battlecry-2.sh0000755000000000000000000000451514471751340016150 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Warlords Battlecry 2 ### script_version=20240624.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='warlords-battlecry-2' GAME_NAME='Warlords Battlecry Ⅱ' ARCHIVE_BASE_1_NAME='setup_warlords_battlecry_2_1.04_(30487).exe' ARCHIVE_BASE_1_MD5='25cf7418f5b954b97fc0e8b6d32039f2' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='930000' ARCHIVE_BASE_1_VERSION='1.04-gog30487' ARCHIVE_BASE_1_URL='https://www.gog.com/game/warlords_battlecry_2' ARCHIVE_BASE_0_NAME='setup_warlords_battlecry2_2.0.0.4.exe' ARCHIVE_BASE_0_MD5='baa54ca0285182d18d532abfcbb8769f' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='940000' ARCHIVE_BASE_0_VERSION='1.04-gog2.0.0.4' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' terrain.cfg binkw32.dll cpuinf32.dll mss32.dll wetstd32.dll battlecry ii.exe *.asi *.cfg *.m3d *.ini' CONTENT_GAME_DATA_FILES=' campaignscenario customai customunitai data documentation english events fonts herodata music namingsets scenario soundfx tutorial video war4gfx.xcg war4int.xci wbc.dat *.xcr' CONTENT_DOC_DATA_FILES=' *.pdf' USER_PERSISTENT_FILES=' *.cfg *.ini *.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Warlords Battlecry II' WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='battlecry ii.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-wasteland-2.sh0000755000000000000000000001233214471751340014302 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 Anna Lea set -o errexit ### # Wasteland 2 ### script_version=20240601.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='wasteland-2' GAME_NAME='Wasteland 2' GAME_ID_CLASSIC="$GAME_ID" GAME_NAME_CLASSIC="$GAME_NAME" GAME_ID_DIRECTORSCUT="${GAME_ID}-directors-cut" GAME_NAME_DIRECTORSCUT="$GAME_NAME - Directorʼs Cut" # Archives ## Wasteland 2 (classic) ARCHIVE_BASE_CLASSIC_0_NAME='gog_wasteland_2_2.9.0.14.sh' ARCHIVE_BASE_CLASSIC_0_MD5='8421db3519ed0074ff2647f5ea53f6f6' ARCHIVE_BASE_CLASSIC_0_SIZE='20000000' ARCHIVE_BASE_CLASSIC_0_VERSION='1.0-gog2.9.0.14' ARCHIVE_BASE_CLASSIC_0_URL='https://www.gog.com/game/wasteland_2_directors_cut_digital_classic_edition' ## Wasteland 2 Director's Cut ARCHIVE_BASE_DIRECTORSCUT_0_NAME='gog_wasteland_2_director_s_cut_2.3.0.5.sh' ARCHIVE_BASE_DIRECTORSCUT_0_MD5='dc697b13e1f08de606add7684b5b3f78' ARCHIVE_BASE_DIRECTORSCUT_0_SIZE='16000000' ARCHIVE_BASE_DIRECTORSCUT_0_VERSION='1.1.92788-gog2.3.0.5' ARCHIVE_BASE_DIRECTORSCUT_0_URL='https://www.gog.com/game/wasteland_2_directors_cut_digital_classic_edition' UNITY3D_NAME='WL2' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_DATA_SCENES_AZ_FILES=" ${UNITY3D_NAME}_Data/Streaming/Scenes/ArizonaWorldMap.unity3d ${UNITY3D_NAME}_Data/Streaming/Scenes/AZ_*.unity3d ${UNITY3D_NAME}_Data/Streaming/Scenes/AZ??_*.unity3d ${UNITY3D_NAME}_Data/Streaming/Scenes/az??_*.unity3d" CONTENT_GAME_DATA_SCENES_CA_FILES=" ${UNITY3D_NAME}_Data/Streaming/Scenes/CA_*.unity3d ${UNITY3D_NAME}_Data/Streaming/Scenes/CA??_*.unity3d" CONTENT_GAME_DATA_RESOURCES_FILES_DIRECTORSCUT=" ${UNITY3D_NAME}_Data/*.resource" CONTENT_DOC_DATA_PATH='data/noarch/docs' CONTENT_DOC_DATA_FILES=' Map.pdf Wasteland 2 Ranger Field Manual.pdf Wasteland 2 Reference Guide.pdf' ## Work around the engine overuse of file descriptors. APP_MAIN_PRERUN='# Work around the engine overuse of file descriptors ## 4096 is an arbitrary value, 4 times the default (1024), that seems to work for all setups. if ! ulimit -n 4096; then { printf "\\n\\033[1;33mWarning:\\033[0m\\n" printf "Your current shell interpreter has no support for ulimit -n.\\n" printf "This might lead to unending loading screens if the game engine hits the file descriptors use limit.\\n" printf "\\n" } > /dev/stderr fi ' # Packages PKG_DATA_DESCRIPTION='data' ## Wasteland 2 (classic) PACKAGES_LIST_CLASSIC=' PKG_BIN PKG_DATA_SCENES_AZ PKG_DATA_SCENES_CA PKG_DATA' PKG_DATA_ID_CLASSIC="${GAME_ID_CLASSIC}-data" PKG_DATA_SCENES_AZ_ID="${PKG_DATA_ID_CLASSIC}-scenes-az" PKG_DATA_SCENES_AZ_DESCRIPTION="$PKG_DATA_DESCRIPTION - Arizona scenes" PKG_DATA_DEPS_CLASSIC="${PKG_DATA_DEPS_CLASSIC:-} $PKG_DATA_SCENES_AZ_ID" PKG_DATA_SCENES_CA_ID="${PKG_DATA_ID_CLASSIC}-scenes-ca" PKG_DATA_SCENES_CA_DESCRIPTION="$PKG_DATA_DESCRIPTION - California scenes" PKG_DATA_DEPS_CLASSIC="${PKG_DATA_DEPS_CLASSIC:-} $PKG_DATA_SCENES_CA_ID" PKG_BIN_ARCH_CLASSIC='32' PKG_BIN_DEPS_CLASSIC="$PKG_DATA_ID_CLASSIC" PKG_BIN_DEPENDENCIES_LIBRARIES_CLASSIC=' libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6 libXrandr.so.2' ## Wasteland 2 Director's Cut PACKAGES_LIST_DIRECTORSCUT=' PKG_BIN PKG_DATA_RESOURCES PKG_DATA' PKG_DATA_ID_DIRECTORSCUT="${GAME_ID_DIRECTORSCUT}-data" PKG_DATA_RESOURCES_ID="${PKG_DATA_ID_DIRECTORSCUT}-resources" PKG_DATA_RESOURCES_DESCRIPTION='resources' PKG_DATA_DEPS_DIRECTORSCUT="${PKG_DATA_DEPS_DIRECTORSCUT:-} $PKG_DATA_RESOURCES_ID" ## Ensure smooth upgrades from packages generated with pre-20231021.1 scripts. PKG_DATA_RESOURCES_PROVIDES="${PKG_DATA_RESOURCES_PROVIDES:-} wasteland-2-directors-cut-resources" PKG_BIN_ARCH_DIRECTORSCUT='64' PKG_BIN_DEPS_DIRECTORSCUT="$PKG_DATA_ID_DIRECTORSCUT" PKG_BIN_DEPENDENCIES_LIBRARIES_DIRECTORSCUT=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-whispers-of-a-machine.sh0000755000000000000000000000311314471751340016244 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Whispers of a Machine ### script_version=20240719.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='whispers-of-a-machine' GAME_NAME='Whispers of a Machine' ARCHIVE_BASE_0_NAME='setup_whispers_of_a_machine_1.0.6d_(35876).exe' ARCHIVE_BASE_0_MD5='92244849a09e9b47a290618acd9dc9b6' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='768282' ARCHIVE_BASE_0_VERSION='1.0.6d-gog35876' ARCHIVE_BASE_0_URL='https://www.gog.com/game/whispers_of_a_machine' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' acsetup.cfg whispers.exe *.vox *.tra' APP_MAIN_SCUMMID='ags:whispersofamachine' APP_MAIN_ICON='whispers.exe' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-world-of-goo.sh0000755000000000000000000000612714471751340014501 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2020 BetaRays set -o errexit ### # World of Goo ### script_version=20240719.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='world-of-goo' GAME_NAME='World of Goo' # Archives ## Sold from gog.com ARCHIVE_BASE_GOG_0_NAME='world_of_goo_1_51_29337.sh' ARCHIVE_BASE_GOG_0_MD5='f3566d859e824862b4dc14f94b15cafa' ARCHIVE_BASE_GOG_0_SIZE='186520' ARCHIVE_BASE_GOG_0_VERSION='1.51-gog29337' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/world_of_goo' ## Formerly sold from humblebundle.com, this archive is no longer available for sale. ARCHIVE_BASE_HUMBLE_0_NAME='WorldOfGoo.Linux.1.53.sh' ARCHIVE_BASE_HUMBLE_0_MD5='9049f4fccf98ba79ac238a8b414e053a' ARCHIVE_BASE_HUMBLE_0_SIZE='210000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.53-humble' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_GAME_BIN64_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86_64" CONTENT_GAME_BIN64_FILES=' WorldOfGoo.bin.x86_64' CONTENT_GAME_BIN32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86" CONTENT_GAME_BIN32_FILES=' WorldOfGoo.bin.x86' CONTENT_GAME_DATA_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/noarch" CONTENT_GAME_DATA_FILES=' game' CONTENT_DOC_DATA_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/noarch" CONTENT_DOC_DATA_FILES=' *.html *.txt' CONTENT_DOC0_DATA_PATH_GOG='data/noarch/docs' CONTENT_DOC0_DATA_FILES_GOG=' linux-issues.txt readme.html' CONTENT_DOC0_DATA_FILES_HUMBLE=' *.txt' APP_MAIN_EXE_BIN64='WorldOfGoo.bin.x86_64' APP_MAIN_EXE_BIN32='WorldOfGoo.bin.x86' APP_MAIN_ICON='game/gooicon.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 libm.so.6 libSDL2-2.0.so.0 libSDL2_mixer-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 . "$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-worms-1.sh0000755000000000000000000000522114471751340013465 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Worms 1 ### script_version=20240720.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='worms-1' GAME_NAME='Worms United' ARCHIVE_BASE_1_NAME='setup_worms_united_1.0_(28045).exe' ARCHIVE_BASE_1_MD5='fd76a7ea0a94f0e3e9cdd2b3b3f9fdd4' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='206589' ARCHIVE_BASE_1_VERSION='1.0-gog28045' ARCHIVE_BASE_1_URL='https://www.gog.com/game/worms_united' ARCHIVE_BASE_0_NAME='setup_worms_united_2.0.0.20.exe' ARCHIVE_BASE_0_MD5='619421cafa20f478d19222e3f49d77b6' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='220000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.20' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' bin batch data extras dos4gw.exe worms.cfg worms.dat worms.gog worms*.ogg' CONTENT_DOC_MAIN_FILES=' docs manual.pdf' GAME_IMAGE='worms.dat' USER_PERSISTENT_FILES=' worms.cfg' USER_PERSISTENT_DIRECTORIES=' data' APP_MAIN_TYPE='dosbox' APP_MAIN_EXE='bin\wrms.exe' APP_MAIN_ICON='goggame-1207658991.ico' APP_MAIN_ICON_0='gfw_high.ico' ## Set required environment variables. APP_MAIN_DOSBOX_PRERUN=' SET wormscfg=C:\\worms.cfg SET wormscd=D:' ## Play introduction videos APP_MAIN_DOSBOX_PRERUN="${APP_MAIN_DOSBOX_PRERUN:-}"' D:\\fmv\\play /modex D:\\fmv\\logo2.avi D:\\fmv\\play /modex D:\\fmv\\logo1.avi D:\\fmv\\play /modex D:\\fmv\\cinadd.avi D:\\fmv\\play /modex D:\\fmv\\armup.avi bin\\black.exe' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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. ## The regular check would fail due to "\" being used as a path separator. launcher_target_presence_check() { local application_exe application_exe_path application_exe=$(application_exe "$application" | sed 's#\\#/#') application_exe_path=$(application_exe_path "$application_exe") test -f "$application_exe_path" } launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-worms-2.sh0000755000000000000000000000442414471751340013472 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Worms 2 ### script_version=20240602.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='worms-2' GAME_NAME='Worms 2' ARCHIVE_BASE_0_NAME='setup_worms2_2.0.0.23.exe' ARCHIVE_BASE_0_MD5='bbe752d1b716432bb67e574ad9f3e9f3' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='190000' ARCHIVE_BASE_0_VERSION='1.05-gog2.0.0.23' ARCHIVE_BASE_0_URL='https://www.gog.com/game/worms_2' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' binaries *.dll *.exe' CONTENT_GAME_DATA_FILES=' data levels music options saves teams weapons stats.txt template.bmp *.wmv' CONTENT_DOC_DATA_FILES=' manual.pdf patch.txt' USER_PERSISTENT_DIRECTORIES=' levels options saves teams weapons' USER_PERSISTENT_FILES=' stats.txt data/*.dat' ## Running the game in a virtual desktop prevents it from being stuck into a corner of the screen. WINE_VIRTUAL_DESKTOP='640x480' APP_MAIN_EXE='frontend.exe' ## Play the introduction videos on launch. APP_MAIN_PRERUN='# Play the introduction videos on launch MPV_OPTIONS="--fs --no-osc" RANDOM_MOVIE=$(find . -mindepth 1 -maxdepth 1 -name "*.wmv" ! -name "intro.wmv" | shuf --head-count=1) mpv $MPV_OPTIONS intro.wmv mpv $MPV_OPTIONS "$RANDOM_MOVIE" ' 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_COMMANDS=' mpv' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-worms-armageddon.sh0000755000000000000000000000606614471751340015436 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2020 Jacek Szafarkiewicz # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 Hubert Ray set -o errexit ### # Worms: Armageddon ### script_version=20240720.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='worms-armageddon' GAME_NAME='Worms: Armageddon' ARCHIVE_BASE_3_NAME='setup_worms_armageddon_gog-3.8.1_(43454).exe' ARCHIVE_BASE_3_MD5='f84e60ba11363219c582a4ff65301692' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_SIZE='648070' ARCHIVE_BASE_3_VERSION='3.8.1-gog43454' ARCHIVE_BASE_3_URL='https://www.gog.com/game/worms_armageddon' ARCHIVE_BASE_2_NAME='setup_worms_armageddon_gog-2_(40354).exe' ARCHIVE_BASE_2_MD5='db2087029ee8c069c9006ebeedc76bbf' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='650000' ARCHIVE_BASE_2_VERSION='3.8-gog40354' ARCHIVE_BASE_1_NAME='setup_worms_armageddon_gog-7_(40119).exe' ARCHIVE_BASE_1_MD5='8e904d462327917452a47572a38b772a' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='660000' ARCHIVE_BASE_1_VERSION='3.8-gog40119' ARCHIVE_BASE_0_NAME='setup_worms_armageddon_2.0.0.2.exe' ARCHIVE_BASE_0_MD5='7f0bb89729662ebe74b7c9c2cd97d1c8' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='570000' ARCHIVE_BASE_0_VERSION='3.7.2.1-gog2.0.0.2' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' lfcmp10n.dll ltfil10n.dll lfbmp10n.dll ltkrn10n.dll lflmb10n.dll lftga10n.dll wa.exe user/bankeditor.exe' ## TODO: Check if the Steam library is required. CONTENT_GAME0_BIN_FILES=' steam_api.dll' CONTENT_GAME_DATA_FILES=' data fesfx graphics tweaks user' CONTENT_GAME0_DATA_PATH='__support' CONTENT_GAME0_DATA_PATH_0='app/__support' CONTENT_GAME0_DATA_FILES=' save' CONTENT_DOC_DATA_FILES=' wa_manual.pdf worms armageddon update documentation.rtf' USER_PERSISTENT_DIRECTORIES=' save user' USER_PERSISTENT_FILES=' graphics/font.bmp' APP_MAIN_EXE='wa.exe' ## Create a required empty file prior to game run. APP_MAIN_PRERUN=' # Create a required empty file prior to game run touch steam.dat ' 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 . "$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-wormwood-studios-ags.sh0000755000000000000000000001145314471751340016301 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # AGS games developed by Wormwood Studios: # - Primordia # - Strangeland ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID_PRIMORDIA='primordia' GAME_NAME_PRIMORDIA='Primordia' GAME_ID_STRANGELAND='strangeland' GAME_NAME_STRANGELAND='Strangeland' # Game archives ## Primordia ARCHIVE_BASE_PRIMORDIA_7_NAME='primordia_3_7_73438.sh' ARCHIVE_BASE_PRIMORDIA_7_MD5='8bae6792e72a9ac69263b6eb4f0e03e6' ARCHIVE_BASE_PRIMORDIA_7_SIZE='1426929' ARCHIVE_BASE_PRIMORDIA_7_VERSION='3.7-gog73438' ARCHIVE_BASE_PRIMORDIA_7_URL='https://www.gog.com/game/primordia' ARCHIVE_BASE_PRIMORDIA_6_NAME='primordia_3_6_70667.sh' ARCHIVE_BASE_PRIMORDIA_6_MD5='dc254ed674114e4776a91454e35d3741' ARCHIVE_BASE_PRIMORDIA_6_SIZE='1426928' ARCHIVE_BASE_PRIMORDIA_6_VERSION='3.6-gog70667' ARCHIVE_BASE_PRIMORDIA_5_NAME='primordia_3_6_70159.sh' ARCHIVE_BASE_PRIMORDIA_5_MD5='d1f9eeec2084933463d1b43b5466f5f1' ARCHIVE_BASE_PRIMORDIA_5_SIZE='1426928' ARCHIVE_BASE_PRIMORDIA_5_VERSION='3.6-gog70159' ARCHIVE_BASE_PRIMORDIA_4_NAME='primordia_3_5b_69802.sh' ARCHIVE_BASE_PRIMORDIA_4_MD5='b3ca4bfa8341f68ec6eb2d6c36f36e0f' ARCHIVE_BASE_PRIMORDIA_4_SIZE='1426833' ARCHIVE_BASE_PRIMORDIA_4_VERSION='3.5b-gog69802' ARCHIVE_BASE_PRIMORDIA_3_NAME='primordia_3_5a_69504.sh' ARCHIVE_BASE_PRIMORDIA_3_MD5='62d64492018c9b7fe020303040c5dbe9' ARCHIVE_BASE_PRIMORDIA_3_SIZE='1427316' ARCHIVE_BASE_PRIMORDIA_3_VERSION='3.5a-gog69504' ARCHIVE_BASE_PRIMORDIA_2_NAME='primordia_3_0a_65125.sh' ARCHIVE_BASE_PRIMORDIA_2_MD5='5b096e36b814c16c0ce067046e194c94' ARCHIVE_BASE_PRIMORDIA_2_SIZE='1500000' ARCHIVE_BASE_PRIMORDIA_2_VERSION='3.0a-gog65125' ARCHIVE_BASE_PRIMORDIA_1_NAME='primordia_3_58594.sh' ARCHIVE_BASE_PRIMORDIA_1_MD5='3cd92a7767d561f2d982014117ee0576' ARCHIVE_BASE_PRIMORDIA_1_SIZE='1500000' ARCHIVE_BASE_PRIMORDIA_1_VERSION='3.0-gog58594' ARCHIVE_BASE_PRIMORDIA_0_NAME='primordia_italian_53699.sh' ARCHIVE_BASE_PRIMORDIA_0_MD5='812917de017fde37b1c448f156e4ae7d' ARCHIVE_BASE_PRIMORDIA_0_SIZE='1500000' ARCHIVE_BASE_PRIMORDIA_0_VERSION='2.6-gog53699' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_PRIMORDIA='primordia_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5_PRIMORDIA='66c1d186075708574ee870a9015b4ff6' ARCHIVE_OPTIONAL_ICONS_URL_PRIMORDIA='https://downloads.dotslashplay.it/games/primordia/' CONTENT_ICONS_PATH_PRIMORDIA='.' CONTENT_ICONS_FILES_PRIMORDIA=' 16x16 24x24 32x32 48x48 256x256' ## Strangeland ARCHIVE_BASE_STRANGELAND_3_NAME='strangeland_3_57270.sh' ARCHIVE_BASE_STRANGELAND_3_MD5='68e18616d01d902c0982a3a1d1a8e3cd' ARCHIVE_BASE_STRANGELAND_3_SIZE='4400000' ARCHIVE_BASE_STRANGELAND_3_VERSION='3.0-gog57270' ARCHIVE_BASE_STRANGELAND_3_URL='https://www.gog.com/game/strangeland' ARCHIVE_BASE_STRANGELAND_2_NAME='strangeland_2_7_55701.sh' ARCHIVE_BASE_STRANGELAND_2_MD5='719e693167ba8014aea03b858d9cd9c1' ARCHIVE_BASE_STRANGELAND_2_SIZE='4400000' ARCHIVE_BASE_STRANGELAND_2_VERSION='2.7-gog55701' ARCHIVE_BASE_STRANGELAND_1_NAME='strangeland_2_6c_54396.sh' ARCHIVE_BASE_STRANGELAND_1_MD5='afa5999b3074480966c2226f2356f6b9' ARCHIVE_BASE_STRANGELAND_1_SIZE='4400000' ARCHIVE_BASE_STRANGELAND_1_VERSION='2.6c-gog54396' ARCHIVE_BASE_STRANGELAND_0_NAME='strangeland_2_3a_49446.sh' ARCHIVE_BASE_STRANGELAND_0_MD5='a313a7ee812815b5e53ebc643c53da76' ARCHIVE_BASE_STRANGELAND_0_SIZE='4400000' ARCHIVE_BASE_STRANGELAND_0_VERSION='2.3a-gog49446' CONTENT_PATH_DEFAULT_PRIMORDIA='data/noarch/game' CONTENT_PATH_DEFAULT_STRANGELAND='data/noarch/game/data' CONTENT_GAME_MAIN_FILES=' ENGV.tmp Music Sounds *.ags *.cfg *.exe *.ogv *.tra *.vox' CONTENT_DOC_MAIN_FILES=' licenses' APP_MAIN_SCUMMID_PRIMORDIA='ags:primordia' APP_MAIN_SCUMMID_STRANGELAND='ags:strangeland' APP_MAIN_ICON='../support/icon.png' APP_MAIN_ICON_PRIMORDIA_2='Primordia.exe' APP_MAIN_ICON_PRIMORDIA_1='Primordia.exe' APP_MAIN_ICON_PRIMORDIA_0='Primordia.exe' ## Strangeland.exe is too big, wrestool crashes when trying to handle it. APP_MAIN_ICON_STRANGELAND='winsetup.exe' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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-zachtronics-mono.sh0000755000000000000000000002177714471751340015473 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2021 Mopi set -o errexit ### # Zachtronics games built on top of Mono: # - SpaceChem # - Opus Magnum # - Exapunks # - Eliza # - Molek-Syntez # - Möbius Front '83 # - Last Call BBS # - Zachtronics Solitaire Collection ### script_version=20240529.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID_SPACECHEM='spacechem' GAME_NAME_SPACECHEM='SpaceChem' GAME_ID_OPUSMAGNUM='opus-magnum' GAME_NAME_OPUSMAGNUM='Opus Magnum' GAME_ID_EXAPUNKS='exapunks' GAME_NAME_EXAPUNKS='Exapunks' GAME_ID_ELIZA='eliza' GAME_NAME_ELIZA='Eliza' GAME_ID_MOLEKSYNTEZ='molek-syntez' GAME_NAME_MOLEKSYNTEZ='Molek-Syntez' GAME_ID_MOBIUS='mobius-front-83' GAME_NAME_MOBIUS="Möbius Front '83" GAME_ID_LASTCALL='last-call-bbs' GAME_NAME_LASTCALL='Last Call BBS' GAME_ID_SOLITAIRE='zachtronics-solitaire-collection' GAME_NAME_SOLITAIRE='The Zachtronics Solitaire Collection' # Archives ## SpaceChem ARCHIVE_BASE_SPACECHEM_0_NAME='spacechem_1016_40617.sh' ARCHIVE_BASE_SPACECHEM_0_MD5='aec2809166dbc60a7cfa3f7c22db9a07' ARCHIVE_BASE_SPACECHEM_0_SIZE='310000' ARCHIVE_BASE_SPACECHEM_0_VERSION='1016-gog40617' ARCHIVE_BASE_SPACECHEM_0_URL='https://www.gog.com/game/spacechem' ## Opus Magnum ARCHIVE_BASE_OPUSMAGNUM_2_NAME='opus_magnum_26_03_2023_63471.sh' ARCHIVE_BASE_OPUSMAGNUM_2_MD5='0313ec8451cac5445818f143a7c2d79d' ARCHIVE_BASE_OPUSMAGNUM_2_SIZE='520000' ARCHIVE_BASE_OPUSMAGNUM_2_VERSION='2023.03.26-gog63471' ARCHIVE_BASE_OPUSMAGNUM_2_URL='https://www.gog.com/game/opus_magnum' ARCHIVE_BASE_OPUSMAGNUM_1_NAME='opus_magnum_11_14_2020_43144.sh' ARCHIVE_BASE_OPUSMAGNUM_1_MD5='2defb1198c5a5778eb9ac20ff201f086' ARCHIVE_BASE_OPUSMAGNUM_1_SIZE='520000' ARCHIVE_BASE_OPUSMAGNUM_1_VERSION='2020.11.14-gog43144' ARCHIVE_BASE_OPUSMAGNUM_0_NAME='opus_magnum_en_17_08_2018_update_23270.sh' ARCHIVE_BASE_OPUSMAGNUM_0_MD5='dbe5137d4b7e2edd21f4117a80756872' ARCHIVE_BASE_OPUSMAGNUM_0_SIZE='460000' ARCHIVE_BASE_OPUSMAGNUM_0_VERSION='2018.08.17-gog23270' ## Exapunks ARCHIVE_BASE_EXAPUNKS_1_NAME='exapunks_gog_26_03_2023_63466.sh' ARCHIVE_BASE_EXAPUNKS_1_MD5='f2e0fda51c0ebc94345379ffc56d188f' ARCHIVE_BASE_EXAPUNKS_1_SIZE='730000' ARCHIVE_BASE_EXAPUNKS_1_VERSION='2023.03.26-gog63466' ARCHIVE_BASE_EXAPUNKS_1_URL='https://www.gog.com/game/exapunks' ARCHIVE_BASE_EXAPUNKS_0_NAME='exapunks_gog_11_14_2020_43140.sh' ARCHIVE_BASE_EXAPUNKS_0_MD5='46222cde2bdac46c80b3c64a976c9f78' ARCHIVE_BASE_EXAPUNKS_0_SIZE='730000' ARCHIVE_BASE_EXAPUNKS_0_VERSION='2020.11.14-gog43140' ## Eliza ARCHIVE_BASE_ELIZA_2_NAME='eliza_march_2023_update_63854.sh' ARCHIVE_BASE_ELIZA_2_MD5='7ea156a0a553e1f44fbf1f4aee5a3aac' ARCHIVE_BASE_ELIZA_2_SIZE='1900000' ARCHIVE_BASE_ELIZA_2_VERSION='2023.03-gog63854' ARCHIVE_BASE_ELIZA_2_URL='https://www.gog.com/game/eliza' ARCHIVE_BASE_ELIZA_1_NAME='eliza_11_14_2020_43139.sh' ARCHIVE_BASE_ELIZA_1_MD5='0508915315f0c2b5b102bfd80cd252ef' ARCHIVE_BASE_ELIZA_1_SIZE='1900000' ARCHIVE_BASE_ELIZA_1_VERSION='2020.11.14-gog43139' ARCHIVE_BASE_ELIZA_0_NAME='eliza_03_09_2019_32218.sh' ARCHIVE_BASE_ELIZA_0_MD5='7751b93498ad637a79f84cbbc7370f0a' ARCHIVE_BASE_ELIZA_0_SIZE='1100000' ARCHIVE_BASE_ELIZA_0_VERSION='2019.03.09-gog32218' ## Molek-Syntez ARCHIVE_BASE_MOLEKSYNTEZ_1_NAME='molek_syntez_26_03_2023_63470.sh' ARCHIVE_BASE_MOLEKSYNTEZ_1_MD5='bd13a99c3365d22cabb68d88c0216b2d' ARCHIVE_BASE_MOLEKSYNTEZ_1_SIZE='200000' ARCHIVE_BASE_MOLEKSYNTEZ_1_VERSION='2023.03.26-gog63470' ARCHIVE_BASE_MOLEKSYNTEZ_1_URL='https://www.gog.com/game/moleksyntez' ARCHIVE_BASE_MOLEKSYNTEZ_0_NAME='molek_syntez_11_14_2020_43139.sh' ARCHIVE_BASE_MOLEKSYNTEZ_0_MD5='95735bb467813bbcd10c049bf1861c0c' ARCHIVE_BASE_MOLEKSYNTEZ_0_SIZE='200000' ARCHIVE_BASE_MOLEKSYNTEZ_0_VERSION='2020.11.14-gog43139' ARCHIVE_BASE_MOLEKSYNTEZ_0_URL='https://www.gog.com/game/moleksyntez' ## Möbius Front '83 ARCHIVE_BASE_MOBIUS_1_NAME='m_bius_front_83_march_2023_update_63923.sh' ARCHIVE_BASE_MOBIUS_1_MD5='2be4eb51833c3d72b5dd7f0857e3fbf4' ARCHIVE_BASE_MOBIUS_1_SIZE='1700000' ARCHIVE_BASE_MOBIUS_1_VERSION='2023.03-gog63923' ARCHIVE_BASE_MOBIUS_1_URL='https://www.gog.com/game/mobius_front_83' ARCHIVE_BASE_MOBIUS_0_NAME='m_bius_front_83_03_01_2021_45297.sh' ARCHIVE_BASE_MOBIUS_0_MD5='e66950193c5308abd7b4fe2bec610d37' ARCHIVE_BASE_MOBIUS_0_SIZE='1700000' ARCHIVE_BASE_MOBIUS_0_VERSION='2021.03.01-gog45297' ## Last Call BBS ARCHIVE_BASE_LASTCALL_0_NAME='last_call_bbs_1_0_57778.sh' ARCHIVE_BASE_LASTCALL_0_MD5='3dc1e94645cc3ea871cb48b930056699' ARCHIVE_BASE_LASTCALL_0_SIZE='230000' ARCHIVE_BASE_LASTCALL_0_VERSION='1.0-gog57778' ARCHIVE_BASE_LASTCALL_0_URL='https://www.gog.com/game/last_call_bbs' ## Zachtronics Solitaire Collection ARCHIVE_BASE_SOLITAIRE_3_NAME='the_zachtronics_solitaire_collection_march_2023_update_63924.sh' ARCHIVE_BASE_SOLITAIRE_3_MD5='8965f467c0243ead5cf51468771d59fd' ARCHIVE_BASE_SOLITAIRE_3_SIZE='640000' ARCHIVE_BASE_SOLITAIRE_3_VERSION='2023.03-gog63924' ARCHIVE_BASE_SOLITAIRE_3_URL='https://www.gog.com/game/the_zachtronics_solitaire_collection' ARCHIVE_BASE_SOLITAIRE_2_NAME='the_zachtronics_solitaire_collection_1_2_59266.sh' ARCHIVE_BASE_SOLITAIRE_2_MD5='8202afdd9c32244da3ea632f86597766' ARCHIVE_BASE_SOLITAIRE_2_SIZE='640000' ARCHIVE_BASE_SOLITAIRE_2_VERSION='1.2-gog59266' ARCHIVE_BASE_SOLITAIRE_1_NAME='the_zachtronics_solitaire_collection_1_1_58740.sh' ARCHIVE_BASE_SOLITAIRE_1_MD5='33190fa2731ce09d04e028585061c3e4' ARCHIVE_BASE_SOLITAIRE_1_SIZE='640000' ARCHIVE_BASE_SOLITAIRE_1_VERSION='1.1-gog58740' ARCHIVE_BASE_SOLITAIRE_0_NAME='the_zachtronics_solitaire_collection_1_0_58571.sh' ARCHIVE_BASE_SOLITAIRE_0_MD5='1b33a67b53c34150b8795c9680874bba' ARCHIVE_BASE_SOLITAIRE_0_SIZE='640000' ARCHIVE_BASE_SOLITAIRE_0_VERSION='1.0-gog58571' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES_COMMON=' Ionic.Zip.Reduced.dll MoonSharp.Interpreter.dll System.Speech.dll Content PackedContent monoconfig monomachineconfig' CONTENT_GAME_MAIN_FILES_SPACECHEM="$CONTENT_GAME_MAIN_FILES_COMMON SpaceChem.exe SpaceChem.exe.config Ionic.Zip.dll Newtonsoft.Json.dll System.Data.SQLite.dll rgb2theora template.locals template.user fonts images lang music sounds text *.json" CONTENT_GAME_MAIN_FILES_OPUSMAGNUM="$CONTENT_GAME_MAIN_FILES_COMMON Lightning.exe Lightning.exe.config" CONTENT_GAME_MAIN_FILES_EXAPUNKS="$CONTENT_GAME_MAIN_FILES_COMMON EXAPUNKS.exe EXAPUNKS.exe.config" CONTENT_GAME_MAIN_FILES_ELIZA="$CONTENT_GAME_MAIN_FILES_COMMON Eliza.exe Eliza.exe.config" CONTENT_GAME_MAIN_FILES_MOLEKSYNTEZ="$CONTENT_GAME_MAIN_FILES_COMMON MOLEK-SYNTEZ.exe MOLEK-SYNTEZ.exe.config" CONTENT_GAME_MAIN_FILES_MOBIUS="$CONTENT_GAME_MAIN_FILES_COMMON MobiusFront83.exe MobiusFront83.exe.config" CONTENT_GAME_MAIN_FILES_LASTCALL="$CONTENT_GAME_MAIN_FILES_COMMON LastCallBBS.exe LastCallBBS.exe.config System.Speech.dll" CONTENT_GAME_MAIN_FILES_SOLITAIRE="$CONTENT_GAME_MAIN_FILES_COMMON TheZachtronicsSolitaireCollection.exe TheZachtronicsSolitaireCollection.exe.config" CONTENT_DOC_MAIN_FILES=' LICENSE.txt' APP_MAIN_EXE_SPACECHEM='SpaceChem.exe' APP_MAIN_EXE_OPUSMAGNUM='Lightning.exe' APP_MAIN_EXE_EXAPUNKS='EXAPUNKS.exe' APP_MAIN_EXE_ELIZA='Eliza.exe' APP_MAIN_EXE_MOLEKSYNTEZ='MOLEK-SYNTEZ.exe' APP_MAIN_EXE_MOBIUS='MobiusFront83.exe' APP_MAIN_EXE_LASTCALL='LastCallBBS.exe' APP_MAIN_EXE_SOLITAIRE='TheZachtronicsSolitaireCollection.exe' APP_MAIN_ICON='Content/icon.png' APP_MAIN_ICON_SPACECHEM='SpaceChem.exe' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libSDL2-2.0.so.0 libSDL2_image-2.0.so.0 libSDL2_mixer-2.0.so.0 libvorbisfile.so.3' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll I18N.dll I18N.West.dll Mono.Posix.dll Mono.Security.dll System.dll System.ComponentModel.DataAnnotations.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Transactions.dll System.Web.dll System.Web.Extensions.dll System.Web.Http.dll System.Web.Services.dll System.Xml.dll System.Xml.Linq.dll' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## SpaceChem - Set required execution permission on the rgb2theora binary. ## This binary is used to generate .ogv video clips from puzzle solutions. case "$(current_archive)" in ('ARCHIVE_BASE_SPACECHEM_'*) chmod 755 'rgb2theora' ;; esac ) # 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-zachtronics-unity3d.sh0000755000000000000000000000734414471751340016114 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 BetaRays # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Zachtronics games built on top of Unity3D: # - Infinifactory # - TIS-100 ### script_version=20240529.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID_INFINIFACTORY='infinifactory' GAME_NAME_INFINIFACTORY='Infinifactory' GAME_ID_TIS100='tis-100' GAME_NAME_TIS100='TIS-100' # Archives ## Infinifactory ARCHIVE_BASE_INFINIFACTORY_0_NAME='infinifactory_11_14_2020_43258.sh' ARCHIVE_BASE_INFINIFACTORY_0_MD5='c0b873dde4f29d49f0c7aa3fec2b1384' ARCHIVE_BASE_INFINIFACTORY_0_SIZE='1700000' ARCHIVE_BASE_INFINIFACTORY_0_VERSION='2020.11.14-gog43258' ARCHIVE_BASE_INFINIFACTORY_0_URL='https://www.gog.com/game/infinifactory' ## TIS-100 ARCHIVE_BASE_TIS100_1_NAME='tis_100_11_14_2020_43142.sh' ARCHIVE_BASE_TIS100_1_MD5='ce632a3b15de61222f79d3c4f506bac1' ARCHIVE_BASE_TIS100_1_SIZE='84000' ARCHIVE_BASE_TIS100_1_VERSION='2020.11.14-gog43142' ARCHIVE_BASE_TIS100_1_URL='https://www.gog.com/game/tis100' ARCHIVE_BASE_TIS100_0_NAME='tis_100_en_11_27_2017_16765.sh' ARCHIVE_BASE_TIS100_0_MD5='70518ec82ee8148697b704ed2c3c8953' ARCHIVE_BASE_TIS100_0_SIZE='83000' ARCHIVE_BASE_TIS100_0_VERSION='2017.11.27-gog16765' UNITY3D_NAME_INFINIFACTORY='infinifactory' UNITY3D_NAME_TIS100='tis100' UNITY3D_PLUGINS_INFINIFACTORY=' libfmod.so libfmodstudio.so ScreenSelector.so' UNITY3D_PLUGINS_TIS100=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_DOC_DATA_FILES=' *.pdf *.txt' # Packages PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_DATA_DESCRIPTION='data' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' 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" ## Infinifactory PKG_DATA_ID_INFINIFACTORY="${GAME_ID_INFINIFACTORY}-data" PKG_BIN_DEPS_INFINIFACTORY="$PKG_DATA_ID_INFINIFACTORY" PKG_BIN64_DEPS_INFINIFACTORY="$PKG_BIN_DEPS_INFINIFACTORY" PKG_BIN32_DEPS_INFINIFACTORY="$PKG_BIN_DEPS_INFINIFACTORY" ## TIS-100 PKG_DATA_ID_TIS100="${GAME_ID_TIS100}-data" PKG_BIN_DEPS_TIS100="$PKG_DATA_ID_TIS100" PKG_BIN64_DEPS_TIS100="$PKG_BIN_DEPS_TIS100" PKG_BIN32_DEPS_TIS100="$PKG_BIN_DEPS_TIS100" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # TIS-100 - Copy the manual in the game directory case "$(current_archive)" in ('ARCHIVE_BASE_TIS100_'*) manual_source="$(package_path 'PKG_DATA')$(path_documentation)/TIS-100 Reference Manual.pdf" manual_destination="$(package_path 'PKG_DATA')$(path_game_data)/TIS-100 Reference Manual.pdf" mkdir --parents "$(dirname "$manual_destination")" cp --link "$manual_source" "$manual_destination" ;; esac # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 LICENSE0000644000000000000000000000367214471751340010577 0ustar rootrootThis license applies to all files outside of the "games" subdirectory, and is the default one for files in "games" directory. If a script specifies another license in its headers, the license set in the script takes precedence over this one. # BSD-2-Clause Copyright © 2015 Antoine Le Gonidec Copyright © 2016 Mopi Copyright © 2018 BetaRays Copyright © 2018 Dawnmist Copyright © 2018 Jacek Szafarkiewicz Copyright © 2018 Phil Morrell Copyright © 2018 VA Copyright © 2019 Erwann Duclos Copyright © 2020 Hoël Bézier Copyright © 2020 macaron Copyright © 2020 Fabien Givors Copyright © 2021 Anna Lea Copyright © 2021 HS-157 Copyright © 2021 Hubert Ray 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. Makefile0000644000000000000000000000236714471751340011232 0ustar rootrootcollection_name = 40_vv221-games 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 gamesdir = $(DESTDIR)$(datadir)/play.it/games # Install the game scripts .PHONY: install uninstall install: install -D --mode=755 --target-directory=$(gamesdir)/$(collection_name) games/* uninstall: rm $(gamesdir)/$(collection_name)/play-*.sh rmdir -p --ignore-fail-on-non-empty $(gamesdir)/$(collection_name) # Generate tarballs, for easier packaging .PHONY: dist ## The generated tarball is signed with gpg by default, ## NO_SIGN should be set to a non-0 value to skip the signature. NO_SIGN := 0 dist: DATE := $(shell date +%F) dist: TARBALL := $(collection_name)_$(DATE).tar.gz dist: TAR_OPTIONS := --sort=name --mtime=2023-08-25 --owner=root:0 --group=root:0 --use-compress-program='gzip --no-name' dist: games/*.sh LICENSE Makefile notes/* README.md mkdir --parents dist LC_ALL=C tar cf dist/$(TARBALL) $(TAR_OPTIONS) games/*.sh LICENSE Makefile notes/* README.md ifeq ($(NO_SIGN),0) rm --force dist/$(TARBALL).asc gpg --armor --detach-sign dist/$(TARBALL) endif notes/distance0000644000000000000000000000062114471751340012426 0ustar rootrootAudio crackling The game plays crackling audio unless PulseAudio is installed and running, with the following error repeated multiple times in the logs: ALSA lib pcm.c:8568:(snd_pcm_recover) underrun occurred This can be worked around by having in the background a mpv instance playing an audio stream, even if said instance is paused. It might work with other software used to play audio streams. notes/godhood0000644000000000000000000000062114471751340012257 0ustar rootrootAudio crackling The game plays crackling audio unless PulseAudio is installed and running, with the following error repeated multiple times in the logs: ALSA lib pcm.c:8568:(snd_pcm_recover) underrun occurred This can be worked around by having in the background a mpv instance playing an audio stream, even if said instance is paused. It might work with other software used to play audio streams. notes/ironclad-tactics0000644000000000000000000000767614471751340014100 0ustar rootrootCrash when trying to display the comic introduction Using system-provided Mono 6.8.0.105, the game crashes when it should display the comic introduction, with the following trace: [ERROR] FATAL UNHANDLED EXCEPTION: System.DllNotFoundException: libRotor.so assembly: type: member:(null) at (wrapper managed-to-native) #=qWJ4HGJQiEdtEm6MWK6wX$Q==.#=qNl7gCxZWsOFgHXtmwYgGWw==(byte*,uint) at #=qWJ4HGJQiEdtEm6MWK6wX$Q==.#=qu3Z9g9rfPHTf9mGNLEhjCA== (System.Byte[] #=qzPfaVvTYNxgPZMPUIAGRIlrx9NVGXFtJzfPNdJGAQds=) [0x0001a] in :0 at #=qWJ4HGJQiEdtEm6MWK6wX$Q==.#=qXoAMbc89n6IFUuaWA79pew== (System.IO.Stream #=qtZSE2t04S_CDJDvJe3ybSg==) [0x00013] in :0 at Pressurizer.TextureRef.SetFromPngStream (System.String name, System.IO.Stream pngStream) [0x00000] in :0 at Pressurizer.ComicContent.Load (System.String filename) [0x00067] in :0 at Pressurizer.ComicContent+#=qO48_BfyXJGf$AZD$K4PD8Q==.#=qU__5QWLwNB2PsfYL4w2KCQ== () [0x0000d] in :0 at #=qt_0rAqwAdzm8WTSJAikfFLwn8rm$R4aNTN3kg$klFuo=.#=qMNac9f1T_sdePQRShZYVqQ== (#=q9wGfd1CJZ2SsGTuo6ROnGnZLyjs6cNwUdiPwjqs36Jc= #=qF$2lr0Tl6bzwGshnmkrz_w==) [0x0008e] in :0 at #=qqPvxjM6oO_$2LviSC3bQA2Ic0hexX8sXlTayuqb5894=[#=qnrVH0vw82Tw2NNo0UVRcsA==].#=qL2UZo07T0cLD0sblob3L2A== (Impeller.Matrix4& #=qyKz69NVUrxKs5WnE4Jh4NQ==, #=qG$RzWGNG8CHZnv8TVedMisnnG515CnzGPF3VJ4fNp6E= #=qivle0jaEj9bNTqamDswfZQ==) [0x00028] in :0 at #=q1cGqZA3Z8MZu$98OlVfQaRrNZ7ei8$NEhpJ1hNNgr9Q=.#=qL2UZo07T0cLD0sblob3L2A== (Impeller.Matrix4& #=qZ4pcA2VIFATTQGREA1hRQw==, #=qG$RzWGNG8CHZnv8TVedMisnnG515CnzGPF3VJ4fNp6E= #=q9M_oPsVYdGk07dv7axrWWQ==) [0x0000f] in :0 at #=q1cGqZA3Z8MZu$98OlVfQaRrNZ7ei8$NEhpJ1hNNgr9Q=.#=qL2UZo07T0cLD0sblob3L2A== (Impeller.Matrix4& #=qZ4pcA2VIFATTQGREA1hRQw==, #=qG$RzWGNG8CHZnv8TVedMisnnG515CnzGPF3VJ4fNp6E= #=q9M_oPsVYdGk07dv7axrWWQ==) [0x0000f] in :0 at #=qHr4RQLB0O1jIRrhiZQblMBaDhM2Os3Oxa2GdvppW1Ac=.#=qL2UZo07T0cLD0sblob3L2A== (Impeller.Matrix4& #=qmHscRMHWSdN2hTmnxe9gYQ==, #=qG$RzWGNG8CHZnv8TVedMisnnG515CnzGPF3VJ4fNp6E= #=qhSqj4JaFWbZTFRaEhRcQow==) [0x0001c] in :0 at #=q1cGqZA3Z8MZu$98OlVfQaRrNZ7ei8$NEhpJ1hNNgr9Q=.#=qL2UZo07T0cLD0sblob3L2A== (Impeller.Matrix4& #=qZ4pcA2VIFATTQGREA1hRQw==, #=qG$RzWGNG8CHZnv8TVedMisnnG515CnzGPF3VJ4fNp6E= #=q9M_oPsVYdGk07dv7axrWWQ==) [0x0000f] in :0 at #=qeA8jDy4bDcyBSftWiq_11mCnGLnS9gRYQfISuC3supI=.#=qL2UZo07T0cLD0sblob3L2A== (Impeller.Matrix4& #=qO5VOk5CdwivRBnXIr1$DeA==, #=qG$RzWGNG8CHZnv8TVedMisnnG515CnzGPF3VJ4fNp6E= #=qn94U3dXQFj55t$58G1YTsg==) [0x00000] in :0 at Impeller.Scene.HandleEvent (#=qG$RzWGNG8CHZnv8TVedMisnnG515CnzGPF3VJ4fNp6E= sceneEvent) [0x00006] in :0 at #=q3sctHFGigp71WuA6iL9NlnUpTX9rtlpaqCaQpflT7Gg=.#=qXrhpysIijJIC4wCz6yCtyQ== (System.Double #=qZdqAiSNbFeyU72plHhG1iQ==) [0x00083] in :0 at #=qHl0qM6f_mOv6EaEU1$D0ifHsH2llK_GE05kj$_X4ZQk=.#=q8I1dBbfA3XQ6Smha7GkoYA== (System.Double #=qxy0Wk4vQGi$yGLZkButExA==) [0x00075] in :0 at #=qzpze_qrj7eEwPk0uYJCQNshb6lCDPQNBqEoVHqUrWIM=.#=qVi3lLr3wPY5Bie9BbwsyAQ== () [0x00084] in :0 at #=q0du55HkWxtHdbETq5SKLAaA8CJLBNRQFOuk_plSx55E=.#=qAIu65PM70GpdJcnU_XncIQ== () [0x0013b] in :0 at #=q0du55HkWxtHdbETq5SKLAaA8CJLBNRQFOuk_plSx55E=.#=qOLnLBRGWppuvAL6I6M_YmA== (System.String[] #=qsCDWjBtDAJYFISzG3qUX7Q==) [0x00080] in :0 Cannot open assembly '/usr/bin/ZISupportTool.exe': No such file or directory. To work around it, we use the shipped 32-bit Mono build instead of the system-provided one. notes/little-inferno0000644000000000000000000000053614471751340013574 0ustar rootrootRendering failure with Mesa When playing Little Inferno with Mesa, the game might be shown as a black screen or be full of black artifacts. Switching out of fullscreen then back to it with the F key might help in mitigating the rendering issues. A bug report has been sent to Mesa developers: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7903 notes/loop-hero0000644000000000000000000000032314471751340012537 0ustar rootrootErratic input behaviour Starting with game build 1.154, a new "Gamepad Mode" is added. It is the enabled by default, and cause mouse and keyboard inputs to behave unreliably. It can be disabled by pressing F8. notes/prince-of-persia0000644000000000000000000000027214471751340014001 0ustar rootrootFog rendering On first launch, the game will run with display issues related to fog rendering. Quit the game and launch it again, it should automatically be fixed on the second launch. notes/pyre0000644000000000000000000000166514471751340011624 0ustar rootrootCrash on initial loading Using system-provided Mono 6.8.0.105, the game crash at the end of the initial loading phase, right before showing the game menu, with the following trace: [FMOD] d:\Jenkins\workspace\Ursa_SDL2\GSGE\GSGE\Code\Audio\AudioManager.cs:ln - 597 Unsupported file or audio format. Failed to create VO sound bank: Content/Audio/FMOD/Build/Desktop/VO.fsb at GSGE.AudioManager.LoadVoiceBank () [0x0034a] in <160751e4f5c141ae8efac1285e76459f>:0 at GSGE.AudioManager.Preload () [0x00021] in <160751e4f5c141ae8efac1285e76459f>:0 at GSGE.Code.GUI.LaunchScreen+<>c__DisplayClassc.b__9 () [0x00040] in <160751e4f5c141ae8efac1285e76459f>:0 at System.Threading.Tasks.Task.InnerInvoke () [0x00012] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 at System.Threading.Tasks.Task.Execute () [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 To work around it, we use the shipped binaries Mono build instead of system-provided Mono. notes/renowned-explorers0000644000000000000000000000062114471751340014476 0ustar rootrootAudio crackling The game plays crackling audio unless PulseAudio is installed and running, with the following error repeated multiple times in the logs: ALSA lib pcm.c:8568:(snd_pcm_recover) underrun occurred This can be worked around by having in the background a mpv instance playing an audio stream, even if said instance is paused. It might work with other software used to play audio streams. notes/shenzhen-io0000644000000000000000000000045214471751340013065 0ustar rootrootCrash when writing in the editor Using system-provided Mono 6.8.0.105, the game crashes when writing intructions in the editor. A Mono patch is proposed in this GitHub issue: https://github.com/rfht/fnaify/issues/34 To work around it, we use the shipped binaries instead of system-provided Mono. notes/torment-tides-of-numenera0000644000000000000000000000062114471751340015644 0ustar rootrootAudio crackling The game plays crackling audio unless PulseAudio is installed and running, with the following error repeated multiple times in the logs: ALSA lib pcm.c:8568:(snd_pcm_recover) underrun occurred This can be worked around by having in the background a mpv instance playing an audio stream, even if said instance is paused. It might work with other software used to play audio streams. notes/warcraft-30000644000000000000000000000070714471751340012612 0ustar rootrootRequired CD key files During a regular install of Warcraft 3, CD keys are stored encrypted into War3.mpq, in the files under the "font" directory. In order to build a package that includes the CD key (required, or the game will not launch), you need to provide the following files in addition to the installer .mpq: - font.clh - font.gid They can be extracted from a regular Warcraft 3 install with: smpq --extract War3.mpq font/font.clh font/font.gid README.md0000644000000000000000000001620014471751340011040 0ustar rootroot# vv221ʼs games collection ## 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 repository provides game scripts that can be used with ./play.it to install a collection of DRM-free games. ## Installation ``` git clone --branch main --depth 1 http://git.vv221.fr/play.it-vv221 play.it-vv221.git cd play.it-vv221.git make install ``` ## Usage Usage instructions are provided on the main ./play.it repository: [./play.it: Installer for DRM-free commercial games — Usage] [./play.it: Installer for DRM-free commercial games — Usage]: https://git.dotslashplay.it/scripts/about/#usage ## Supported games ### Action - Bastion - Beyond Good & Evil - Bleed series: - Bleed - Bleed 2 - Children of Morta - Deus Ex - Diablo - Grim Dawn - Jade Empire - Jazz Jackrabbit 2 - Painkiller - Prince of Persia series: - Prince of Persia: The Sands of Time - Prince of Persia (2008) - Pyre - Raji: An Ancient Epic (full game and free demo) - Rayman series: - Rayman - Rayman Origins - Scrapland - Shogo: Mobile Armor Division - SteamWorld series: - SteamWorld Dig - SteamWorld Dig 2 - SteamWorld Heist - The Elder Scrolls III: Morrowind - Titan Quest - Tomb Raider 2 - Tonight We Riot - Torchlight series: - Torchlight - Torchlight II - Total Overdose - Transistor - Unreal Tournament series: - Unreal Tournament - Unreal Tournament 2004 - Vampire: The Masquerade - Bloodlines - Victor Vran ### Adventure - Beyond Good & Evil - Blacksad: Under the Skin - Blackwell series: - The Blackwell Legacy - Blackwell Unbound - The Blackwell Convergence - The Blackwell Deception - The Blackwell Epiphany - Citizen Sleeper - Day of the Tentacle - Gamedec (full game and free demo) - Gemini Rue - Gibbous - A Cthulhu Adventure - Gobliiins series: - Gobliiins - Gobliins 2: The Prince Buffoon - Goblins Quest 3 - Gobliiins 5 - Eliza - Mask of the Rose (full game and free demo) - Monkey Island series: - The Secret of Monkey Island: Special Edition - Monkey Island 2: LeChuck's Revenge: Special Edition - The Curse of Monkey Island - Escape from Monkey Island - Return to Monkey Island - Myst series: - Myst - realMyst: Masterpiece Edition - Riven: The Sequel to Myst - Myst III: Exile - Primordia - Prince of Persia series: - Prince of Persia: The Sands of Time - Prince of Persia (2008) - Raji: An Ancient Epic (full game and free demo) - Resonance - Roadwarden - Scrapland - Shardlight - Slay the Princess - Song of Farca - SteamWorld series: - SteamWorld Dig - SteamWorld Dig 2 - SteamWorld Heist - Strangeland - Superfluous Riteurnz - Technobabylon - The Excavation of Hob's Barrow - The Shivah - Tomb Raider 2 - Unavowed - Whispers of a Machine ### Cyberpunk - Citizen Sleeper - Deus Ex - Exapunks - Gamedec (full game and free demo) - Gemini Rue - Shadowrun series (by Harebrained Schemes): - Shadowrun Returns - Shadowrun: Dragonfall - Shadowrun: Hong Kong - Song of Farca - Technobabylon - Whispers of a Machine ### Horror - A House of Many Doors - Cultist Simulator - Darkest Dungeon - Diablo - Fallen London setting: - Sunless Sea - Sunless Skies - Ghost Master - Gibbous - A Cthulhu Adventure - Grim Dawn - Painkiller - Slay the Princess - The Excavation of Hob's Barrow - Vampire: The Masquerade - Bloodlines - Victor Vran ### Music - A Dance of Fire and Ice ### Puzzle - 7 Billion Humans - Baba Is You - Ghost Master - Human Resource Machine - Little Inferno - Orwell series: - Orwell - Orwell: Ignorance is Strength - Terra Nil - World of Goo - Zachtronics games: - SpaceChem - Infinifactory - TIS-100 - Shenzhen I/O - Opus Magnum - Exapunks - Molek-Syntez - Last Call BBS - Zachtronics Solitaire Collection ### Racing - BallisticNG - Distance ### Role-playing - A House of Many Doors - Anachronox - Baldur's Gate series: - Baldur's Gate (classic version and Enhanced Edition) - Baldur's Gate II (classic version and Enhanced Edition) - Baldur's Gate 3 - Bastion - Children of Morta - Citizen Sleeper - Darkest Dungeon - Deus Ex - Diablo - Disco Elysium - Fallen London setting: - Sunless Sea - Sunless Skies - Gamedec (full game and free demo) - Grim Dawn - Icewind Dale series: - Icewind Dale (classic version and Enhanced Edition) - Icewind Dale II - Jade Empire - Loop Hero (full game and free demo) - Pillars of Eternity - Planescape: Torment (classic version and Enhanced Edition) - Pyre - Shadowrun series (by Harebrained Schemes): - Shadowrun Returns - Shadowrun: Dragonfall - Shadowrun: Hong Kong - Sovereign Syndicate - Star Wars: Knights of the Old Republic series: - Star Wars: Knights of the Old Republic - Star Wars: Knights of the Old Republic II: The Sith Lords - SteamWorld Quest - The Elder Scrolls III: Morrowind - Titan Quest - Torchlight series: - Torchlight - Torchlight II - Torment: Tides of Numenera - Transistor - Tyranny - Vampire: The Masquerade - Bloodlines - Victor Vran - Warhammer 40,000: Rogue Trader - Wasteland 2 ### Simulation - Book of Hours - City Building series (by Impression Games and BreakAway Games): - Caesar III - Pharaoh - Zeus: Master of Olympus - Emperor: Rise of the Middle Kingdom - Cultist Simulator - Democratic Socialism Simulator - Dungeon Keeper series: - Dungeon Keeper - Dungeon Keeper 2 - Endzone: A World Apart - Factorio (full game and free demo) - Freelancer (free demo only) - Frostpunk - Homeseek - Ixion - Kapital: Sparks of Revolution - Orwell series: - Orwell - Orwell: Ignorance is Strength - Reus - Startopia - Terra Nil - The Settlers II - Tropico series: - Tropico - Tropico 2: Pirate Cove - War for the Overworld ### Sports - Pyre ### Strategy - Age of Mythology (free demo only) - Alpha Centauri - Desperados series: - Desperados: Wanted Dead or Alive - Desperados III (full game and free demo) - Dark Reign 2 - Dungeon Keeper series: - Dungeon Keeper - Dungeon Keeper 2 - Factorio - FTL: Faster Than Light - Ghost Master - Heroes of Might and Magic series: - Heroes of Might and Magic IV - Heroes of Might and Magic V - Into the Breach - Ironclad Tactics - Kingdom Rush series: - Kingdom Rush - Kingdom Rush: Frontiers - Kingdom Rush: Origins - Möbius Front '83 - Off-World Resource Base - Oil Rush - Pandora: First Contact - Renowned Explorers - Shadow Gambit: The Cursed Crew (full game and free demo) - Shadow Tactics: Blades of the Shogun - Star Wars: Galactic Battlegrounds - SteamWorld Heist - Stellaris - The Fertile Crescent - The Settlers II - Transistor - War for the Overworld - Warcraft series: - Warcraft: Orcs & Humans - Warcraft III: Reign of Chaos - Warhammer 40,000 setting: - Warhammer 40,000: Dawn of War - Warhammer 40,000: Gladius - Relics of War - Warlords Battlecry 2 - Worms series: - Worms - Worms 2 - Worms Armageddon