games/play-7-billion-humans.sh0000755000000000000000000000450114471751340015245 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=20231006.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_BIN32_FILES=' 7BillionHumans.bin.x86' CONTENT_GAME_BIN64_FILES=' 7BillionHumans.bin.x86_64' CONTENT_GAME_DATA_FILES=' shaders resource.pak icon.png' CONTENT_DOC_DATA_FILES=' LICENSE.txt README.linux' APP_MAIN_EXE_BIN32='7BillionHumans.bin.x86' APP_MAIN_EXE_BIN64='7BillionHumans.bin.x86_64' APP_MAIN_ICON='icon.png' PACKAGES_LIST='PKG_BIN32 PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN32' launchers_write set_current_package 'PKG_BIN64' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-a-dance-of-fire-and-ice.sh0000755000000000000000000000435714471751340016304 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=20231225.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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.27 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-age-of-mythology.sh0000755000000000000000000015173614471751340015364 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=20230918.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' GAME_ID='age-of-mythology-demo' GAME_NAME='Age of Mythology Demo' ARCHIVE_BASE_0_NAME='mtrial.exe' ARCHIVE_BASE_0_MD5='c475268b774c0fd469802e915b3c3803' ARCHIVE_BASE_0_TYPE='cabinet' ARCHIVE_BASE_0_SIZE='550000' ARCHIVE_BASE_0_VERSION='1.0-archiveorg1' ARCHIVE_BASE_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_GAME_DATA_FILES=' *' CONTENT_DOC_DATA_PATH='.' CONTENT_DOC_DATA_FILES=' *.rtf' CONTENT_FONTS_FILES=' *.ttf' CONTENT_FONTS0_PATH='.' CONTENT_FONTS0_FILES=' *.ttf' 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_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 ( 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 icons PKG='PKG_DATA' icons_inclusion # Include shipped fonts ## TODO: The ./play.it library should provide a function path_fonts (or path_fonts_ttf?) returning this path. PATH_FONTS="$(option_value 'prefix')/share/fonts/truetype/$(game_id)" content_inclusion 'FONTS' 'PKG_DATA' "$PATH_FONTS" content_inclusion 'FONTS0' 'PKG_DATA' "$PATH_FONTS" # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-alpha-centauri.sh0000755000000000000000000001772614471751340015072 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Alpha Centauri ### script_version=20231016.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='alpha-centauri' GAME_NAME='Alpha Centauri' 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='620000' ARCHIVE_BASE_0_URL='https://www.gog.com/game/sid_meiers_alpha_centauri' 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/' 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_GAME_DATA_FILES=' data/facs data/fx data/fonts 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_PRERUN="$APP_MAIN_PRERUN" APP_SMACX_ID="${GAME_ID}-alien-crossfire" APP_SMACX_NAME="$GAME_NAME - Alien Crossfire" APP_SMACX_EXE='smacx.dynamic' APP_SMACX_ICON='terranx.exe' PACKAGES_LIST='PKG_BIN PKG_MOVIES PKG_DATA' PKG_MOVIES_ID="${GAME_ID}-movies" PKG_MOVIES_DESCRIPTION='movies' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID $PKG_MOVIES_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 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' 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 extra required archives archive_initialize_required \ 'ARCHIVE_ENGINE' \ 'ARCHIVE_REQUIRED_ENGINE' # Check for the presence of the extra optional archives 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/' archive_initialize_optional \ 'ARCHIVE_ICONS' \ 'ARCHIVE_OPTIONAL_ICONS' # Check for the presence of the "rename" command # On Arch Linux is is provided under the name "perl-rename" unset RENAME_CMD 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 shims set_current_package 'PKG_BIN' 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 files names 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' mkdir 'data/fonts' mv *.ttf 'data/fonts' # 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 "${LANG%_*}" 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" ) if archive_is_available 'ARCHIVE_ICONS'; then archive_extraction 'ARCHIVE_ICONS' fi # Include game data if archive_is_available 'ARCHIVE_ICONS'; then ## Use the icons extracted from the Loki build of the game if provided… CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 16x16 32x32 48x48' content_inclusion 'ICONS_DATA' 'PKG_DATA' "$(path_icons)" else ## …or fall back on extracting icons from the Windows binaries. set_current_package 'PKG_DATA' icons_inclusion fi content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-anachronox.sh0000755000000000000000000000454114471751340014324 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=20230918.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='1100000' 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 *.dll *.exe *.inf *.ini *.ocx' CONTENT_GAME_DATA_FILES=' anoxdata anox.ico *.jpg' CONTENT_DOC_DATA_FILES=' manual.pdf readme.htm *readme.txt *.rtf' 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_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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete unwanted files rm --force --recursive \ '__redist' \ 'commonappdata' \ 'galaxy_anachronox_2.1.0.29.exe' \ 'tmp' ) # Include game icon PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-baba-is-you.sh0000755000000000000000000000537014471751340014275 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=20231008.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='baba-is-you' GAME_NAME='Baba Is You' 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' ARCHIVE_BASE_0_URL='https://hempuli.itch.io/baba' CONTENT_PATH_DEFAULT='Baba Is You' CONTENT_GAME_BIN32_PATH="${CONTENT_PATH_DEFAULT}/bin32" CONTENT_GAME_BIN32_FILES=' Chowdren' CONTENT_GAME_BIN64_PATH="${CONTENT_PATH_DEFAULT}/bin64" CONTENT_GAME_BIN64_FILES=' Chowdren' CONTENT_GAME_DATA_FILES=' Data icon.bmp Assets.dat gamecontrollerdb.txt' APP_MAIN_EXE_BIN32='Chowdren' APP_MAIN_EXE_BIN64='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='# Work around the shipped SDL lack of support for Wayland if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST='PKG_BIN32 PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_DEPS="$PKG_BIN_DEPS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libGL.so.1 libm.so.6 libpthread.so.0' PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN32' launchers_write set_current_package 'PKG_BIN64' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-baldurs-gate-3.sh0000755000000000000000000013425014471751340014677 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=20240106.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='baldurs-gate-3' GAME_NAME='Baldurʼs Gate Ⅲ' 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_PATCH5_0_URL='https://www.gog.com/game/baldurs_gate_iii' 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/voice.pak 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_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_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" 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_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_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" ## 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" 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # 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-bastion.sh0000755000000000000000000001047214471751340013623 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=20230918.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='1300000' 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='1300000' 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.exe Bastion.bmp 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_LIBS32_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib" CONTENT_LIBS_LIBS32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/lib" CONTENT_LIBS_LIBS32_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=' libfmodex.so libmojoshader.so' ## libSteamWrapper.so is required to prevent a crash of the Humble Bundle build, ## libsteam_api.so is required by libSteamWrapper.so. CONTENT_LIBS_LIBS32_FILES_HUMBLE="$CONTENT_LIBS_LIBS32_FILES libSteamWrapper.so libsteam_api.so" CONTENT_LIBS_LIBS64_FILES_HUMBLE="$CONTENT_LIBS_LIBS64_FILES libSteamWrapper.so libsteam_api.so" APP_MAIN_EXE='Bastion.exe' APP_MAIN_ICON='Bastion.bmp' PACKAGES_LIST='PKG_MAIN PKG_LIBS32 PKG_LIBS64' 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_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS32_ARCH='32' PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS64_ARCH='64' 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 icon PKG='PKG_MAIN' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_MAIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-beyond-good-and-evil.sh0000755000000000000000000000765114471751340016074 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=20230919.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='2200000' 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=' *.dll *.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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # 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 launcher_desktop_exec here ensures that we get a path already escaped if required. settings_cmd=$(launcher_desktop_exec 'APP_SETTINGS' | sed 's#^Exec=##') 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)" # Delete unwanted files rm --force --recursive \ '__support' \ 'gameuxinstallhelper.dll' \ 'goggame-1207658746.dll' # 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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-blackwell.sh0000755000000000000000000002463314471751340014130 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=20231005.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_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_4_URL='https://www.gog.com/game/blackwell_bundle' 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' ## Blackwell 2 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_4_URL='https://www.gog.com/game/blackwell_bundle' 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' ## Blackwell 3 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_3_URL='https://www.gog.com/game/blackwell_bundle' 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' ## Blackwell 4 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_3_URL='https://www.gog.com/game/blackwell_bundle' 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' ## Blackwell 5 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_3_URL='https://www.gog.com/game/blackwell_epiphany_the' 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' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' *.ags *.cfg *.exe *.vox' CONTENT_DOC_MAIN_FILES=' licenses' APP_MAIN_SCUMMID='ags' ## 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. ## TODO: Check that this works expected on Wayland (it probably does not). 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. 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 ' APP_MAIN_POSTRUN='# Restore the keyboard variant, if it has previously been switched to us-azerty. if [ $KEYBOARD_RESTORE_VARIANT -eq 1 ]; then setxkbmap -variant "$KEYBOARD_VARIANT" fi ' ## Switch French keyboard layout to us-azerty to provide direct access to digits. PKG_MAIN_DEPENDENCIES_COMMANDS=' setxkbmap' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 optional extra archives case "$(context_archive)" in ## Blackwell 1 ( \ 'ARCHIVE_BASE_BLACKWELL1_1' | \ 'ARCHIVE_BASE_BLACKWELL1_2' \ ) ## The GOG installers for Blackwell 1 < 3.0 included the original game icon. ;; ('ARCHIVE_BASE_BLACKWELL1_'*) ARCHIVE_OPTIONAL_ICONS_0_NAME='blackwell-1_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_0_MD5='3352b2267c9200b1c06d21c5d65ddef8' ARCHIVE_OPTIONAL_ICONS_0_URL='https://downloads.dotslashplay.it/games/blackwell/' ;; ## Blackwell 2 ( \ 'ARCHIVE_BASE_BLACKWELL2_1' | \ 'ARCHIVE_BASE_BLACKWELL2_2' \ ) ## The GOG installers for Blackwell 2 < 3.0 included the original game icon. ;; ('ARCHIVE_BASE_BLACKWELL2_'*) ARCHIVE_OPTIONAL_ICONS_0_NAME='blackwell-2_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_0_MD5='e7bef09076eaf830effc44d7fe6b8a9e' ARCHIVE_OPTIONAL_ICONS_0_URL='https://downloads.dotslashplay.it/games/blackwell/' ;; ## Blackwell 3 ('ARCHIVE_BASE_BLACKWELL3_1') ## The GOG installers for Blackwell 3 < 3.0 included the original game icon. ;; ('ARCHIVE_BASE_BLACKWELL3_'*) ARCHIVE_OPTIONAL_ICONS_0_NAME='blackwell-3_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_0_MD5='49cb2320d1a32788399493dd42e3d607' ARCHIVE_OPTIONAL_ICONS_0_URL='https://downloads.dotslashplay.it/games/blackwell/' ;; ## Blackwell 4 ('ARCHIVE_BASE_BLACKWELL4_1') ## The GOG installers for Blackwell 4 < 3.0 included the original game icon. ;; ('ARCHIVE_BASE_BLACKWELL4_'*) ARCHIVE_OPTIONAL_ICONS_0_NAME='blackwell-4_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_0_MD5='d9dae751697727cb42e43221755f507a' ARCHIVE_OPTIONAL_ICONS_0_URL='https://downloads.dotslashplay.it/games/blackwell/' ;; ## Blackwell 5 ('ARCHIVE_BASE_BLACKWELL5_1') ## The GOG installers for Blackwell 5 < 3.0 included the original game icon. ;; ('ARCHIVE_BASE_BLACKWELL5_'*) ARCHIVE_OPTIONAL_ICONS_0_NAME='blackwell-5_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_0_MD5='cf27b6428d455ac9e6af2e5c8b065a43' ARCHIVE_OPTIONAL_ICONS_0_URL='https://downloads.dotslashplay.it/games/blackwell/' ;; esac if [ -n "${ARCHIVE_OPTIONAL_ICONS_0_NAME:-}" ]; then archive_initialize_optional \ 'ARCHIVE_ICONS' \ 'ARCHIVE_OPTIONAL_ICONS_0' fi # Extract game data archive_extraction_default if archive_is_available 'ARCHIVE_ICONS'; then archive_extraction 'ARCHIVE_ICONS' fi # Include game data ## Set the path to the fallback icon. APP_MAIN_ICON='../support/icon.png' case "$(context_archive)" in ## Blackwell 1 ( \ 'ARCHIVE_BASE_BLACKWELL1_1' | \ 'ARCHIVE_BASE_BLACKWELL1_2' \ ) APP_MAIN_ICON='Blackwell Legacy.exe' ;; ('ARCHIVE_BASE_BLACKWELL1_'*) CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 24x24 32x32 48x48 256x256' ;; ## Blackwell 2 ( \ 'ARCHIVE_BASE_BLACKWELL2_1' | \ 'ARCHIVE_BASE_BLACKWELL2_2' \ ) APP_MAIN_ICON='Unbound.exe' ;; ('ARCHIVE_BASE_BLACKWELL2_'*) CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 24x24 32x32 48x48 256x256' ;; ## Blackwell 3 ('ARCHIVE_BASE_BLACKWELL3_1') APP_MAIN_ICON='Convergence.exe' ;; ('ARCHIVE_BASE_BLACKWELL3_'*) CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 32x32 64x64 256x256' ;; ## Blackwell 4 ('ARCHIVE_BASE_BLACKWELL4_1') APP_MAIN_ICON='Deception.exe' ;; ('ARCHIVE_BASE_BLACKWELL4_'*) CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 24x24 32x32 48x48 256x256' ;; ## Blackwell 5 ('ARCHIVE_BASE_BLACKWELL5_1') APP_MAIN_ICON='Epiphany.exe' ;; ('ARCHIVE_BASE_BLACKWELL5_'*) CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 24x24 32x32 48x48 256x256' ;; esac if archive_is_available 'ARCHIVE_ICONS'; then content_inclusion 'ICONS' 'PKG_MAIN' "$(path_icons)" else icons_inclusion fi content_inclusion_default # Write launchers launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-bleed-series.sh0000755000000000000000000000775114471751340014535 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=20230610.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_LIBS32_PATH="${CONTENT_PATH_DEFAULT}/lib" CONTENT_LIBS_LIBS64_PATH="${CONTENT_PATH_DEFAULT}/lib64" 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_LIBS32_FILES_BLEED1="$CONTENT_LIBS_LIBS_FILES_BLEED1" CONTENT_LIBS_LIBS64_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_LIBS32_FILES_BLEED2="$CONTENT_LIBS_LIBS_FILES_BLEED2" CONTENT_LIBS_LIBS64_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_LIBS32 PKG_LIBS64' PKG_LIBS_ID_BLEED1="${GAME_ID_BLEED1}-libs" PKG_LIBS_ID_BLEED2="${GAME_ID_BLEED2}-libs" PKG_LIBS32_ARCH='32' PKG_LIBS64_ARCH='64' PKG_LIBS32_ID_BLEED1="$PKG_LIBS_ID_BLEED1" PKG_LIBS32_ID_BLEED2="$PKG_LIBS_ID_BLEED2" PKG_LIBS64_ID_BLEED1="$PKG_LIBS_ID_BLEED1" PKG_LIBS64_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 set_current_package 'PKG_MAIN' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_MAIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-book-of-hours-expansions.sh0000755000000000000000000000603414471751340017042 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=20231211.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_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_5_NAME='book_of_hours_perpetual_edition_content_2023_12_d_9_69348.sh' ARCHIVE_BASE_PERPETUAL_5_MD5='dd9891959a3098f5594655dcab33f004' ARCHIVE_BASE_PERPETUAL_5_SIZE='75404' ARCHIVE_BASE_PERPETUAL_5_VERSION='2023.12.d.9-gog69348' ARCHIVE_BASE_PERPETUAL_4_NAME='book_of_hours_perpetual_edition_content_2023_12_d_8_69334.sh' ARCHIVE_BASE_PERPETUAL_4_MD5='70d941a28f905cc1b31e8670594f797d' ARCHIVE_BASE_PERPETUAL_4_SIZE='75408' ARCHIVE_BASE_PERPETUAL_4_VERSION='2023.12.d.8-gog69334' 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.sh0000755000000000000000000000572414471751340014662 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Book of Hours ### script_version=20231211.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='book-of-hours' GAME_NAME='Book of Hours' 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_7_URL='https://www.gog.com/game/book_of_hours' ARCHIVE_BASE_6_NAME='book_of_hours_2023_12_d_9_69348.sh' ARCHIVE_BASE_6_MD5='0134334eccc16c6f956f8889347c79e7' ARCHIVE_BASE_6_SIZE='1938312' ARCHIVE_BASE_6_VERSION='2023.12.d.9-gog69348' ARCHIVE_BASE_5_NAME='book_of_hours_2023_12_d_8_69334.sh' ARCHIVE_BASE_5_MD5='13af4a42136e9fa4de6130df9b9c7034' ARCHIVE_BASE_5_SIZE='1938304' ARCHIVE_BASE_5_VERSION='2023.12.d.8-gog69334' 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' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-caesar-3.sh0000755000000000000000000000770114471751340013563 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Caesar 3 ### script_version=20230919.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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 *.555 *.emp *.eng *.map *.sg2 c3_model.txt mission1.pak' CONTENT_GAME_BIN_PATH='.' CONTENT_GAME_BIN_FILES=' julius' CONTENT_DOC_DATA_FILES=' readme.txt *.pdf' USER_PERSISTENT_FILES=' *.ini *.sav c3_model.txt status.txt' APP_MAIN_EXE='julius' APP_MAIN_ICON='c3.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 libm.so.6 libSDL2-2.0.so.0 libSDL2_mixer-2.0.so.0' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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" # Load Julius engine archive # 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 Julius binary chmod 755 "$(application_exe 'APP_MAIN')" ) # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-children-of-morta-expansions.sh0000755000000000000000000000375214471751340017666 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=20230919.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='1400' 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='1400' 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_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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-children-of-morta.sh0000755000000000000000000000415114471751340015473 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Children of Morta ### script_version=20230919.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='1400000' 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=' lib_burst_generated.so 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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" 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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 icon PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-citizen-sleeper.sh0000755000000000000000000000327214471751340015266 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Citizen Sleeper ### script_version=20240109.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='citizen-sleeper' GAME_NAME='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' ARCHIVE_BASE_0_URL='https://www.gog.com/game/citizen_sleeper' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-cultist-simulator-expansions.sh0000755000000000000000000002136514471751340020060 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=20231127.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_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_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_5_URL='https://www.gog.com/game/cultist_simulator_the_dancer' 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_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_5_URL='https://www.gog.com/game/cultist_simulator_the_ghoul' 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_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_5_URL='https://www.gog.com/game/cultist_simulator_the_priest' 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_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_5_URL='https://www.gog.com/game/cultist_simulator_the_exile' 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.sh0000755000000000000000000001135614471751340015672 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Cultist Simulator ### script_version=20231127.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='cultist-simulator' GAME_NAME='Cultist Simulator' 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_15_URL='https://www.gog.com/game/cultist_simulator' 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_GAME_DATA_FILES=" ${UNITY3D_NAME}_Data 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-dark-reign-2.sh0000755000000000000000000000642514471751340014351 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Dark Reign 2 ### script_version=20231106.4 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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-gog' ARCHIVE_BASE_1_SIZE='580000' 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' ## launcher.exe is only provided with the 2.0.0.11 GOG build. 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 launcher.exe anet.inf dxcfg.ini' CONTENT_GAME_DATA_FILES=' missions mods music packs sides worlds' CONTENT_DOC_DATA_FILES=' customer_support.htm manual.pdf readme.rtf license.txt' ## On first launch, register the game CD-key. CONTENT_GAME0_BIN_FILES=' cdkey' USER_PERSISTENT_DIRECTORIES=' mods users' USER_PERSISTENT_FILES=' settings.cfg' 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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # On first launch, register the game CD-key SCRIPT_DEPS="${SCRIPT_DEPS:-} base64 xxd" ## FIXME: This game can get display issues on some resolutions, when run on Wayland without using a virtual desktop. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-darkest-dungeon-expansions.sh0000755000000000000000000001721614471751340017446 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=20230919.1 PLAYIT_COMPATIBILITY_LEVEL='2.16' 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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-darkest-dungeon.sh0000755000000000000000000001066114471751340015256 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Darkest Dungeon ### script_version=20230919.1 PLAYIT_COMPATIBILITY_LEVEL='2.16' 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_BIN32_PATH="${CONTENT_PATH_DEFAULT}/lib" CONTENT_LIBS_BIN32_FILES=' libfmod.so.9 libfmodstudio.so.9' CONTENT_LIBS_BIN64_PATH="${CONTENT_PATH_DEFAULT}/lib64" CONTENT_LIBS_BIN64_FILES=' libfmod.so.9 libfmodstudio.so.9' CONTENT_GAME_BIN32_FILES=' darkest.bin.x86' CONTENT_GAME_BIN64_FILES=' darkest.bin.x86_64' 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_BIN32 PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN32' launchers_write PKG='PKG_BIN64' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-day-of-the-tentacle.sh0000755000000000000000000000407514471751340015720 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=20230920.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='2700000' 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_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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-democratic-socialism-simulator.sh0000755000000000000000000000340214471751340020267 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=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-desperados-1.sh0000755000000000000000000000425214471751340014452 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=20230920.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='2000000' 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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 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 icon PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-desperados-3.sh0000755000000000000000000001206114471751340014451 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Desperados 3 ### script_version=20231029.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 will fail to start if "THQNOnline" and "thqnocfg.dat" are not included. CONTENT_GAME0_BIN_FILES=' THQNOnline MiVersion thqnocfg.dat' 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_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' 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_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_GI_ID" PKG_DATA_DEPS_DEMO="${PKG_DATA_DEPS_DEMO:-} $PKG_DATA_GI_ID_DEMO" 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_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_STREAMINGASSETS_ID" PKG_DATA_DEPS_DEMO="${PKG_DATA_DEPS_DEMO:-} $PKG_DATA_STREAMINGASSETS_ID_DEMO" 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" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_LEVELS_1_ID $PKG_DATA_LEVELS_2_ID" PKG_DATA_DEPS_DEMO="${PKG_DATA_DEPS_DEMO:-} $PKG_DATA_LEVELS_ID_DEMO" PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPS_DEMO="$PKG_DATA_ID_DEMO" 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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Delete unwanted files rm --force --recursive \ '__redist' \ 'app' \ 'commonappdata' \ 'tmp' ) # Include game data set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-deus-ex.sh0000755000000000000000000001443514471751340013541 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=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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='880000' 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=' system/*.u help maps music sounds textures' CONTENT_DOC_DATA_FILES=' manual.pdf system/*.txt' USER_PERSISTENT_FILES=' system/*.ini system/*.log' USER_PERSISTENT_DIRECTORIES=' save' ## 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") ' ## 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 APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # 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 wine_command() { printf "taskset --cpu-list 0 " if [ -z "$PLAYIT_WINE_CMD" ]; then command -v wine return 0 fi printf "%s" "$PLAYIT_WINE_CMD" } ' 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 OpenGL as default rendering engine SCRIPT_DEPS="${SCRIPT_DEPS:-} sed unix2dos" ## FIXME: This game can mess up desktop gamma values. ## FIXME: This game should be run in a WINE virtual desktop. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 OpenGL as 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-diablo-1.sh0000755000000000000000000000745114471751340013557 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Diablo 1 ### script_version=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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.1 release ARCHIVE_REQUIRED_DEVILUTIONX_0_NAME='devilutionx-linux-x86_64.tar.xz' ARCHIVE_REQUIRED_DEVILUTIONX_0_MD5='aca0d3eeec3d035fe7df649e5415b4cf' ARCHIVE_REQUIRED_DEVILUTIONX_0_URL='https://github.com/diasurgical/devilutionX/releases/tag/1.5.1' 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=' libbz2.so.1.0 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 libsodium.so.23 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-disco-elysium.sh0000755000000000000000000000731014471751340014747 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Disco Elysium ### script_version=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='disco-elysium' GAME_NAME='Disco Elysium' 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_2_URL='https://www.gog.com/game/disco_elysium' 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 elysium' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_STREAMINGASSETS_FILES=" ${UNITY3D_NAME}_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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-distance.sh0000755000000000000000000000564714471751340013766 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Distance ### script_version=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-dungeon-keeper-1.sh0000755000000000000000000001342014471751340015226 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Dungeon Keeper 1 ### script_version=20230920.2 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='510000' 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 *.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_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' PKG_MAIN_DEPS="$PKG_L10N_TXT_ID $PKG_L10N_VOICES_ID" # 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 unwanted files. rm --force --recursive \ '__redist' \ 'dosbox' # 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' tolower . ) # Include game icons PKG='PKG_MAIN' icons_inclusion # Include game data 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 PKG='PKG_MAIN' launchers_write # Build packages packages_generation # Print instructions 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_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.sh0000755000000000000000000000444714471751340015240 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Dungeon Keeper 2 ### script_version=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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='510000' 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=' *.dll *.exe' CONTENT_GAME_DATA_FILES=' data dk2texturecache' CONTENT_DOC_DATA_FILES=' *.pdf *.txt' USER_PERSISTENT_DIRECTORIES=' data/settings data/save' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Bullfrog Productions Ltd\Dungeon Keeper II' ## 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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" ## FIXME: This game should be run in a WINE virtual desktop. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-endzone-1-expansions.sh0000755000000000000000000000410214471751340016142 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=20230928.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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_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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-endzone-1.sh0000755000000000000000000000553514471751340013770 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Endzone 1 ### script_version=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='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_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 'SOURCE_ARCHIVE' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Avoid inclusion of unwanted files rm --recursive \ 'commonappdata' \ 'tmp' ) # Include game data set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-factorio.sh0000755000000000000000000001637114471751340013776 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=20231031.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='factorio' GAME_NAME='Factorio' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" # Archives ## Factorio (full game) 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_14_URL='https://www.factorio.com/' 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_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_12_URL='https://www.factorio.com/download' 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=' libc.so.6 libX11.so.6 libXext.so.6 libGL.so.1 libXinerama.so.1 libXrandr.so.2 libXcursor.so.1 libasound.so.2 libpulse.so.0 libpulse-simple.so.0' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-faster-than-light.sh0000755000000000000000000001115414471751340015503 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=20230920.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='410000' 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='410000' 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_BIN32_FILES=' FTL.x86' CONTENT_GAME_BIN64_FILES=' FTL.amd64' 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_BIN32='FTL.x86' APP_MAIN_EXE_BIN64='FTL.amd64' APP_MAIN_ICON='exe_icon.bmp' ## Work around issues with non-US locales APP_MAIN_PRERUN='# Work around issues with non-US locales export LANG=C ' PACKAGES_LIST='PKG_BIN32 PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_DEPS="$PKG_BIN_DEPS" 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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN32' launchers_write PKG='PKG_BIN64' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-freelancer.sh0000755000000000000000000001210314471751340014263 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Freelancer ### script_version=20230925.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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_GAME0_BIN_PATH="${CONTENT_PATH_DEFAULT}/game" CONTENT_GAME0_BIN_FILES=' exe/freelancer.exe' CONTENT_GAME1_BIN_PATH='cab1' CONTENT_GAME1_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_GAME0_L10N_PATH='cab1' CONTENT_GAME0_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_GAME1_L10N_PATH='cab2' CONTENT_GAME1_L10N_FILES=' data/audio/dialogue data/audio/mixes data/audio/sounds/ui/news_vendor_open.wav data/audio/*.ini data/audio/*.utf' 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_FONTS_DATA_PATH='fonts' CONTENT_FONTS_DATA_FILES=' *.ttf' 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' # Work around messed up desktop gamma values after leaving the game APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-} # Store gamma values to restore them after quitting the game rgamma=\$(xgamma 2>&1|sed 's/->//'|cut -d',' -f1|awk '{print \$2}') ggamma=\$(xgamma 2>&1|sed 's/->//'|cut -d',' -f2|awk '{print \$2}') bgamma=\$(xgamma 2>&1|sed 's/->//'|cut -d',' -f3|awk '{print \$2}') " APP_MAIN_POSTRUN="${APP_MAIN_POSTRUN:-}"' # Restore gamma values queried before starting the game xgamma -rgamma $rgamma -ggamma $ggamma -bgamma $bgamma ' PKG_BIN_DEPENDENCIES_COMMANDS="${PKG_BIN_DEPENDENCIES_COMMANDS:-} xgamma" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 'GAME0_BIN')" # Rename files with truncated names mv 'exe/freela_1.exe' 'exe/freelancer.exe' ) # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data ## TODO: The ./play.it library should provide a function path_fonts (or path_fonts_ttf?) returning this path. PATH_FONTS="$(option_value 'prefix')/share/fonts/truetype/$(game_id)" content_inclusion 'FONTS_DATA' 'PKG_DATA' "$PATH_FONTS" content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-frostpunk-expansions.sh0000755000000000000000000000467014471751340016407 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=20230920.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='7800' 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='7500' 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='8200' 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_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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-frostpunk.sh0000755000000000000000000001726614471751340014227 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Frostpunk ### script_version=20230920.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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_VERSION='1.6.1-gog51757' ARCHIVE_BASE_8_SIZE='9500000' 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_VERSION='1.6.1-gog42925' ARCHIVE_BASE_7_SIZE='9500000' 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_VERSION='1.6.1-gog42472' ARCHIVE_BASE_6_SIZE='9600000' 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_VERSION='1.6.0-gog40765' ARCHIVE_BASE_5_SIZE='9800000' 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_VERSION='1.6.0-gog40599' ARCHIVE_BASE_4_SIZE='9800000' 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_VERSION='1.5.0-gog36204' ARCHIVE_BASE_3_SIZE='8700000' 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_VERSION='1.5.0-gog35558' ARCHIVE_BASE_2_SIZE='8700000' 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_VERSION='1.4.1-gog33713' ARCHIVE_BASE_1_SIZE='6500000' 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_VERSION='1.4.0-gog32102' ARCHIVE_BASE_0_SIZE='6500000' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' *.dll *.exe *.ini' CONTENT_GAME_TEXTURES_FILES=' textures-s3.dat textures-s3.idx' CONTENT_GAME_DATA_FILES=' *.dat *.idx *.str' CONTENT_DOC_DATA_FILES=' *.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' ## Create some required empty files APP_MAIN_PRERUN='# Create some required empty files touch custom_localizations.dat voices.dat ' PACKAGES_LIST='PKG_BIN PKG_TEXTURES PKG_DATA' PKG_TEXTURES_ID="${GAME_ID}-textures" PKG_TEXTURES_DESCRIPTION='textures' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPS="$PKG_TEXTURES_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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete files that should not be included rm --force --recursive \ '__redist' \ 'app' \ 'commonappdata' \ 'tmp' ) # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-gamedec.sh0000755000000000000000000000621114471751340013545 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Gamedec ### script_version=20240109.3 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-ghost-master.sh0000755000000000000000000000460614471751340014603 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Ghost Master ### script_version=20230920.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='680000' 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=' *.cfg *.dll *.exe' CONTENT_GAME_DATA_FILES=' characters cursors fonts icons levels movies music new_animations otherobjects psparams pstextures scenarios screenshots scripts sound text ui voice *.txt' CONTENT_DOC_DATA_PATH="${CONTENT_PATH_DEFAULT}/.." CONTENT_DOC_DATA_FILES=' *.pdf *.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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' deinterlace video/x-ms-asf audio/x-wma, wmaversion=(int)1 video/x-wmv, wmvversion=(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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-gibbous-a-cthulhu-adventure.sh0000755000000000000000000000375414471751340017506 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=20231004.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='9500000' 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' ## If libsteam_api.so is not included, the game will crash after the opening video played when starting a new game. UNITY3D_PLUGINS=' libsteam_api.so ScreenSelector.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 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 PKG='PKG_DATA' icons_inclusion content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-goblins.sh0000755000000000000000000001352614471751340013624 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=20231105.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_FLOPPY_SCUMMID_GOB1='gob:gob1' APP_FLOPPY_ICON_GOB1='goggame-1207662273.ico' APP_CDROM_SCUMMID_GOB1='gob:gob1cd' APP_CDROM_ICON_GOB1='goggame-1207662273.ico' ## Goblins 2 APP_FLOPPY_SCUMMID_GOB2='gob:gob2' APP_FLOPPY_ICON_GOB2='goggame-1207662293.ico' APP_CDROM_SCUMMID_GOB2='gob:gob2cd' APP_CDROM_ICON_GOB2='goggame-1207662293.ico' ## Goblins 3 APP_FLOPPY_SCUMMID_GOB3='gob:gob3' APP_FLOPPY_ICON_GOB3='goggame-1207662313.ico' APP_CDROM_SCUMMID_GOB3='gob:gob3cd' APP_CDROM_ICON_GOB3='goggame-1207662313.ico' ## Set game language based on the available localization APP_CDROM_PRERUN='# Set game language based on the available localization if [ -e "${PATH_GAME}/frgob3.itk" ]; then APP_OPTIONS="${APP_OPTIONS:-} --language=fr" elif [ -e "${PATH_GAME}/usgob3.itk" ]; then APP_OPTIONS="${APP_OPTIONS:-} --language=us" fi ' # Packages ## Common PACKAGES_LIST=' PKG_COMMON PKG_FLOPPY PKG_CDROM' ## 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_FLOPPY_DEPS_GOB1="$PKG_COMMON_ID_GOB1" PKG_CDROM_ID_GOB1="${PKG_MAIN_ID_GOB1}-cdrom" PKG_CDROM_PROVIDES_GOB1=" $PKG_MAIN_ID_GOB1" PKG_CDROM_DEPS_GOB1="$PKG_COMMON_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_FLOPPY_DEPS_GOB2="$PKG_COMMON_ID_GOB2" PKG_CDROM_ID_GOB2="${PKG_MAIN_ID_GOB2}-cdrom" PKG_CDROM_PROVIDES_GOB2=" $PKG_MAIN_ID_GOB2" PKG_CDROM_DEPS_GOB2="$PKG_COMMON_ID_GOB2" ## Goblins 3 PACKAGES_LIST_GOB3=" PKG_L10N $PACKAGES_LIST" PKG_COMMON_ID_GOB3="${GAME_ID_GOB3}-common" PKG_L10N_ID_GOB3="${GAME_ID_GOB3}-l10n" PKG_L10N_ID_GOB3_EN="${PKG_L10N_ID_GOB3}-en" PKG_L10N_ID_GOB3_FR="${PKG_L10N_ID_GOB3}-fr" PKG_L10N_PROVIDES_GOB3=" $PKG_L10N_ID_GOB3" 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_FLOPPY_DEPS_GOB3="$PKG_COMMON_ID_GOB3" PKG_CDROM_ID_GOB3="${PKG_MAIN_ID_GOB3}-cdrom" PKG_CDROM_PROVIDES_GOB3=" $PKG_MAIN_ID_GOB3" PKG_CDROM_DEPS_GOB3="$PKG_COMMON_ID_GOB3 $PKG_L10N_ID_GOB3" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 set_current_package 'PKG_COMMON' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_FLOPPY' launchers_write 'APP_FLOPPY' set_current_package 'PKG_CDROM' launchers_write 'APP_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-godhood.sh0000755000000000000000000000436014471751340013606 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Godhood ### script_version=20230916.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' GAME_ID='godhood' GAME_NAME='Godhood' ARCHIVE_BASE_1_NAME='godhood_1_2_4_46551.sh' ARCHIVE_BASE_1_MD5='441bcc84f29501da6ea40216113750d1' ARCHIVE_BASE_1_SIZE='900000' ARCHIVE_BASE_1_VERSION='1.2.4-gog46551' ARCHIVE_BASE_1_URL='https://www.gog.com/game/godhood' ARCHIVE_BASE_0_NAME='godhood_1_0_5_40453.sh' ARCHIVE_BASE_0_MD5='6e0b1ddd1b9575b2c7d1f61ca2d57681' ARCHIVE_BASE_0_SIZE='900000' ARCHIVE_BASE_0_VERSION='1.0.5-gog40453' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libc++abi.so.1 libc++.so.1' CONTENT_GAME_BIN_FILES=' godhood' CONTENT_GAME_DATA_FILES=' *.bni data i18n' APP_MAIN_EXE='godhood' APP_MAIN_ICON='../support/icon.png' USER_PERSISTENT_DIRECTORIES=' userdata savedata' APP_MAIN_PRERUN="$APP_MAIN_PRERUN"' # Create required directory for saved games mkdir --parents savedata/Player' PACKAGES_LIST='PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl.so.4+CURL_OPENSSL_3 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libX11.so.6 libXcursor.so.1 libXrandr.so.2 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launcher PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-grim-dawn-expansions.sh0000755000000000000000000001170414471751340016235 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=20231211.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_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_3_URL='https://www.gog.com/game/grim_dawn_ashes_of_malmouth' 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_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_3_URL='https://www.gog.com/game/grim_dawn_forgotten_gods' 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.sh0000755000000000000000000000636014471751340014052 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Grim Dawn ### script_version=20231211.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='grim-dawn' GAME_NAME='Grim Dawn' 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_3_URL='https://www.gog.com/game/grim_dawn' 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='.' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-heroes-of-might-and-magic-4.sh0000755000000000000000000001271514471751340017142 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=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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=' binkw32.dll drvmgt.dll mss32.dll mp3dec.asi data/*.dll *.exe' CONTENT_GAME_DATA_FILES=' data maps' CONTENT_DOC_DATA_FILES=' *.chm *.pdf *.txt' USER_PERSISTENT_DIRECTORIES=' games' USER_PERSISTENT_FILES=' data/high_scores.dat' 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_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" 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=" $PKG_BIN_ID" PKG_BIN_DESCRIPTION_EN='English version' PKG_BIN_DESCRIPTION_FR='French version' PKG_BIN_DEPS_EN="$PKG_DATA_ID_EN" PKG_BIN_DEPS_FR="$PKG_DATA_ID_FR" ## FIXME: This game should be run in a WINE virtual desktop, # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-heroes-of-might-and-magic-5.sh0000755000000000000000000001755714471751340017154 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=20230921.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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/Profiles users/${USER}/Documents/My Games/Heroes of Might and Magic V/Hammers of Fate/Profiles' WINE_PERSISTENT_DIRECTORIES_TOTE=' users/${USER}/Documents/My Games/Heroes of Might and Magic V - Tribes of the East/Profiles' APP_MAIN_EXE='bin/h5_game.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") ' ## 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_L10N_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_ID}-fr" PKG_L10N_ID_TOTE="${GAME_ID_TOTE}-l10n" PKG_L10N_ID_TOTE_EN="${PKG_L10N_ID_TOTE}-en" PKG_L10N_ID_TOTE_FR="${PKG_L10N_ID_TOTE}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_PROVIDES_TOTE=" $PKG_L10N_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' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID $PKG_L10N_ID" PKG_BIN_DEPS_TOTE="$PKG_DATA_ID_TOTE $PKG_L10N_ID_TOTE" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-human-resource-machine.sh0000755000000000000000000000640214471751340016521 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=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_BIN32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86" CONTENT_GAME_BIN32_FILES=' HumanResourceMachine.bin.x86' CONTENT_GAME_BIN64_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86_64" CONTENT_GAME_BIN64_FILES=' HumanResourceMachine.bin.x86_64' 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_BIN32='HumanResourceMachine.bin.x86' APP_MAIN_EXE_BIN64='HumanResourceMachine.bin.x86_64' APP_MAIN_ICON_HUMBLE='noarch/icon.png' APP_MAIN_ICON_GOG='icon.png' PACKAGES_LIST='PKG_BIN32 PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN32' launchers_write set_current_package 'PKG_BIN64' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-impression-games-city-builders.sh0000755000000000000000000000614214471751340020222 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=20231006.2 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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' ## 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_DATA_ID_ZEUS="${GAME_ID_ZEUS}-data" PKG_DATA_ID_EMPEROR="${GAME_ID_EMPEROR}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS_ZEUS="$PKG_DATA_ID_ZEUS" PKG_BIN_DEPS_EMPEROR="$PKG_DATA_ID_EMPEROR" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 PKG='PKG_DATA' icons_inclusion content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-infinity-engine-enhanced-edition-expansions.sh0000755000000000000000000000550714471751340022644 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=20230920.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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_MAIN_DEPS_DRAGONSPEAR="$GAME_ID_DRAGONSPEAR" PKG_MAIN_DEPS_FACES="$GAME_ID_FACES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 # Clean up rm --recursive "$PLAYIT_WORKDIR" # Print instructions print_instructions exit 0 games/play-infinity-engine-enhanced-edition-games.sh0000755000000000000000000002105614471751340021546 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=20231016.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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' ## 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' ## 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' ## 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' 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_FR_FILES=' lang/fr_FR' CONTENT_GAME_DATA_FILES=' chitin.key engine.lua Manuals movies music scripts data lang/en_US' 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' ## 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_FR PKG_DATA' PKG_L10N_FR_DESCRIPTION='French localization' PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' 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' ## Baldur's Gate 1 Enhanced Edition PKG_L10N_FR_ID_BG1="${GAME_ID_BG1}-l10n-fr" PKG_L10N_FR_DESCRIPTION_BG1="$PKG_L10N_FR_DESCRIPTION" PKG_L10N_FR_DEPS_BG1="$GAME_ID_BG1" PKG_DATA_ID_BG1="${GAME_ID_BG1}-data" PKG_BIN_DEPS_BG1="$PKG_DATA_ID_BG1" ## Baldur's Gate 2 Enhanced Edition PKG_L10N_FR_ID_BG2="${GAME_ID_BG2}-l10n-fr" PKG_L10N_FR_DESCRIPTION_BG2="$PKG_L10N_FR_DESCRIPTION" PKG_L10N_FR_DEPS_BG2="$GAME_ID_BG2" PKG_DATA_ID_BG2="${GAME_ID_BG2}-data" PKG_BIN_DEPS_BG2="$PKG_DATA_ID_BG2" ## Icewind Dale 1 Enhanced Edition PKG_L10N_FR_ID_IWD1="${GAME_ID_IWD1}-l10n-fr" PKG_L10N_FR_DESCRIPTION_IWD1="$PKG_L10N_FR_DESCRIPTION" PKG_L10N_FR_DEPS_IWD1="$GAME_ID_IWD1" PKG_DATA_ID_IWD1="${GAME_ID_IWD1}-data" PKG_BIN_DEPS_IWD1="$PKG_DATA_ID_IWD1" ## Planescape: Torment Enhanced Edition PKG_L10N_FR_ID_PST="${GAME_ID_PST}-l10n-fr" PKG_L10N_FR_DESCRIPTION_PST="$PKG_L10N_FR_DESCRIPTION" PKG_L10N_FR_DEPS_PST="$GAME_ID_PST" PKG_DATA_ID_PST="${GAME_ID_PST}-data" PKG_BIN_DEPS_PST="$PKG_DATA_ID_PST" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 optional extra archives case "$(current_archive)" in ('ARCHIVE_BASE_BG1_'*) ARCHIVE_OPTIONAL_ICONS_NAME='baldurs-gate-1-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='58401cf80bc9f1a9e9a0896f5d74b02a' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/resources/baldurs-gate-1-enhanced-edition/' ;; ('ARCHIVE_BASE_BG2_'*) ARCHIVE_OPTIONAL_ICONS_NAME='baldurs-gate-2-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='36055600f9461793995a318e74b133e8' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/baldurs-gate-2-enhanced-edition/' ;; ('ARCHIVE_BASE_IWD1_'*) ARCHIVE_OPTIONAL_ICONS_NAME='icewind-dale-1-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='2e7db406aca79f9182c4efa93df80bf4' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/resources/icewind-dale-1-enhanced-edition/' ;; ('ARCHIVE_BASE_PST_'*) ARCHIVE_OPTIONAL_ICONS_NAME='planescape-torment-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='ed1c9961e2ecfa401af825d75723fe9c' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/planescape-torment-enhanced-edition/' ;; esac archive_initialize_optional \ 'ARCHIVE_ICONS' \ 'ARCHIVE_OPTIONAL_ICONS' # Extract game data archive_extraction_default if archive_is_available 'ARCHIVE_ICONS'; then archive_extraction 'ARCHIVE_ICONS' fi # Include game data ## Use the original game icons from the optional archive, ## or fall back on the GOG-specific icon shipped in the game installer. if archive_is_available 'ARCHIVE_ICONS'; then case "$(current_archive)" in ('ARCHIVE_BASE_BG1_'*) CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 16x16 24x42 32x32 48x48 64x64 256x256' ;; ('ARCHIVE_BASE_BG2_'*) CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 16x16 32x32 48x48 64x64 128x128 256x256' ;; ('ARCHIVE_BASE_IWD1_'*) CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 16x16 32x32 48x48 64x64 128x128 256x256' ;; ('ARCHIVE_BASE_PST_'*) CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 16x16 32x32 48x48 64x64 96x96 128x128 256x256' ;; esac content_inclusion 'ICONS_DATA' 'PKG_DATA' "$(path_icons)" else APP_MAIN_ICON='../support/icon.png' set_current_package 'PKG_DATA' icons_inclusion fi content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # 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' 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.sh0000755000000000000000000003603414471751340016354 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=20230916.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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_DOC_L10N_FILES=' *.htm *.pdf *.txt' 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_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' 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" 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_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' PKG_BIN_ARCH='32' ## Baldur's Gate 1 PKG_L10N_ID_BG1="${GAME_ID_BG1}-l10n" PKG_L10N_ID_BG1_EN="${PKG_L10N_ID_BG1}-en" PKG_L10N_ID_BG1_FR="${PKG_L10N_ID_BG1}-fr" PKG_L10N_ID_BG1_PL="${PKG_L10N_ID_BG1}-pl" PKG_L10N_PROVIDES_BG1=" $PKG_L10N_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" PKG_BIN_DEPS_BG1="$PKG_L10N_ID_BG1 $PKG_DATA_ID_BG1" ## Baldur's Gate 2 PKG_L10N_ID_BG2="${GAME_ID_BG2}-l10n" PKG_L10N_ID_BG2_EN="${PKG_L10N_ID_BG2}-en" PKG_L10N_ID_BG2_FR="${PKG_L10N_ID_BG2}-fr" PKG_L10N_PROVIDES_BG2=" $PKG_L10N_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" PKG_BIN_DEPS_BG2="$PKG_L10N_ID_BG2 $PKG_DATA_ID_BG2" ## Icewind Dale 1 PKG_L10N_ID_IWD1="${GAME_ID_IWD1}-l10n-en" PKG_L10N_DESCRIPTION_IWD1="$PKG_L10N_DESCRIPTION_EN" PKG_DATA_ID_IWD1="${GAME_ID_IWD1}-data" PKG_BIN_DEPS_IWD1="$PKG_L10N_ID_IWD1 $PKG_DATA_ID_IWD1" ## Icewind Dale 2 PKG_L10N_ID_IWD2="${GAME_ID_IWD2}-l10n" PKG_L10N_ID_IWD2_EN="${PKG_L10N_ID_IWD2}-en" PKG_L10N_ID_IWD2_FR="${PKG_L10N_ID_IWD2}-fr" PKG_L10N_PROVIDES_IWD2=" $PKG_L10N_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" PKG_BIN_DEPS_IWD2="$PKG_L10N_ID_IWD2 $PKG_DATA_ID_IWD2" ## Planescape: Torment PKG_L10N_ID_PST="${GAME_ID_PST}-l10n" PKG_L10N_ID_PST_EN="${PKG_L10N_ID_PST}-en" PKG_L10N_ID_PST_FR="${PKG_L10N_ID_PST}-fr" PKG_L10N_ID_PST_RU="${PKG_L10N_ID_PST}-ru" PKG_L10N_PROVIDES_PST=" $PKG_L10N_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" PKG_BIN_DEPS_PST="$PKG_L10N_ID_PST $PKG_DATA_ID_PST" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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)" # Get the current archive current_archive=$(context_archive) # Delete unwanted files rm --force --recursive \ '__support' \ 'gameuxinstallhelper.dll' \ 'goggame.dll' \ 'goggame-'*'.dll' \ 'ddrawfix' \ 'setup-ddrawfix.exe' # mojosetup installers # - Convert all file names to lowercase if [ "$(archive_get_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 --no-clobber --recursive '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 cat >> "$config_file" <<- EOF [Program Options] Full Screen=0 EOF ) # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-into-the-breach.sh0000755000000000000000000001115414471751340015133 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=20231016.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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' 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" # Check for the presence of optional extra archives 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/' archive_initialize_optional \ 'ARCHIVE_ICONS' \ 'ARCHIVE_OPTIONAL_ICONS' # Extract game data archive_extraction_default if archive_is_available 'ARCHIVE_ICONS'; then archive_extraction 'ARCHIVE_ICONS' fi # Include game data if archive_is_available 'ARCHIVE_ICONS'; then CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 16x16 32x32 48x48 64x64 128x128 256x256' content_inclusion 'ICONS_DATA' 'PKG_DATA' "$(path_icons)" fi content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-ironclad-tactics.sh0000755000000000000000000000472314471751340015411 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Ironclad Tactics ### script_version=20230921.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='960000' 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' # libRotor.so is linked against libsteam_api.so, so we have to include it too. CONTENT_LIBS_BIN_FILES=' libRotor.so 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' APP_MAIN_EXE='mono' APP_MAIN_OPTIONS='Game.exe' APP_MAIN_ICON='Game.exe' ## 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_PRERUN=' # Set environment for shipped mono binary export MONO_PATH=.' 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 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libSDL2_mixer-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" # Apply common Mono tweaks APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(mono_launcher_tweaks)" # Extract game data archive_extraction_default # Include game icon PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-jade-empire.sh0000755000000000000000000001322114471751340014341 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Jade Empire ### script_version=20230921.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='7600000' 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='7700000' 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=' *.dll *.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' 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_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" # Fix game process CPU affinity # cf. https://bugs.winehq.org/show_bug.cgi?id=45482 wine_launcher_run() { local application application="$1" cat <<- 'EOF' # Run the game cd "${WINEPREFIX}/drive_c/${GAME_ID}" EOF application_prerun "$application" cat <<- 'EOF' $(wine_command) start "C:\\${GAME_ID}\\${APP_EXE}" $APP_OPTIONS "$@" ## Fix game process CPU affinity ## cf. https://bugs.winehq.org/show_bug.cgi?id=45482 process_name="C:\\${GAME_ID}\\${APP_EXE}" process_pid=$(pidof "$process_name") while [ "$(LANG=C taskset -p "$process_pid")" = "pid ${process_pid}'s current affinity mask: ff" ]; do sleep 1s done taskset -p ff "$process_pid" while kill -0 "$process_pid" 2>/dev/null; do sleep 1m done EOF application_postrun "$application" } # Extract game data archive_extraction_default # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-jazz-jackrabbit-2.sh0000755000000000000000000001272614471751340015377 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Jazz Jackrabbit 2 ### script_version=20231016.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='jazz-jackrabbit-2' GAME_NAME='Jazz Jackrabbit 2' 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_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' 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' ARCHIVE_BASE_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_OPTIONAL_JAZZ2NATIVE_0_NAME='Jazz2_1.0.0_Linux.zip' ARCHIVE_OPTIONAL_JAZZ2NATIVE_0_MD5='868ce9ac55ee3a085eed5503d7647a67' ARCHIVE_OPTIONAL_JAZZ2NATIVE_0_SIZE='8000' ARCHIVE_OPTIONAL_JAZZ2NATIVE_0_URL='http://deat.tk/jazz2/' # Archives content ## Jazz Jackrabbit 2 CONTENT_PATH_DEFAULT='app' CONTENT_PATH_DEFAULT_JJ2PLUS='.' CONTENT_GAME_BIN_WINE_FILES=' jcs.ini-plus plus.ini-default *.dll *.exe *.ini' 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_NATIVE_PATH='64-bit' CONTENT_GAME_BIN_NATIVE_FILES=' Content jazz2 jazz2_clang jazz2_sdl2' USER_PERSISTENT_FILES=' SAVEGAME.* *.cfg *.CFG *.ini' ## WINE only - Work around a crash on level launch WINE_WINETRICKS_VERBS='winxp' APP_WINE_EXE='jazz2.exe' APP_NATIVE_EXE='jazz2' APP_NATIVE_PRERUN='# Jazz² Resurrection engine expects the original game data to be found in "Source". # A hard copy is done, because the engine is confused by symbolic links. if [ ! -e "Source" ]; then mkdir "Source" cp --recursive "$PATH_GAME"/* "Source" fi ' PACKAGES_LIST='PKG_BIN_WINE PKG_DATA' PACKAGES_LIST_NATIVE='PKG_BIN_WINE PKG_BIN_NATIVE PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_CHRISTMAS="${GAME_ID_CHRISTMAS}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ID="${GAME_ID}-bin" PKG_BIN_ID_CHRISTMAS="${GAME_ID_CHRISTMAS}-bin" PKG_BIN_WINE_ID="${PKG_BIN_ID}-wine" PKG_BIN_WINE_ID_CHRISTMAS="${PKG_BIN_ID_CHRISTMAS}-wine" PKG_BIN_WINE_PROVIDES=" $PKG_BIN_ID" PKG_BIN_WINE_PROVIDES_CHRISTMAS=" $PKG_BIN_ID_CHRISTMAS" PKG_BIN_WINE_ARCH='32' PKG_BIN_WINE_DEPS="$PKG_DATA_ID" PKG_BIN_WINE_DEPS_CHRISTMAS="$PKG_DATA_ID_CHRISTMAS" PKG_BIN_NATIVE_ID="${PKG_BIN_ID}-native" PKG_BIN_NATIVE_ID_CHRISTMAS="${PKG_BIN_ID_CHRISTMAS}-native" PKG_BIN_NATIVE_PROVIDES=" $PKG_BIN_ID" PKG_BIN_NATIVE_PROVIDES_CHRISTMAS=" $PKG_BIN_ID_CHRISTMAS" PKG_BIN_NATIVE_ARCH='64' PKG_BIN_NATIVE_DEPS="$PKG_DATA_ID" PKG_BIN_NATIVE_DEPS_CHRISTMAS="$PKG_DATA_ID_CHRISTMAS" PKG_BIN_NATIVE_DEPENDENCIES_LIBRARIES=' 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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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_optional \ 'ARCHIVE_JAZZ2NATIVE' \ 'ARCHIVE_OPTIONAL_JAZZ2NATIVE_0' if archive_is_available 'ARCHIVE_JAZZ2NATIVE'; then export PACKAGES_LIST="$PACKAGES_LIST_NATIVE" fi # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete unwanted files rm --force --recursive \ '__support' \ 'commonappdata' \ 'tmp' ) if archive_is_available 'ARCHIVE_JAZZ2NATIVE'; then archive_extraction 'ARCHIVE_JAZZ2NATIVE' fi # Include game data set_current_package 'PKG_DATA' icons_inclusion 'APP_WINE' content_inclusion_default # Write launchers set_current_package 'PKG_BIN_WINE' launchers_write 'APP_WINE' if archive_is_available 'ARCHIVE_JAZZ2NATIVE'; then set_current_package 'PKG_BIN_NATIVE' launchers_write 'APP_NATIVE' fi # Build packages packages_generation printf '\n' printf 'WINE:' print_instructions 'PKG_DATA' 'PKG_BIN_WINE' if archive_is_available 'ARCHIVE_JAZZ2NATIVE'; then printf 'Jazz² Resurrection:' print_instructions 'PKG_DATA' 'PKG_BIN_NATIVE' fi # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-kapital-sparks-of-revolution.sh0000755000000000000000000000362114471751340017716 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=20231129.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-kingdom-rush.sh0000755000000000000000000000700214471751340014566 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=20230921.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='380000' 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='460000' 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='500000' 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 libluajit-5.1.so.2 can not be used, as it triggers a crash on launch. CONTENT_LIBS_MAIN_FILES=' libluajit-5.1.so.2 liblove.so.0' 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 icons icons_inclusion # Include game data content_inclusion_default # Write launchers launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-little-inferno-expansions.sh0000755000000000000000000000314714471751340017305 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=20230921.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='430' 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_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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-little-inferno.sh0000755000000000000000000001153114471751340015114 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=20230921.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='280000' 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_BIN32_PATH_HUMBLE='data/x86' CONTENT_GAME_BIN32_PATH_HUMBLE_0="$CONTENT_PATH_DEFAULT_HUMBLE_0" CONTENT_GAME_BIN32_FILES=' LittleInferno.bin.x86' CONTENT_GAME_BIN64_PATH_HUMBLE='data/x86_64' CONTENT_GAME_BIN64_FILES=' LittleInferno.bin.x86_64' 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_BIN32='LittleInferno.bin.x86' APP_MAIN_EXE_BIN64='LittleInferno.bin.x86_64' 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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_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' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_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_BIN32_DEPENDENCIES_LIBRARIES_OLD="$PKG_BIN32_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" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers case "$(context_archive)" in ('ARCHIVE_BASE_HUMBLE_0'|'ARCHIVE_BASE_GOG_'*) ## Old 1.x builds provide a 32-bit binary only. PKG='PKG_BIN32' launchers_write ;; (*) PKG='PKG_BIN32' launchers_write PKG='PKG_BIN64' launchers_write ;; esac # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-loop-hero.sh0000755000000000000000000000610014471751340014061 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Loop Hero ### script_version=20230916.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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' APP_MAIN_EXE_DEMO='LooPatHerO' APP_MAIN_ICON='assets/icon.png' PACKAGES_LIST='PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_PROVIDES=" $PKG_DATA_ID" PKG_DATA_DESCRIPTION='data' PKG_BIN_ID="$GAME_ID" PKG_BIN_ID_DEMO="$GAME_ID_DEMO" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" 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' # 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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 icon PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-mask-of-the-rose-expansions.sh0000755000000000000000000000454114471751340017432 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=20240127.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_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.sh0000755000000000000000000000575314471751340015253 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=20240127.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_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_4_URL='https://www.gog.com/game/mask_of_the_rose' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-monkey-island-3.sh0000755000000000000000000000704614471751340015101 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=20231018.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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" # 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 } # Extract game data archive_extraction_default # Include game data set_current_package 'PKG_MAIN' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_MAIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-monkey-island-4.sh0000755000000000000000000001360314471751340015076 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=20231016.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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' APP_WINE_EXE='monkey4.exe' # Packages PACKAGES_LIST='PKG_BIN_SCUMMVM PKG_BIN_WINE PKG_L10N PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='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_BIN_ID="$GAME_ID" PKG_BIN_PROVIDES=" $PKG_BIN_ID" ## ScummVM PKG_BIN_SCUMMVM_ID="${PKG_BIN_ID}-scummvm" PKG_BIN_SCUMMVM_ID_EN="${PKG_BIN_SCUMMVM_ID}-en" PKG_BIN_SCUMMVM_ID_FR="${PKG_BIN_SCUMMVM_ID}-fr" PKG_BIN_SCUMMVM_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_SCUMMVM_DESCRIPTION_EN='English version' PKG_BIN_SCUMMVM_DESCRIPTION_FR='French version' PKG_BIN_SCUMMVM_DEPS="$PKG_DATA_ID" ## WINE PKG_BIN_WINE_ARCH='32' PKG_BIN_WINE_ID="${PKG_BIN_ID}-wine" PKG_BIN_WINE_ID_EN="${PKG_BIN_WINE_ID}-en" PKG_BIN_WINE_ID_FR="${PKG_BIN_WINE_ID}-fr" PKG_BIN_WINE_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_WINE_DESCRIPTION_EN='English version' PKG_BIN_WINE_DESCRIPTION_FR='French version' PKG_BIN_WINE_DEPS="$PKG_DATA_ID $PKG_L10N_ID" # 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" ## FIXME: This game can get display issues on some resolutions, when run on Wayland without using a virtual desktop. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 'SOURCE_ARCHIVE' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete unwanted files 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 set_current_package 'PKG_DATA' icons_inclusion 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 set_current_package 'PKG_BIN_SCUMMVM' launchers_write 'APP_SCUMMVM' set_current_package 'PKG_BIN_WINE' launchers_write '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.sh0000755000000000000000000000715614471751340020012 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=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-myst-1.sh0000755000000000000000000000410314471751340013310 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Myst 1 ### script_version=20230921.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' GAME_ID='myst-1' GAME_NAME='Myst' ARCHIVE_BASE_1_NAME='setup_myst_masterpiece_edition_1.0_svm_update_4_(22598).exe' ARCHIVE_BASE_1_MD5='e3c62eeb19abd2c9a947aee8300e995d' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_myst_masterpiece_edition_1.0_svm_update_4_(22598)-1.bin' ARCHIVE_BASE_1_PART1_MD5='4b84a68ec57e55bcc9b522c6333c669c' ARCHIVE_BASE_1_SIZE='1500000' ARCHIVE_BASE_1_VERSION='1.0.4-gog22598' ARCHIVE_BASE_1_URL='https://www.gog.com/game/myst_masterpiece_edition' ARCHIVE_BASE_0_NAME='setup_myst_masterpiece_2.0.0.22.exe' ARCHIVE_BASE_0_MD5='e7a979dc6ca044eaec2984877ac032c5' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='620000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.22' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' 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=' manual.pdf readme.txt' APP_MAIN_SCUMMID='mohawk:myst' APP_MAIN_ICON='app/goggame-1207658818.ico' APP_MAIN_ICON_0='myst.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 icons icons_inclusion # Include game data content_inclusion_default # Write launchers launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-obduction.sh0000755000000000000000000000364514471751340014156 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Obduction ### script_version=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='obduction' GAME_NAME='Obduction' ARCHIVE_BASE_0_NAME='setup_obduction_1.8.4.1-ssl_(51210).exe' ARCHIVE_BASE_0_MD5='02477c05bece9e1655adc31bbc5a89fa' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_obduction_1.8.4.1-ssl_(51210)-1.bin' ARCHIVE_BASE_0_PART1_MD5='834211d7c8218965106369575f72c3ac' ARCHIVE_BASE_0_PART2_NAME='setup_obduction_1.8.4.1-ssl_(51210)-2.bin' ARCHIVE_BASE_0_PART2_MD5='73e5a3a0b413f24ea0e7348e86301b11' ARCHIVE_BASE_0_SIZE='9300000' ARCHIVE_BASE_0_VERSION='1.8.4.1-gog51210' ARCHIVE_BASE_0_URL='https://www.gog.com/game/obduction' UNREALENGINE4_NAME='obduction' CONTENT_PATH_DEFAULT='.' CONTENT_DOC_DATA_FILES=' obduction_user_manual.pdf' APP_MAIN_EXE="${UNREALENGINE4_NAME}.exe" PACKAGES_LIST='PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-off-world-resource-base.sh0000755000000000000000000000456514471751340016626 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=20230921.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='660000' 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' 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_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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-oil-rush.sh0000755000000000000000000000717314471751340013732 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Oil Rush ### script_version=20230921.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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_VERSION='1.35-humble1' ARCHIVE_BASE_0_SIZE='1400000' CONTENT_PATH_DEFAULT='.' 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_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_GAME_BIN32_FILES=' bin/launcher_x86 bin/OilRush_x86' CONTENT_GAME_BIN64_FILES=' bin/launcher_x64 bin/OilRush_x64' 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_BIN32='bin/launcher_x86' APP_MAIN_EXE_BIN64='bin/launcher_x64' 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_BIN32 PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_DEPS="$PKG_BIN_DEPS" 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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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" # Copy the game binary into the game prefix APP_MAIN_PRERUN=" $(native_launcher_binary_copy 'APP_MAIN' | sed 's#\${APP_EXE}#bin/OilRush_x86#') $(native_launcher_binary_copy 'APP_MAIN' | sed 's#\${APP_EXE}#bin/OilRush_x64#') $(application_prerun 'APP_MAIN')" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Set execution bit on the game binaries chmod 755 'bin/OilRush_x86' 'bin/OilRush_x64' ) # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN32' launchers_write PKG='PKG_BIN64' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-painkiller.sh0000755000000000000000000000557414471751340014325 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Painkiller ### script_version=20230922.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='4000000' 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='3700000' 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_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' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_MOVIES_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 # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-pandora-first-contact.sh0000755000000000000000000000707614471751340016374 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Pandora: First Contact ### script_version=20231105.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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' 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' ## 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" # Check for the presence of optional extra archives 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/' archive_initialize_optional \ 'ARCHIVE_ICONS' \ 'ARCHIVE_OPTIONAL_ICONS' # Extract game data archive_extraction_default if archive_is_available 'ARCHIVE_ICONS'; then archive_extraction 'ARCHIVE_ICONS' fi ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Set the required execution permissions on the server binary. chmod 755 'Binaries/PandoraServer.bin' ) # Include game data ## Use the original game icons from the optional archive, ## or fall back on the GOG-specific icon shipped in the game installer. if archive_is_available 'ARCHIVE_ICONS'; then CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 256x256' content_inclusion 'ICONS_DATA' 'PKG_DATA' "$(path_icons)" else APP_MAIN_ICON='../support/icon.png' set_current_package 'PKG_DATA' icons_inclusion fi content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-pharaoh.sh0000755000000000000000000001100114471751340013573 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Pharaoh ### script_version=20231105.3 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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='810000' 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 205 ARCHIVE_OPTIONAL_AKHENATEN_1_NAME='akhenaten.linux' ARCHIVE_OPTIONAL_AKHENATEN_1_MD5='cdd40aa1ab541035b1a2c5e02cbe5064' ARCHIVE_OPTIONAL_AKHENATEN_1_SIZE='34008' ARCHIVE_OPTIONAL_AKHENATEN_1_URL='https://dalerank.itch.io/akhenaten' ### 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 - 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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ID="$GAME_ID" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN_DEPS="$PKG_DATA_ID" 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_DEPS="$PKG_BIN_DEPS" 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_DEPS="$PKG_BIN_DEPS" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Check for the presence of the optional extra archives archive_initialize_optional \ 'ARCHIVE_AKHENATEN' \ '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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default if archive_is_available 'ARCHIVE_AKHENATEN'; then set_current_package 'PKG_BIN_LINUX' install -D --mode=755 \ "$(archive_path 'ARCHIVE_AKHENATEN')" \ "$(package_path 'PKG_BIN_LINUX')$(path_game_data)/$(application_exe 'APP_MAIN')" fi # Write launchers set_current_package 'PKG_BIN_WINE' launchers_write if archive_is_available 'ARCHIVE_AKHENATEN'; then set_current_package 'PKG_BIN_LINUX' launchers_write 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.sh0000755000000000000000000001421614471751340020420 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=20230922.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='1300' 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='1300' 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='1300' 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='5600000' 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='4400000' 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='1300' 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_MAIN_DEPS="$GAME_ID" PKG_MAIN_DEPS_TWM2="${PKG_MAIN_DEPS:-} ${GAME_ID}-${EXPANSION_ID_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)" current_archive=$(context_archive) # 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 typo in 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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-pillars-of-eternity-1.sh0000755000000000000000000000535014471751340016232 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=20230922.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='15000000' 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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_AREAS_ID="${PKG_DATA_ID}-areas" PKG_DATA_AREAS_DESCRIPTION='areas' PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_AREAS_ID" 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 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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-prince-of-persia-2008.sh0000755000000000000000000002303114471751340015711 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=20231028.4 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion 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 set_current_package 'PKG_BIN' launchers_write # 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.sh0000755000000000000000000001131714471751340020550 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=20231021.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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='.' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-pyre.sh0000755000000000000000000000703314471751340013142 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Pyre ### script_version=20230922.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='8100000' 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='8200000' 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_BIN32_PATH_ITCH="${CONTENT_PATH_DEFAULT_ITCH}/lib" CONTENT_LIBS_BIN32_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib" CONTENT_LIBS_BIN32_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=' libBink2.so libFModPlugins.so libfmod.so.8 libfmodstudio.so.8 liblua52.so libMonoPosixHelper.so' CONTENT_GAME_BIN32_FILES=' Pyre.bin.x86' CONTENT_GAME_BIN64_FILES=' Pyre.bin.x86_64' 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_BIN32='Pyre.bin.x86' APP_MAIN_EXE_BIN64='Pyre.bin.x86_64' APP_MAIN_ICON='PyreIcon.bmp' PACKAGES_LIST='PKG_BIN32 PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_DEPS="$PKG_BIN_DEPS" 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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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" # Apply common Mono tweaks APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(mono_launcher_tweaks)" # Extract game data archive_extraction_default # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN32' launchers_write PKG='PKG_BIN64' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-raji-an-ancient-epic.sh0000755000000000000000000001037014471751340016037 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=20240109.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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' 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_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" ## FIXME: This game can get display issues on some resolutions, when run on Wayland without using a virtual desktop. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 optional extra archives 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/' archive_initialize_optional \ 'ARCHIVE_ICONS' \ 'ARCHIVE_OPTIONAL_ICONS' # Extract game data archive_extraction_default if archive_is_available 'ARCHIVE_ICONS'; then archive_extraction 'ARCHIVE_ICONS' fi ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Convert all file paths to lowercase. tolower . ) ( cd "${PLAYIT_WORKDIR}/gamedata" ## Convert icon file name for the game demo. case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) mv \ "256x256/apps/${GAME_ID}.png" \ "256x256/apps/$(game_id).png" ;; esac ) # Include game data if archive_is_available 'ARCHIVE_ICONS'; then CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 256x256' content_inclusion 'ICONS_DATA' 'PKG_DATA' "$(path_icons)" else set_current_package 'PKG_DATA' icons_inclusion fi content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-rayman-1.sh0000755000000000000000000000574414471751340013617 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Rayman 1 ### script_version=20230924.2 GAME_ID='rayman-1' GAME_NAME='Rayman' PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='290000' 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' 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="$APP_MAIN_PRERUN" APP_FAN_DOSBOX_PRERUN="$APP_MAIN_DOSBOX_PRERUN" 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="$APP_MAIN_PRERUN" APP_KIT_DOSBOX_PRERUN="$APP_MAIN_DOSBOX_PRERUN" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Convert all game files 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 icons icons_inclusion # Include game data content_inclusion_default # Write launchers launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-rayman-origins.sh0000755000000000000000000001032614471751340015121 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Rayman Origins ### script_version=20231105.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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}/My 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 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="${archive_path}.part" \ bs=567219 skip=41 2>/dev/null rm "$archive_path" dd \ if="${archive_path}.part" \ of='data2.cab' \ bs=11614661 count=183 2>/dev/null rm "${archive_path}.part" ) 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-renowned-explorers-expansions.sh0000755000000000000000000001404614471751340020214 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=20230923.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='69000' 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='22000' 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_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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-renowned-explorers.sh0000755000000000000000000001075014471751340016025 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=20230925.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='1200000' 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_LIBS_BIN32_PATH="${CONTENT_PATH_DEFAULT}/x86" CONTENT_LIBS_BIN32_FILES=' libc++.so.1 libc++abi.so.1' CONTENT_LIBS_BIN64_PATH="${CONTENT_PATH_DEFAULT}/x86_64" CONTENT_LIBS_BIN64_FILES=' libc++.so.1 libc++abi.so.1' CONTENT_GAME_BIN32_FILES=' x86/abbeycore' CONTENT_GAME_BIN64_FILES=' x86_64/abbeycore' CONTENT_GAME_DATA_FILES=' data soundbanks *.bni' USER_PERSISTENT_DIRECTORIES=' userdata' APP_MAIN_EXE_BIN32='x86/abbeycore' APP_MAIN_EXE_BIN64='x86_64/abbeycore' 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_BIN32 PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_DEPS="$PKG_BIN_DEPS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN32' launchers_write PKG='PKG_BIN64' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-reus.sh0000755000000000000000000000767614471751340013156 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Reus ### script_version=20230923.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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 Steamworks-CS.dll.config' CONTENT_DOC_MAIN_FILES=' Linux.README' ## Include shipped libraries that can not be replaced by system ones 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=' libfmodevent-4.44.00.so libfmodevent.so libfmodex-4.44.00.so libfmodex.so 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=' libfmodevent64-4.44.00.so libfmodevent.so libfmodex64-4.44.00.so libfmodex.so libFontNative.so libmojoshader.so libtheorafile.so' APP_MAIN_EXE='Reus.exe' APP_MAIN_ICON='Reus.bmp' PACKAGES_LIST='PKG_MAIN PKG_LIBS32 PKG_LIBS64' PKG_MAIN_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_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_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS32_ARCH='32' PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS64_ARCH='64' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 icons PKG='PKG_MAIN' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_MAIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-roadwarden.sh0000755000000000000000000000716014471751340014312 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Roadwarden ### script_version=20231001.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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' CONTENT_LIBS_BIN_PATH="${CONTENT_PATH_DEFAULT}/lib/py2-linux-x86_64" CONTENT_LIBS_BIN_FILES=' librenpython.so' CONTENT_GAME_BIN_FILES=' lib/py2-linux-x86_64/Roadwarden lib/py2-linux-x86_64/python lib/py2-linux-x86_64/pythonw lib/py2-linux-x86_64/zsync lib/py2-linux-x86_64/zsyncmake' CONTENT_GAME_DATA_FILES=' game renpy lib/python2.7 Roadwarden.py' CONTENT_FONTS_DATA_PATH="${CONTENT_PATH_DEFAULT}/game" CONTENT_FONTS_DATA_FILES=' munro.ttf philosopher.ttf' APP_MAIN_EXE='lib/py2-linux-x86_64/Roadwarden' APP_MAIN_ICON='../support/icon.png' ## The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". APP_MAIN_PRERUN='# The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST='PKG_BIN PKG_DATA' PKG_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 libGL.so.1 libm.so.6 libpthread.so.0 libutil.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" # Link the fonts into the game directory, or the engine would fail to find them. ## TODO: The library should provide a function path_fonts (or path_fonts_ttf?) returning this path. PATH_FONTS="$(option_value 'prefix')/share/fonts/truetype/$(game_id)" game_data_path="$(package_path 'PKG_DATA')$(path_game_data)/game" mkdir --parents "$game_data_path" ln --symbolic \ "${PATH_FONTS}/munro.ttf" \ "${PATH_FONTS}/philosopher.ttf" \ "$game_data_path" # Extract game data archive_extraction_default # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion 'FONTS_DATA' 'PKG_DATA' "$PATH_FONTS" content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-sable.sh0000755000000000000000000000364414471751340013255 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Sable ### script_version=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='sable' GAME_NAME='Sable' ARCHIVE_BASE_0_NAME='setup_sable_4.3.4_(64bit)_(60909).exe' ARCHIVE_BASE_0_MD5='5f11322d659afe9bb2c5434470a05445' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_sable_4.3.4_(64bit)_(60909)-1.bin' ARCHIVE_BASE_0_PART1_MD5='a1cc6c702d15a0fe99c00b913416f73b' ARCHIVE_BASE_0_SIZE='2300000' ARCHIVE_BASE_0_VERSION='4.3.4-gog60909' ARCHIVE_BASE_0_URL='https://www.gog.com/game/sable' UNITY3D_NAME='sable' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Shedworks/Sable/SaveData' 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 --force --recursive \ '__redist' \ 'app' \ 'commonappdata' \ 'tmp' ) # Include game data set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-scrapland.sh0000755000000000000000000001013014471751340014122 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Scrapland ### script_version=20231018.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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='9000000' 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' 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_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' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/x-msvideo' ## FIXME: This game should be run in a WINE virtual desktop. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 set_current_package 'PKG_DATA' icons_inclusion ## 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 set_current_package 'PKG_BIN' launchers_write # 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-shadow-gambit.sh0000755000000000000000000001377714471751340014725 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Shadow Gambit ### script_version=20231221.4 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' 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_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_EXPANSION_YUKI_ID $PKG_DATA_EXPANSION_ZAGAN_ID" 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" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_BUNDLES1_ID $PKG_DATA_BUNDLES2_ID $PKG_DATA_BUNDLES3_ID" PKG_DATA_DEPS_DEMO="${PKG_DATA_DEPS_DEMO:-} $PKG_DATA_BUNDLES1_ID_DEMO $PKG_DATA_BUNDLES2_ID_DEMO $PKG_DATA_BUNDLES3_ID_DEMO" PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPS_DEMO="$PKG_DATA_ID_DEMO" 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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Prevent the inclusion of unwanted files rm --force --recursive \ 'commonappdata' \ 'tmp' ) # Include game data set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-shadow-tactics-aikos-choice.sh0000755000000000000000000000434314471751340017435 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=20231019.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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='4600000' 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_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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete unwanted files rm --force --recursive \ '__redist' \ 'commonappdata' \ 'tmp' ) # Include game data set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-shadow-tactics.sh0000755000000000000000000000523714471751340015104 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Shadow Tactics ### script_version=20231019.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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='7800000' 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_LIGHTING_ID="${GAME_ID}-lighting" PKG_LIGHTING_DESCRIPTION='lighting' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_LIGHTING_ID $PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi . "$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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-shadowrun-trilogy.sh0000755000000000000000000001311314471751340015660 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=20231004.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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_GAME_DATA_FILES_HONGKONG=" ${UNITY3D_NAME_HONGKONG}_Data 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='# Create required writable directory mkdir --parents DumpBox ' PACKAGES_LIST='PKG_BIN PKG_DATA_STANDALONE PKG_DATA' 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_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" PKG_DATA_DEPS_RETURNS="$PKG_DATA_DEPS $PKG_DATA_STANDALONE_ID_RETURNS" PKG_DATA_DEPS_DRAGONFALL="$PKG_DATA_DEPS $PKG_DATA_STANDALONE_ID_DRAGONFALL" PKG_DATA_DEPS_HONGKONG="$PKG_DATA_DEPS $PKG_DATA_STANDALONE_ID_HONGKONG" PKG_BIN_ARCH='32' PKG_BIN_DEPS_RETURNS="$PKG_DATA_ID_RETURNS" PKG_BIN_DEPS_DRAGONFALL="$PKG_DATA_ID_DRAGONFALL" PKG_BIN_DEPS_HONGKONG="$PKG_DATA_ID_HONGKONG" 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' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 PKG='PKG_DATA' icons_inclusion content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-shenzhen-io.sh0000755000000000000000000000617114471751340014414 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=20230923.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='460000' 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_BIN32_FILES=' Shenzhen.bin.x86' CONTENT_GAME_BIN64_FILES=' Shenzhen.bin.x86_64' 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_BIN32='Shenzhen.bin.x86' APP_MAIN_EXE_BIN64='Shenzhen.bin.x86_64' APP_MAIN_ICON='Content/icon.png' PACKAGES_LIST='PKG_BIN32 PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_DEPS="$PKG_BIN_DEPS" 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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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" # Apply common Mono tweaks APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(mono_launcher_tweaks)" # Extract game data archive_extraction_default # Include game icon PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN32' launchers_write PKG='PKG_BIN64' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-slay-the-princess.sh0000755000000000000000000001017414471751340015535 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Slay the Princess ### script_version=20240106.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='slay-the-princess' GAME_NAME='Slay the Princess' 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_5_URL='https://www.gog.com/game/slay_the_princess' 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' CONTENT_LIBS_BIN_PATH="${CONTENT_PATH_DEFAULT}/lib/py3-linux-x86_64" CONTENT_LIBS_BIN_FILES=' librenpython.so' CONTENT_GAME_BIN_FILES=' lib/py3-linux-x86_64/python lib/py3-linux-x86_64/pythonw lib/py3-linux-x86_64/zsync lib/py3-linux-x86_64/zsyncmake lib/py3-linux-x86_64/SlaythePrincess' CONTENT_GAME_DATA_ARCHIVE_1_FILES=' game/archive.rpa.split00' CONTENT_GAME_DATA_ARCHIVE_2_FILES=' game/archive.rpa.split01 game/archive.rpa.split02' CONTENT_GAME_DATA_FILES=' game renpy lib/python3.9 SlaythePrincess.py' APP_MAIN_EXE='lib/py3-linux-x86_64/SlaythePrincess' APP_MAIN_ICON='../support/icon.png' ## The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". APP_MAIN_PRERUN='# The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA_ARCHIVE_1 PKG_DATA_ARCHIVE_2 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_ARCHIVE_ID="${PKG_DATA_ID}-archive" PKG_DATA_ARCHIVE_1_ID="${PKG_DATA_ARCHIVE_ID}-1" PKG_DATA_ARCHIVE_2_ID="${PKG_DATA_ARCHIVE_ID}-2" PKG_DATA_ARCHIVE_DESCRIPTION="$PKG_DATA_DESCRIPTION - archive chunks" PKG_DATA_ARCHIVE_1_DESCRIPTION="$PKG_DATA_ARCHIVE_DESCRIPTION - 1" PKG_DATA_ARCHIVE_2_DESCRIPTION="$PKG_DATA_ARCHIVE_DESCRIPTION - 2" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_ARCHIVE_1 $PKG_DATA_ARCHIVE_2" PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libGL.so.1 libm.so.6 libpthread.so.0 libutil.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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages ## Rebuild the huge file from its chunks. huge_file='game/archive.rpa' PKG_DATA_POSTINST_RUN="$(package_postinst_actions 'PKG_DATA') $(huge_file_concatenate "$huge_file")" PKG_DATA_PRERM_RUN="$(package_prerm_actions 'PKG_DATA') $(huge_file_delete "$huge_file")" packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-song-of-farca.sh0000755000000000000000000000411514471751340014603 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Song of Farca ### script_version=20231227.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-star-wars-galactic-battlegrounds.sh0000755000000000000000000000772214471751340020533 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=20230924.3 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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_VERSION='1.1-gog2.0.0.4' ARCHIVE_BASE_EN_0_SIZE='830000' 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_VERSION='1.1-gog2.0.0.4' ARCHIVE_BASE_FR_0_SIZE='820000' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/star_wars_galactic_battlegrounds_saga' CONTENT_PATH_DEFAULT='app/game' CONTENT_GAME_BIN_FILES=' *.exe libogg-0.dll libvorbis-0.dll libvorbisfile-3.dll win32.dll' CONTENT_GAME_L10N_FILES=' language*.dll campaign/media/1c2s6_end.mm data/gamedata_x1.drs data/genie*.dat data/list*.crx data/sounds.*drs history sound/campaign sound/scenario scenario/default0.scx taunt' 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*' ## Work around a black screen on launch. ## With wined3d/gl, the game starts with a black screen, no audio is playing. With wined3d/vulkan, the game starts with a black screen, the music is played in the background and the menu buttons hhovering sounds can be heard. WINE_DIRECT3D_RENDERER='wined3d/gdi' 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_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_L10N_ID $PKG_DATA_ID" # 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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-star-wars-knights-of-the-old-republic.sh0000755000000000000000000002200214471751340021303 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=20230925.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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_DIRECOTRIES=' 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_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_L10N_DESCRIPTION_DE='German localization' PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' ## Star Wars: Knights of the Old Republic 1 PKG_L10N_ID_KOTOR1="${GAME_ID_KOTOR1}-l10n" PKG_L10N_ID_KOTOR1_EN="${PKG_L10N_ID_KOTOR1}-en" PKG_L10N_ID_KOTOR1_FR="${PKG_L10N_ID_KOTOR1}-fr" PKG_L10N_ID_KOTOR1_DE="${PKG_L10N_ID_KOTOR1}-de" PKG_L10N_PROVIDES_KOTOR1=" $PKG_L10N_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" PKG_BIN_DEPS_KOTOR1="$PKG_L10N_ID_KOTOR1 $PKG_DATA_ID_KOTOR1" ## Star Wars: Knights of the Old Republic 2 PKG_L10N_ID_KOTOR2="${GAME_ID_KOTOR2}-l10n" PKG_L10N_ID_KOTOR2_EN="${PKG_L10N_ID_KOTOR2}-en" PKG_L10N_ID_KOTOR2_FR="${PKG_L10N_ID_KOTOR2}-fr" PKG_L10N_ID_KOTOR2_DE="${PKG_L10N_ID_KOTOR2}-de" PKG_L10N_PROVIDES_KOTOR2=" $PKG_L10N_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" PKG_BIN_DEPS_KOTOR2="$PKG_L10N_ID_KOTOR2 $PKG_DATA_ID_KOTOR2" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-startopia.sh0000755000000000000000000000473014471751340014172 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Startopia ### script_version=20230925.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' GAME_ID='startopia' GAME_NAME='Startopia' 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' CONTENT_PATH_DEFAULT='app' 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 *.html *.pdf *.rtf *.txt' USER_PERSISTENT_DIRECTORIES=' profiles' USER_PERSISTENT_FILES=' startopia.ini' APP_MAIN_EXE='startopia.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" ## FIXME: This game can get display issues on some resolutions, when run on Wayland without using a virtual desktop. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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)" # Generate 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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-steamworld-games.sh0000755000000000000000000001216214471751340015435 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=20231024.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-stellaris-expansions-extra.sh0000755000000000000000000002602314471751340017473 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=20240127.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_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_52_URL='https://www.gog.com/game/stellaris_galaxy_edition_upgrade_pack' ARCHIVE_BASE_ARACHNOID_51_NAME='stellaris_arachnoid_portrait_pack_3_10_4_69706.sh' ARCHIVE_BASE_ARACHNOID_51_MD5='c3372f15cb960dfadefd09451c1a7a04' ARCHIVE_BASE_ARACHNOID_51_SIZE='817' ARCHIVE_BASE_ARACHNOID_51_VERSION='3.10.4-gog69706' ARCHIVE_BASE_ARACHNOID_50_NAME='stellaris_arachnoid_portrait_pack_3_10_3_69539.sh' ARCHIVE_BASE_ARACHNOID_50_MD5='d5e354d1511d97ba30bde2045d038fe3' ARCHIVE_BASE_ARACHNOID_50_SIZE='1136' ARCHIVE_BASE_ARACHNOID_50_VERSION='3.10.3-gog69539' ARCHIVE_BASE_ARACHNOID_49_NAME='stellaris_arachnoid_portrait_pack_3_10_2_69346.sh' ARCHIVE_BASE_ARACHNOID_49_MD5='8759f2c37f2dcfceed56922355be9bf5' ARCHIVE_BASE_ARACHNOID_49_SIZE='1136' ARCHIVE_BASE_ARACHNOID_49_VERSION='3.10.2-gog69346' ARCHIVE_BASE_ARACHNOID_48_NAME='stellaris_arachnoid_portrait_pack_3_10_1_69202.sh' ARCHIVE_BASE_ARACHNOID_48_MD5='931f682a272e92444530a2fa1b1d7d11' ARCHIVE_BASE_ARACHNOID_48_SIZE='1136' ARCHIVE_BASE_ARACHNOID_48_VERSION='3.10.1-gog69202' ARCHIVE_BASE_ARACHNOID_47_NAME='stellaris_arachnoid_portrait_pack_3_10_0_2_68987.sh' ARCHIVE_BASE_ARACHNOID_47_MD5='b5759e9e28af9b420d35d627296e9cea' ARCHIVE_BASE_ARACHNOID_47_SIZE='1136' ARCHIVE_BASE_ARACHNOID_47_VERSION='3.10.0.2-gog68987' 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_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_52_URL='https://www.gog.com/game/stellaris_horizon_signal' ARCHIVE_BASE_HORIZONSIGNAL_51_NAME='stellaris_horizon_signal_3_10_4_69706.sh' ARCHIVE_BASE_HORIZONSIGNAL_51_MD5='aa75a638d1d97b4616461bdcd01fa01c' ARCHIVE_BASE_HORIZONSIGNAL_51_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_51_VERSION='3.10.4-gog69706' ARCHIVE_BASE_HORIZONSIGNAL_50_NAME='stellaris_horizon_signal_3_10_3_69539.sh' ARCHIVE_BASE_HORIZONSIGNAL_50_MD5='a49f8537f106cb94a6ebdc6b6e044c2d' ARCHIVE_BASE_HORIZONSIGNAL_50_SIZE='1136' ARCHIVE_BASE_HORIZONSIGNAL_50_VERSION='3.10.3-gog69539' ARCHIVE_BASE_HORIZONSIGNAL_49_NAME='stellaris_horizon_signal_3_10_2_69346.sh' ARCHIVE_BASE_HORIZONSIGNAL_49_MD5='e9256b9124239fb9922b70c2d492e5dd' ARCHIVE_BASE_HORIZONSIGNAL_49_SIZE='1136' ARCHIVE_BASE_HORIZONSIGNAL_49_VERSION='3.10.2-gog69346' ARCHIVE_BASE_HORIZONSIGNAL_48_NAME='stellaris_horizon_signal_3_10_1_69202.sh' ARCHIVE_BASE_HORIZONSIGNAL_48_MD5='a9202280248dd8bfae3cacaa835702ab' ARCHIVE_BASE_HORIZONSIGNAL_48_SIZE='1136' ARCHIVE_BASE_HORIZONSIGNAL_48_VERSION='3.10.1-gog69202' ARCHIVE_BASE_HORIZONSIGNAL_47_NAME='stellaris_horizon_signal_3_10_0_2_68987.sh' ARCHIVE_BASE_HORIZONSIGNAL_47_MD5='a24a2c346eda018bdfee52e9270d0c66' ARCHIVE_BASE_HORIZONSIGNAL_47_SIZE='1136' ARCHIVE_BASE_HORIZONSIGNAL_47_VERSION='3.10.0.2-gog68987' 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_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-stellaris-expansions-species-packs.sh0000755000000000000000000005176314471751340021113 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=20240127.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_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_49_URL='https://www.gog.com/game/stellaris_plantoids_species_pack' ARCHIVE_BASE_PLANTOID_48_NAME='stellaris_plantoids_species_pack_3_10_4_69706.sh' ARCHIVE_BASE_PLANTOID_48_MD5='f95d0360d70f2c241ff8577c12145663' ARCHIVE_BASE_PLANTOID_48_SIZE='837' ARCHIVE_BASE_PLANTOID_48_VERSION='3.10.4-gog69706' ARCHIVE_BASE_PLANTOID_47_NAME='stellaris_plantoids_species_pack_3_10_3_69539.sh' ARCHIVE_BASE_PLANTOID_47_MD5='8df08ad91b367aee5a963564fa09d387' ARCHIVE_BASE_PLANTOID_47_SIZE='1156' ARCHIVE_BASE_PLANTOID_47_VERSION='3.10.3-gog69539' ARCHIVE_BASE_PLANTOID_46_NAME='stellaris_plantoids_species_pack_3_10_2_69346.sh' ARCHIVE_BASE_PLANTOID_46_MD5='838cf84e76f3dc9782874c6c32a2eb73' ARCHIVE_BASE_PLANTOID_46_SIZE='1156' ARCHIVE_BASE_PLANTOID_46_VERSION='3.10.2-gog69346' ARCHIVE_BASE_PLANTOID_45_NAME='stellaris_plantoids_species_pack_3_10_1_69202.sh' ARCHIVE_BASE_PLANTOID_45_MD5='f46acc22db074dabbfffdc552fe10ab3' ARCHIVE_BASE_PLANTOID_45_SIZE='1156' ARCHIVE_BASE_PLANTOID_45_VERSION='3.10.1-gog69202' ARCHIVE_BASE_PLANTOID_44_NAME='stellaris_plantoids_species_pack_3_10_0_2_68987.sh' ARCHIVE_BASE_PLANTOID_44_MD5='a6bde010ae32ebc8b7827d54dd873f29' ARCHIVE_BASE_PLANTOID_44_SIZE='1156' ARCHIVE_BASE_PLANTOID_44_VERSION='3.10.0.2-gog68987' 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_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_49_URL='https://www.gog.com/game/stellaris_humanoids_species_pack' ARCHIVE_BASE_HUMANOIDS_48_NAME='stellaris_humanoids_species_pack_3_10_4_69706.sh' ARCHIVE_BASE_HUMANOIDS_48_MD5='3c9e030365d288f26f8d3f6dbb3d9625' ARCHIVE_BASE_HUMANOIDS_48_SIZE='116312' ARCHIVE_BASE_HUMANOIDS_48_VERSION='3.10.4-gog69706' ARCHIVE_BASE_HUMANOIDS_47_NAME='stellaris_humanoids_species_pack_3_10_3_69539.sh' ARCHIVE_BASE_HUMANOIDS_47_MD5='2a7a49e7029dad68580992dc7fcc5030' ARCHIVE_BASE_HUMANOIDS_47_SIZE='116632' ARCHIVE_BASE_HUMANOIDS_47_VERSION='3.10.3-gog69539' ARCHIVE_BASE_HUMANOIDS_46_NAME='stellaris_humanoids_species_pack_3_10_2_69346.sh' ARCHIVE_BASE_HUMANOIDS_46_MD5='59ef453ddcc80b9fcddc07bdfbfaa4dd' ARCHIVE_BASE_HUMANOIDS_46_SIZE='116636' ARCHIVE_BASE_HUMANOIDS_46_VERSION='3.10.2-gog69346' ARCHIVE_BASE_HUMANOIDS_45_NAME='stellaris_humanoids_species_pack_3_10_1_69202.sh' ARCHIVE_BASE_HUMANOIDS_45_MD5='ec7e9435a832ba018b188834412be163' ARCHIVE_BASE_HUMANOIDS_45_SIZE='116636' ARCHIVE_BASE_HUMANOIDS_45_VERSION='3.10.1-gog69202' ARCHIVE_BASE_HUMANOIDS_44_NAME='stellaris_humanoids_species_pack_3_10_0_2_68987.sh' ARCHIVE_BASE_HUMANOIDS_44_MD5='3c81b11d1da6888915d7fcd4ceb3c51b' ARCHIVE_BASE_HUMANOIDS_44_SIZE='116636' ARCHIVE_BASE_HUMANOIDS_44_VERSION='3.10.0.2-gog68987' 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_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_37_URL='https://www.gog.com/game/stellaris_lithoids_species_pack' ARCHIVE_BASE_LITHOIDS_36_NAME='stellaris_lithoids_species_pack_3_10_4_69706.sh' ARCHIVE_BASE_LITHOIDS_36_MD5='b2bd55d83b031d26cad001cd34ede628' ARCHIVE_BASE_LITHOIDS_36_SIZE='52603' ARCHIVE_BASE_LITHOIDS_36_VERSION='3.10.4-gog69706' ARCHIVE_BASE_LITHOIDS_35_NAME='stellaris_lithoids_species_pack_3_10_3_69539.sh' ARCHIVE_BASE_LITHOIDS_35_MD5='eb77bfefd574709e2d5d68a3cee305bd' ARCHIVE_BASE_LITHOIDS_35_SIZE='52924' ARCHIVE_BASE_LITHOIDS_35_VERSION='3.10.3-gog69539' ARCHIVE_BASE_LITHOIDS_34_NAME='stellaris_lithoids_species_pack_3_10_2_69346.sh' ARCHIVE_BASE_LITHOIDS_34_MD5='f10dcb66e8e1de829d5b93654af83c34' ARCHIVE_BASE_LITHOIDS_34_SIZE='52928' ARCHIVE_BASE_LITHOIDS_34_VERSION='3.10.2-gog69346' ARCHIVE_BASE_LITHOIDS_33_NAME='stellaris_lithoids_species_pack_3_10_1_69202.sh' ARCHIVE_BASE_LITHOIDS_33_MD5='95a043b540c05e66d5aa6444cde39a78' ARCHIVE_BASE_LITHOIDS_33_SIZE='52924' ARCHIVE_BASE_LITHOIDS_33_VERSION='3.10.1-gog69202' ARCHIVE_BASE_LITHOIDS_32_NAME='stellaris_lithoids_species_pack_3_10_0_2_68987.sh' ARCHIVE_BASE_LITHOIDS_32_MD5='7b67f6a6bed2c9a78cf23ede66fa4a9d' ARCHIVE_BASE_LITHOIDS_32_SIZE='52924' ARCHIVE_BASE_LITHOIDS_32_VERSION='3.10.0.2-gog68987' 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_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_22_URL='https://www.gog.com/game/stellaris_necroids_species_pack' ARCHIVE_BASE_NECROIDS_21_NAME='stellaris_necroids_species_pack_3_10_4_69706.sh' ARCHIVE_BASE_NECROIDS_21_MD5='4d085fb00b919e41b674e545b5249df3' ARCHIVE_BASE_NECROIDS_21_SIZE='49209' ARCHIVE_BASE_NECROIDS_21_VERSION='3.10.4-gog69706' ARCHIVE_BASE_NECROIDS_20_NAME='stellaris_necroids_species_pack_3_10_3_69539.sh' ARCHIVE_BASE_NECROIDS_20_MD5='2964d6e9254f558fe50c48a4b8109a05' ARCHIVE_BASE_NECROIDS_20_SIZE='49524' ARCHIVE_BASE_NECROIDS_20_VERSION='3.10.3-gog69539' ARCHIVE_BASE_NECROIDS_19_NAME='stellaris_necroids_species_pack_3_10_2_69346.sh' ARCHIVE_BASE_NECROIDS_19_MD5='911ef2256a0e267c194bfca7d0ec2216' ARCHIVE_BASE_NECROIDS_19_SIZE='49528' ARCHIVE_BASE_NECROIDS_19_VERSION='3.10.2-gog69346' ARCHIVE_BASE_NECROIDS_18_NAME='stellaris_necroids_species_pack_3_10_1_69202.sh' ARCHIVE_BASE_NECROIDS_18_MD5='a9478a35f71b02a14de72bda03692b34' ARCHIVE_BASE_NECROIDS_18_SIZE='49524' ARCHIVE_BASE_NECROIDS_18_VERSION='3.10.1-gog69202' ARCHIVE_BASE_NECROIDS_17_NAME='stellaris_necroids_species_pack_3_10_0_2_68987.sh' ARCHIVE_BASE_NECROIDS_17_MD5='3949c02f1d073b1174ae274a9a3998ff' ARCHIVE_BASE_NECROIDS_17_SIZE='49524' ARCHIVE_BASE_NECROIDS_17_VERSION='3.10.0.2-gog68987' 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_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_20_URL='https://www.gog.com/game/stellaris_aquatics_species_pack' ARCHIVE_BASE_AQUATICS_19_NAME='stellaris_aquatics_species_pack_3_10_4_69706.sh' ARCHIVE_BASE_AQUATICS_19_MD5='2fdb60088aa8acb3900a6efa98c55b07' ARCHIVE_BASE_AQUATICS_19_SIZE='120876' ARCHIVE_BASE_AQUATICS_19_VERSION='3.10.4-gog69706' ARCHIVE_BASE_AQUATICS_18_NAME='stellaris_aquatics_species_pack_3_10_3_69539.sh' ARCHIVE_BASE_AQUATICS_18_MD5='2f446801a28f11c448bdcad3c2ac9e17' ARCHIVE_BASE_AQUATICS_18_SIZE='121452' ARCHIVE_BASE_AQUATICS_18_VERSION='3.10.3-gog69539' ARCHIVE_BASE_AQUATICS_17_NAME='stellaris_aquatics_species_pack_3_10_2_69346.sh' ARCHIVE_BASE_AQUATICS_17_MD5='d90720ccd040de1dd649ea43f7f74d1a' ARCHIVE_BASE_AQUATICS_17_SIZE='121448' ARCHIVE_BASE_AQUATICS_17_VERSION='3.10.2-gog69346' ARCHIVE_BASE_AQUATICS_16_NAME='stellaris_aquatics_species_pack_3_10_1_69202.sh' ARCHIVE_BASE_AQUATICS_16_MD5='b542b48d85eba5667315557aca340278' ARCHIVE_BASE_AQUATICS_16_SIZE='121448' ARCHIVE_BASE_AQUATICS_16_VERSION='3.10.1-gog69202' ARCHIVE_BASE_AQUATICS_15_NAME='stellaris_aquatics_species_pack_3_10_0_2_68987.sh' ARCHIVE_BASE_AQUATICS_15_MD5='bf594d37a181e555dcfcbe772e45a650' ARCHIVE_BASE_AQUATICS_15_SIZE='121448' ARCHIVE_BASE_AQUATICS_15_VERSION='3.10.0.2-gog68987' 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_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_13_URL='https://www.gog.com/game/stellaris_toxoids_species_pack' ARCHIVE_BASE_TOXOIDS_12_NAME='stellaris_toxoids_species_pack_3_10_4_69706.sh' ARCHIVE_BASE_TOXOIDS_12_MD5='89360920313849a557d4237be4c21dae' ARCHIVE_BASE_TOXOIDS_12_SIZE='41495' ARCHIVE_BASE_TOXOIDS_12_VERSION='3.10.4-gog69706' ARCHIVE_BASE_TOXOIDS_11_NAME='stellaris_toxoids_species_pack_3_10_3_69539.sh' ARCHIVE_BASE_TOXOIDS_11_MD5='c9c63f397711deb35babe3cb51620723' ARCHIVE_BASE_TOXOIDS_11_SIZE='41812' ARCHIVE_BASE_TOXOIDS_11_VERSION='3.10.3-gog69539' ARCHIVE_BASE_TOXOIDS_10_NAME='stellaris_toxoids_species_pack_3_10_2_69346.sh' ARCHIVE_BASE_TOXOIDS_10_MD5='9d31ec6ee301e4b8753cc105fd6e33dc' ARCHIVE_BASE_TOXOIDS_10_SIZE='41812' ARCHIVE_BASE_TOXOIDS_10_VERSION='3.10.2-gog69346' ARCHIVE_BASE_TOXOIDS_9_NAME='stellaris_toxoids_species_pack_3_10_1_69202.sh' ARCHIVE_BASE_TOXOIDS_9_MD5='ff0eea40c4c5a3d94a137236ce5c6d9e' ARCHIVE_BASE_TOXOIDS_9_SIZE='41812' ARCHIVE_BASE_TOXOIDS_9_VERSION='3.10.1-gog69202' ARCHIVE_BASE_TOXOIDS_8_NAME='stellaris_toxoids_species_pack_3_10_0_2_68987.sh' ARCHIVE_BASE_TOXOIDS_8_MD5='64c56e55ccfd2fb146425982b8d8e852' ARCHIVE_BASE_TOXOIDS_8_SIZE='41812' ARCHIVE_BASE_TOXOIDS_8_VERSION='3.10.0.2-gog68987' 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_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-stellaris-expansions-story-packs.sh0000755000000000000000000004742214471751340020635 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=20240127.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_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_49_URL='https://www.gog.com/game/stellaris_leviathans_story_pack' ARCHIVE_BASE_LEVIATHANS_48_NAME='stellaris_leviathans_story_pack_3_10_4_69706.sh' ARCHIVE_BASE_LEVIATHANS_48_MD5='9512b0d6532cd54faa9b1a91ecf1f160' ARCHIVE_BASE_LEVIATHANS_48_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_48_VERSION='3.10.4-gog69706' ARCHIVE_BASE_LEVIATHANS_47_NAME='stellaris_leviathans_story_pack_3_10_3_69539.sh' ARCHIVE_BASE_LEVIATHANS_47_MD5='fd84836e6800dc4abf170de4a6b5054b' ARCHIVE_BASE_LEVIATHANS_47_SIZE='58744' ARCHIVE_BASE_LEVIATHANS_47_VERSION='3.10.3-gog69539' ARCHIVE_BASE_LEVIATHANS_46_NAME='stellaris_leviathans_story_pack_3_10_2_69346.sh' ARCHIVE_BASE_LEVIATHANS_46_MD5='e222df45bd9570c5c1551351d0212c9a' ARCHIVE_BASE_LEVIATHANS_46_SIZE='58744' ARCHIVE_BASE_LEVIATHANS_46_VERSION='3.10.2-gog69346' ARCHIVE_BASE_LEVIATHANS_45_NAME='stellaris_leviathans_story_pack_3_10_1_69202.sh' ARCHIVE_BASE_LEVIATHANS_45_MD5='f598f3ad41111dd3deb9c3adfd959d1d' ARCHIVE_BASE_LEVIATHANS_45_SIZE='58744' ARCHIVE_BASE_LEVIATHANS_45_VERSION='3.10.1-gog69202' ARCHIVE_BASE_LEVIATHANS_44_NAME='stellaris_leviathans_story_pack_3_10_0_2_68987.sh' ARCHIVE_BASE_LEVIATHANS_44_MD5='abcf0e606c6a1fe3e02f0c89e886625e' ARCHIVE_BASE_LEVIATHANS_44_SIZE='58744' ARCHIVE_BASE_LEVIATHANS_44_VERSION='3.10.0.2-gog68987' 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_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_48_URL='https://www.gog.com/game/stellaris_synthetic_dawn_story_pack' ARCHIVE_BASE_SYNTHETICDAWN_47_NAME='stellaris_synthetic_dawn_story_pack_3_10_4_69706.sh' ARCHIVE_BASE_SYNTHETICDAWN_47_MD5='78444fc5f2cfc20eca1cdfcc1ae3eb88' ARCHIVE_BASE_SYNTHETICDAWN_47_SIZE='48244' ARCHIVE_BASE_SYNTHETICDAWN_47_VERSION='3.10.4-gog69706' ARCHIVE_BASE_SYNTHETICDAWN_46_NAME='stellaris_synthetic_dawn_story_pack_3_10_3_69539.sh' ARCHIVE_BASE_SYNTHETICDAWN_46_MD5='f05613f1b03e6ca1aa197c6c1f7d55f9' ARCHIVE_BASE_SYNTHETICDAWN_46_SIZE='48564' ARCHIVE_BASE_SYNTHETICDAWN_46_VERSION='3.10.3-gog69539' ARCHIVE_BASE_SYNTHETICDAWN_45_NAME='stellaris_synthetic_dawn_story_pack_3_10_2_69346.sh' ARCHIVE_BASE_SYNTHETICDAWN_45_MD5='05a5d1fc9874124dd26b0cb01ed2619f' ARCHIVE_BASE_SYNTHETICDAWN_45_SIZE='48564' ARCHIVE_BASE_SYNTHETICDAWN_45_VERSION='3.10.2-gog69346' ARCHIVE_BASE_SYNTHETICDAWN_44_NAME='stellaris_synthetic_dawn_story_pack_3_10_1_69202.sh' ARCHIVE_BASE_SYNTHETICDAWN_44_MD5='890a5306863d5e1d800b383273adc3e8' ARCHIVE_BASE_SYNTHETICDAWN_44_SIZE='48564' ARCHIVE_BASE_SYNTHETICDAWN_44_VERSION='3.10.1-gog69202' ARCHIVE_BASE_SYNTHETICDAWN_43_NAME='stellaris_synthetic_dawn_story_pack_3_10_0_2_68987.sh' ARCHIVE_BASE_SYNTHETICDAWN_43_MD5='f5667ee774fe9387250a457a458c04a9' ARCHIVE_BASE_SYNTHETICDAWN_43_SIZE='48564' ARCHIVE_BASE_SYNTHETICDAWN_43_VERSION='3.10.0.2-gog68987' 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_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_48_URL='https://www.gog.com/game/stellaris_distant_stars_story_pack' ARCHIVE_BASE_DISTANTSTARS_47_NAME='stellaris_distant_stars_story_pack_3_10_4_69706.sh' ARCHIVE_BASE_DISTANTSTARS_47_MD5='8ae326da848b2c9febb600b2b68bc3bd' ARCHIVE_BASE_DISTANTSTARS_47_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_47_VERSION='3.10.4-gog69706' ARCHIVE_BASE_DISTANTSTARS_46_NAME='stellaris_distant_stars_story_pack_3_10_3_69539.sh' ARCHIVE_BASE_DISTANTSTARS_46_MD5='042fca80a8b65180c7d384142a35726f' ARCHIVE_BASE_DISTANTSTARS_46_SIZE='21148' ARCHIVE_BASE_DISTANTSTARS_46_VERSION='3.10.3-gog69539' ARCHIVE_BASE_DISTANTSTARS_45_NAME='stellaris_distant_stars_story_pack_3_10_2_69346.sh' ARCHIVE_BASE_DISTANTSTARS_45_MD5='95df62a0f9f366341b71a47a969f08ad' ARCHIVE_BASE_DISTANTSTARS_45_SIZE='21148' ARCHIVE_BASE_DISTANTSTARS_45_VERSION='3.10.2-gog69346' ARCHIVE_BASE_DISTANTSTARS_44_NAME='stellaris_distant_stars_story_pack_3_10_1_69202.sh' ARCHIVE_BASE_DISTANTSTARS_44_MD5='dded9ea4d706cf390388acac2784e767' ARCHIVE_BASE_DISTANTSTARS_44_SIZE='21148' ARCHIVE_BASE_DISTANTSTARS_44_VERSION='3.10.1-gog69202' ARCHIVE_BASE_DISTANTSTARS_43_NAME='stellaris_distant_stars_story_pack_3_10_0_2_68987.sh' ARCHIVE_BASE_DISTANTSTARS_43_MD5='ff3a4082c63e06295ddb436ae5a3964a' ARCHIVE_BASE_DISTANTSTARS_43_SIZE='21148' ARCHIVE_BASE_DISTANTSTARS_43_VERSION='3.10.0.2-gog68987' 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_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_37_URL='https://www.gog.com/game/stellaris_ancient_relics_story_pack' ARCHIVE_BASE_ANCIENTRELICS_36_NAME='stellaris_ancient_relics_3_10_4_69706.sh' ARCHIVE_BASE_ANCIENTRELICS_36_MD5='81f8e0d110f8c77538bf420a9d384b61' ARCHIVE_BASE_ANCIENTRELICS_36_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_36_VERSION='3.10.4-gog69706' ARCHIVE_BASE_ANCIENTRELICS_35_NAME='stellaris_ancient_relics_3_10_3_69539.sh' ARCHIVE_BASE_ANCIENTRELICS_35_MD5='eb1b6ff1d4d61648043d6f528787ecf8' ARCHIVE_BASE_ANCIENTRELICS_35_SIZE='33060' ARCHIVE_BASE_ANCIENTRELICS_35_VERSION='3.10.3-gog69539' ARCHIVE_BASE_ANCIENTRELICS_34_NAME='stellaris_ancient_relics_3_10_2_69346.sh' ARCHIVE_BASE_ANCIENTRELICS_34_MD5='b413c0b5132dcd8346b3f6ff7b5582e4' ARCHIVE_BASE_ANCIENTRELICS_34_SIZE='33060' ARCHIVE_BASE_ANCIENTRELICS_34_VERSION='3.10.2-gog69346' ARCHIVE_BASE_ANCIENTRELICS_33_NAME='stellaris_ancient_relics_3_10_1_69202.sh' ARCHIVE_BASE_ANCIENTRELICS_33_MD5='83283896b79b4b81325f62a5a2b83281' ARCHIVE_BASE_ANCIENTRELICS_33_SIZE='33060' ARCHIVE_BASE_ANCIENTRELICS_33_VERSION='3.10.1-gog69202' ARCHIVE_BASE_ANCIENTRELICS_32_NAME='stellaris_ancient_relics_3_10_0_2_68987.sh' ARCHIVE_BASE_ANCIENTRELICS_32_MD5='b6eb34e2fcf75b524dae760a30ee802b' ARCHIVE_BASE_ANCIENTRELICS_32_SIZE='33060' ARCHIVE_BASE_ANCIENTRELICS_32_VERSION='3.10.0.2-gog68987' 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_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_11_URL='https://www.gog.com/game/stellaris_first_contact_story_pack' ARCHIVE_BASE_FIRSTCONTACT_10_NAME='stellaris_first_contact_story_pack_3_10_4_69706.sh' ARCHIVE_BASE_FIRSTCONTACT_10_MD5='5e1666673ecb61afec241ae9bd885d02' ARCHIVE_BASE_FIRSTCONTACT_10_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_10_VERSION='3.10.4-gog69706' ARCHIVE_BASE_FIRSTCONTACT_9_NAME='stellaris_first_contact_story_pack_3_10_3_69539.sh' ARCHIVE_BASE_FIRSTCONTACT_9_MD5='e0c09af6f7786b74d103d384bef9c062' ARCHIVE_BASE_FIRSTCONTACT_9_SIZE='1152' ARCHIVE_BASE_FIRSTCONTACT_9_VERSION='3.10.3-gog69539' ARCHIVE_BASE_FIRSTCONTACT_8_NAME='stellaris_first_contact_story_pack_3_10_2_69346.sh' ARCHIVE_BASE_FIRSTCONTACT_8_MD5='415a0c6f040110d37b814aba309bde77' ARCHIVE_BASE_FIRSTCONTACT_8_SIZE='1152' ARCHIVE_BASE_FIRSTCONTACT_8_VERSION='3.10.2-gog69346' ARCHIVE_BASE_FIRSTCONTACT_7_NAME='stellaris_first_contact_story_pack_3_10_1_69202.sh' ARCHIVE_BASE_FIRSTCONTACT_7_MD5='6645fe45272746e062a182494b07e001' ARCHIVE_BASE_FIRSTCONTACT_7_SIZE='1152' ARCHIVE_BASE_FIRSTCONTACT_7_VERSION='3.10.1-gog69202' ARCHIVE_BASE_FIRSTCONTACT_6_NAME='stellaris_first_contact_story_pack_3_10_0_2_68987.sh' ARCHIVE_BASE_FIRSTCONTACT_6_MD5='087d177826e2aea2dcafcec8bd9e3d68' ARCHIVE_BASE_FIRSTCONTACT_6_SIZE='1152' ARCHIVE_BASE_FIRSTCONTACT_6_VERSION='3.10.0.2-gog68987' 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_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-stellaris-expansions.sh0000755000000000000000000005563714471751340016367 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 ### script_version=20240127.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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' # Archives ## Utopia 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_47_URL='https://www.gog.com/game/stellaris_utopia' ARCHIVE_BASE_UTOPIA_46_NAME='stellaris_utopia_3_10_4_69706.sh' ARCHIVE_BASE_UTOPIA_46_MD5='b941854d72b3941de2e9a2a5c0bd09f5' ARCHIVE_BASE_UTOPIA_46_SIZE='75007' ARCHIVE_BASE_UTOPIA_46_VERSION='3.10.4-gog69706' ARCHIVE_BASE_UTOPIA_45_NAME='stellaris_utopia_3_10_3_69539.sh' ARCHIVE_BASE_UTOPIA_45_MD5='28ad8fb133f7274e9094e68290c2bf4a' ARCHIVE_BASE_UTOPIA_45_SIZE='75328' ARCHIVE_BASE_UTOPIA_45_VERSION='3.10.3-gog69539' ARCHIVE_BASE_UTOPIA_44_NAME='stellaris_utopia_3_10_2_69346.sh' ARCHIVE_BASE_UTOPIA_44_MD5='de3da13d66cae59773672e8174b37ba6' ARCHIVE_BASE_UTOPIA_44_SIZE='75328' ARCHIVE_BASE_UTOPIA_44_VERSION='3.10.2-gog69346' ARCHIVE_BASE_UTOPIA_43_NAME='stellaris_utopia_3_10_1_69202.sh' ARCHIVE_BASE_UTOPIA_43_MD5='09cd47f044d34cfdde5ef304ac98275d' ARCHIVE_BASE_UTOPIA_43_SIZE='75324' ARCHIVE_BASE_UTOPIA_43_VERSION='3.10.1-gog69202' ARCHIVE_BASE_UTOPIA_42_NAME='stellaris_utopia_3_10_0_2_68987.sh' ARCHIVE_BASE_UTOPIA_42_MD5='56e133c664fa914c20470499c27d1151' ARCHIVE_BASE_UTOPIA_42_SIZE='75328' ARCHIVE_BASE_UTOPIA_42_VERSION='3.10.0.2-gog68987' 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_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_37_URL='https://www.gog.com/game/stellaris_apocalypse' ARCHIVE_BASE_APOCALYPSE_36_NAME='stellaris_apocalypse_3_10_4_69706.sh' ARCHIVE_BASE_APOCALYPSE_36_MD5='b894170308363ea56cc7d74206c67219' ARCHIVE_BASE_APOCALYPSE_36_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_36_VERSION='3.10.4-gog69706' ARCHIVE_BASE_APOCALYPSE_35_NAME='stellaris_apocalypse_3_10_3_69539.sh' ARCHIVE_BASE_APOCALYPSE_35_MD5='d4c87fe2168b68d31e4998933ed81d78' ARCHIVE_BASE_APOCALYPSE_35_SIZE='38196' ARCHIVE_BASE_APOCALYPSE_35_VERSION='3.10.3-gog69539' ARCHIVE_BASE_APOCALYPSE_34_NAME='stellaris_apocalypse_3_10_2_69346.sh' ARCHIVE_BASE_APOCALYPSE_34_MD5='c36eb19699cec1afa1b2fde53b49f3ca' ARCHIVE_BASE_APOCALYPSE_34_SIZE='38196' ARCHIVE_BASE_APOCALYPSE_34_VERSION='3.10.2-gog69346' ARCHIVE_BASE_APOCALYPSE_33_NAME='stellaris_apocalypse_3_10_1_69202.sh' ARCHIVE_BASE_APOCALYPSE_33_MD5='ac4266364748ada11f6119d659934617' ARCHIVE_BASE_APOCALYPSE_33_SIZE='38196' ARCHIVE_BASE_APOCALYPSE_33_VERSION='3.10.1-gog69202' ARCHIVE_BASE_APOCALYPSE_32_NAME='stellaris_apocalypse_3_10_0_2_68987.sh' ARCHIVE_BASE_APOCALYPSE_32_MD5='84b1b5c099f9a1ade045491ec1000dc3' ARCHIVE_BASE_APOCALYPSE_32_SIZE='38196' ARCHIVE_BASE_APOCALYPSE_32_VERSION='3.10.0.2-gog68987' 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_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_34_URL='https://www.gog.com/game/stellaris_megacorp' ARCHIVE_BASE_MEGACORP_33_NAME='stellaris_megacorp_3_10_4_69706.sh' ARCHIVE_BASE_MEGACORP_33_MD5='4485e8c66c997bec73f95fb6e7aba992' ARCHIVE_BASE_MEGACORP_33_SIZE='130614' ARCHIVE_BASE_MEGACORP_33_VERSION='3.10.4-gog69706' ARCHIVE_BASE_MEGACORP_32_NAME='stellaris_megacorp_3_10_3_69539.sh' ARCHIVE_BASE_MEGACORP_32_MD5='df9e76d2d210bae53fde19e7e88742eb' ARCHIVE_BASE_MEGACORP_32_SIZE='130940' ARCHIVE_BASE_MEGACORP_32_VERSION='3.10.3-gog69539' ARCHIVE_BASE_MEGACORP_31_NAME='stellaris_megacorp_3_10_2_69346.sh' ARCHIVE_BASE_MEGACORP_31_MD5='521df86e0279c09dac4be008f0f40dbb' ARCHIVE_BASE_MEGACORP_31_SIZE='130940' ARCHIVE_BASE_MEGACORP_31_VERSION='3.10.2-gog69346' ARCHIVE_BASE_MEGACORP_30_NAME='stellaris_megacorp_3_10_1_69202.sh' ARCHIVE_BASE_MEGACORP_30_MD5='c1f6bdde4832e94df24d75e7ae2a5383' ARCHIVE_BASE_MEGACORP_30_SIZE='130940' ARCHIVE_BASE_MEGACORP_30_VERSION='3.10.1-gog69202' ARCHIVE_BASE_MEGACORP_29_NAME='stellaris_megacorp_3_10_0_2_68987.sh' ARCHIVE_BASE_MEGACORP_29_MD5='55f0cfa082c93e363c44d2edabc3f881' ARCHIVE_BASE_MEGACORP_29_SIZE='130940' ARCHIVE_BASE_MEGACORP_29_VERSION='3.10.0.2-gog68987' 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_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_29_URL='https://www.gog.com/game/stellaris_federations' ARCHIVE_BASE_FEDERATIONS_28_NAME='stellaris_federations_3_10_4_69706.sh' ARCHIVE_BASE_FEDERATIONS_28_MD5='8afa570b56dd696db6ac7dd3d8d812ae' ARCHIVE_BASE_FEDERATIONS_28_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_28_VERSION='3.10.4-gog69706' ARCHIVE_BASE_FEDERATIONS_27_NAME='stellaris_federations_3_10_3_69539.sh' ARCHIVE_BASE_FEDERATIONS_27_MD5='2f602f1a59f8850357773de50d58b531' ARCHIVE_BASE_FEDERATIONS_27_SIZE='14752' ARCHIVE_BASE_FEDERATIONS_27_VERSION='3.10.3-gog69539' ARCHIVE_BASE_FEDERATIONS_26_NAME='stellaris_federations_3_10_2_69346.sh' ARCHIVE_BASE_FEDERATIONS_26_MD5='6093bfd50439b9d548504cfb035405c2' ARCHIVE_BASE_FEDERATIONS_26_SIZE='14752' ARCHIVE_BASE_FEDERATIONS_26_VERSION='3.10.2-gog69346' ARCHIVE_BASE_FEDERATIONS_25_NAME='stellaris_federations_3_10_1_69202.sh' ARCHIVE_BASE_FEDERATIONS_25_MD5='2597c00c7e2e775c05a11c3b695d5db3' ARCHIVE_BASE_FEDERATIONS_25_SIZE='14752' ARCHIVE_BASE_FEDERATIONS_25_VERSION='3.10.1-gog69202' ARCHIVE_BASE_FEDERATIONS_24_NAME='stellaris_federations_3_10_0_2_68987.sh' ARCHIVE_BASE_FEDERATIONS_24_MD5='1cb0a687189ef805856709e9f8c8e0ad' ARCHIVE_BASE_FEDERATIONS_24_SIZE='14752' ARCHIVE_BASE_FEDERATIONS_24_VERSION='3.10.0.2-gog68987' 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_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_16_URL='https://www.gog.com/game/stellaris_nemesis' ARCHIVE_BASE_NEMESIS_15_NAME='stellaris_nemesis_3_10_4_69706.sh' ARCHIVE_BASE_NEMESIS_15_MD5='312e8472b38288a83d3adf590794e299' ARCHIVE_BASE_NEMESIS_15_SIZE='38539' ARCHIVE_BASE_NEMESIS_15_VERSION='3.10.4-gog69706' ARCHIVE_BASE_NEMESIS_14_NAME='stellaris_nemesis_3_10_3_69539.sh' ARCHIVE_BASE_NEMESIS_14_MD5='372e8d3daaeb61abed3c61b321faa29a' ARCHIVE_BASE_NEMESIS_14_SIZE='38856' ARCHIVE_BASE_NEMESIS_14_VERSION='3.10.3-gog69539' ARCHIVE_BASE_NEMESIS_13_NAME='stellaris_nemesis_3_10_2_69346.sh' ARCHIVE_BASE_NEMESIS_13_MD5='7ea2f1b47be86b5ba0c756f9c708f5d0' ARCHIVE_BASE_NEMESIS_13_SIZE='38856' ARCHIVE_BASE_NEMESIS_13_VERSION='3.10.2-gog69346' ARCHIVE_BASE_NEMESIS_12_NAME='stellaris_nemesis_3_10_1_69202.sh' ARCHIVE_BASE_NEMESIS_12_MD5='a947e9923334ef68652edbb24191e20c' ARCHIVE_BASE_NEMESIS_12_SIZE='38856' ARCHIVE_BASE_NEMESIS_12_VERSION='3.10.1-gog69202' ARCHIVE_BASE_NEMESIS_11_NAME='stellaris_nemesis_3_10_0_2_68987.sh' ARCHIVE_BASE_NEMESIS_11_MD5='83964f37d25affd9132d6e49baf6d76b' ARCHIVE_BASE_NEMESIS_11_SIZE='38856' ARCHIVE_BASE_NEMESIS_11_VERSION='3.10.0.2-gog68987' 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_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_11_URL='https://www.gog.com/game/stellaris_overlord' ARCHIVE_BASE_OVERLORD_10_NAME='stellaris_overlord_3_10_4_69706.sh' ARCHIVE_BASE_OVERLORD_10_MD5='927949921df505f021d33780b53a5418' ARCHIVE_BASE_OVERLORD_10_SIZE='99860' ARCHIVE_BASE_OVERLORD_10_VERSION='3.10.4-gog69706' ARCHIVE_BASE_OVERLORD_9_NAME='stellaris_overlord_3_10_3_69539.sh' ARCHIVE_BASE_OVERLORD_9_MD5='170a93d40a6d2cd1986e2fbaf4272735' ARCHIVE_BASE_OVERLORD_9_SIZE='100180' ARCHIVE_BASE_OVERLORD_9_VERSION='3.10.3-gog69539' ARCHIVE_BASE_OVERLORD_8_NAME='stellaris_overlord_3_10_2_69346.sh' ARCHIVE_BASE_OVERLORD_8_MD5='28b8de70c9c213e38c04b00edf0db0b1' ARCHIVE_BASE_OVERLORD_8_SIZE='100184' ARCHIVE_BASE_OVERLORD_8_VERSION='3.10.2-gog69346' ARCHIVE_BASE_OVERLORD_7_NAME='stellaris_overlord_3_10_1_69202.sh' ARCHIVE_BASE_OVERLORD_7_MD5='ae491975383cfcfc35da0b1b4e003cc0' ARCHIVE_BASE_OVERLORD_7_SIZE='100180' ARCHIVE_BASE_OVERLORD_7_VERSION='3.10.1-gog69202' ARCHIVE_BASE_OVERLORD_6_NAME='stellaris_overlord_3_10_0_2_68987.sh' ARCHIVE_BASE_OVERLORD_6_MD5='031c07da495842109040c6449a2b4db4' ARCHIVE_BASE_OVERLORD_6_SIZE='100184' ARCHIVE_BASE_OVERLORD_6_VERSION='3.10.0.2-gog68987' 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_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_11_URL='https://www.gog.com/game/stellaris_galactic_paragons' ARCHIVE_BASE_PARAGONS_10_NAME='stellaris_galactic_paragons_3_10_4_69706.sh' ARCHIVE_BASE_PARAGONS_10_MD5='0781905dcf4cf726b21574c74b018a94' ARCHIVE_BASE_PARAGONS_10_SIZE='832' ARCHIVE_BASE_PARAGONS_10_VERSION='3.10.4-gog69706' ARCHIVE_BASE_PARAGONS_9_NAME='stellaris_galactic_paragons_3_10_3_69539.sh' ARCHIVE_BASE_PARAGONS_9_MD5='a2d47fb32fbdfdaad4015aac868f0729' ARCHIVE_BASE_PARAGONS_9_SIZE='1152' ARCHIVE_BASE_PARAGONS_9_VERSION='3.10.3-gog69539' ARCHIVE_BASE_PARAGONS_8_NAME='stellaris_galactic_paragons_3_10_2_69346.sh' ARCHIVE_BASE_PARAGONS_8_MD5='4338b6764e1c76d2d08838c4b940698b' ARCHIVE_BASE_PARAGONS_8_SIZE='1152' ARCHIVE_BASE_PARAGONS_8_VERSION='3.10.2-gog69346' ARCHIVE_BASE_PARAGONS_7_NAME='stellaris_galactic_paragons_3_10_1_69202.sh' ARCHIVE_BASE_PARAGONS_7_MD5='a51b35147b8737a83dc2c87d1e15c6e7' ARCHIVE_BASE_PARAGONS_7_SIZE='1152' ARCHIVE_BASE_PARAGONS_7_VERSION='3.10.1-gog69202' ARCHIVE_BASE_PARAGONS_6_NAME='stellaris_galactic_paragons_3_10_0_2_68987.sh' ARCHIVE_BASE_PARAGONS_6_MD5='0a9ca705958130bf0472b47e91506afb' ARCHIVE_BASE_PARAGONS_6_SIZE='1152' ARCHIVE_BASE_PARAGONS_6_VERSION='3.10.0.2-gog68987' 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_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' ARCHIVE_BASE_PLANES_5_URL='https://www.gog.com/game/stellaris_astral_planes' ARCHIVE_BASE_PLANES_4_NAME='stellaris_astral_planes_3_10_4_69706.sh' ARCHIVE_BASE_PLANES_4_MD5='1f13892554e3dd7f518e6c24c7588902' ARCHIVE_BASE_PLANES_4_SIZE='46789' ARCHIVE_BASE_PLANES_4_VERSION='3.10.4-gog69706' ARCHIVE_BASE_PLANES_3_NAME='stellaris_astral_planes_3_10_3_69539.sh' ARCHIVE_BASE_PLANES_3_MD5='fa20993e9d31c987a11a32a05a10fca3' ARCHIVE_BASE_PLANES_3_SIZE='47108' ARCHIVE_BASE_PLANES_3_VERSION='3.10.3-gog69539' ARCHIVE_BASE_PLANES_2_NAME='stellaris_astral_planes_3_10_2_69346.sh' ARCHIVE_BASE_PLANES_2_MD5='ccf3ead407701f817a64b35c5bf86e68' ARCHIVE_BASE_PLANES_2_SIZE='47108' ARCHIVE_BASE_PLANES_2_VERSION='3.10.2-gog69346' ARCHIVE_BASE_PLANES_1_NAME='stellaris_astral_planes_3_10_1_69202.sh' ARCHIVE_BASE_PLANES_1_MD5='9c1e948d507f71c367502ad0b27b8556' ARCHIVE_BASE_PLANES_1_SIZE='47104' ARCHIVE_BASE_PLANES_1_VERSION='3.10.1-gog69202' ARCHIVE_BASE_PLANES_0_NAME='stellaris_astral_planes_3_10_0_2_68987.sh' ARCHIVE_BASE_PLANES_0_MD5='02a08ebe68c3394d121724e3d7f2221c' ARCHIVE_BASE_PLANES_0_SIZE='47104' ARCHIVE_BASE_PLANES_0_VERSION='3.10.0.2-gog68987' 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-stellaris.sh0000755000000000000000000001243214471751340014164 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Stellaris ### script_version=20240127.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='stellaris' GAME_NAME='Stellaris' 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_48_URL='https://www.gog.com/game/stellaris' ARCHIVE_BASE_47_NAME='stellaris_3_10_4_69706.sh' ARCHIVE_BASE_47_MD5='d4fcec0db7928f942dc19debadf4f8b2' ARCHIVE_BASE_47_SIZE='16449439' ARCHIVE_BASE_47_VERSION='3.10.4-gog69706' ARCHIVE_BASE_46_NAME='stellaris_3_10_3_69539.sh' ARCHIVE_BASE_46_MD5='67b91bc3f3fb0a8f81d03a9f4020f5e4' ARCHIVE_BASE_46_SIZE='16517672' ARCHIVE_BASE_46_VERSION='3.10.3-gog69539' ARCHIVE_BASE_45_NAME='stellaris_3_10_2_69346.sh' ARCHIVE_BASE_45_MD5='809f5f041d4bc26e611e866a64298716' ARCHIVE_BASE_45_SIZE='16517672' ARCHIVE_BASE_45_VERSION='3.10.2-gog69346' ARCHIVE_BASE_44_NAME='stellaris_3_10_1_69202.sh' ARCHIVE_BASE_44_MD5='41a176a24fef76f1c1ce7fe0d9f09557' ARCHIVE_BASE_44_SIZE='16517656' ARCHIVE_BASE_44_VERSION='3.10.1-gog69202' ARCHIVE_BASE_43_NAME='stellaris_3_10_0_2_68987.sh' ARCHIVE_BASE_43_MD5='3c5f2869b1183d8cf9b72de5b99485cd' ARCHIVE_BASE_43_SIZE='16517564' ARCHIVE_BASE_43_VERSION='3.10.0.2-gog68987' 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=' stellaris *.py' CONTENT_GAME_DATA_MODELS_FILES=' gfx/models' CONTENT_GAME_DATA_FILES=' common dlc events flags fonts gfx interface licenses locales localisation localisation_synced map music prescripted_countries previewer_assets sound tweakergui_assets *.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 PKG_DATA' 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_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 libresolv.so.2 librt.so.1 libstdc++.so.6 libuuid.so.1 libX11.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" # Force the use of system-provided SDL 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' " # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete unwanted files rm --force --recursive \ 'pdx_browser' ) # Include game data set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-sunless-sea.sh0000755000000000000000000001664114471751340014432 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=20231020.4 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN64' launchers_write set_current_package 'PKG_BIN32' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-sunless-skies-cyclopean-owl.sh0000755000000000000000000000343614471751340017550 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=20230926.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' GAME_ID='sunless-skies' GAME_NAME='Sunless Skies' EXPANSION_ID_OWL='cyclopean-owl' EXPANSION_NAME_OWL='Cyclopean Owl' 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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-sunless-skies.sh0000755000000000000000000000421014471751340014765 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Sunless Skies ### script_version=20231016.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='sunless-skies' GAME_NAME='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_1_URL='https://www.gog.com/game/sunless_skies' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-superflu-riteurnz.sh0000755000000000000000000001313514471751340015710 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Superflu Riteurnz ### script_version=20231222.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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.27 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 set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-terra-nil.sh0000755000000000000000000000475514471751340014070 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Terra Nil ### script_version=20231225.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-the-elder-scrolls-3.sh0000755000000000000000000001160114471751340015647 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=20231024.4 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion 'GAME_DATAFILES_DATA' 'PKG_DATA' "$(path_game_data)/Data Files" content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launcher_path=$(launcher_path 'APP_MAIN') mkdir --parents "$(dirname "$launcher_path")" { 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 } | sed --regexp-extended 's/( ){4}/\t/g' > "$launcher_path" chmod 755 "$launcher_path" launcher_write_desktop 'APP_MAIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-the-excavation-of-hobs-barrow.sh0000755000000000000000000000330114471751340017721 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=20230926.2 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='1200000' 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 icons icons_inclusion # Include game data content_inclusion_default # Write launchers launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-the-settlers-2.sh0000755000000000000000000001435014471751340014745 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # The Settlers 2 ### script_version=20230925.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='360000' 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='370000' 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='400000' 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_DEPS="$PKG_COMMON_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)" 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 icons PKG='PKG_COMMON' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_MAIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-titan-quest-expansions.sh0000755000000000000000000000543014471751340016625 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=20230925.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='2600000' 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='2300000' 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_MAIN_PROVIDES_RAGNAROK=" ${GAME_ID}-data-xpack2" 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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-titan-quest.sh0000755000000000000000000000625714471751340014450 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Titan Quest ### script_version=20230925.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='14000000' 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 thqnonline maxplugins.dlo *.dll *.exe' 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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' 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_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_XPACK2_ID" 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" 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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete unwanted files rm --force --recursive \ '__redist' \ '__support' \ 'commonappdata' \ 'tmp' ) # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-tonight-we-riot.sh0000755000000000000000000000505614471751340015226 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Tonight We Riot ### script_version=20231020.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-torchlight-1.sh0000755000000000000000000000440114471751340014464 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Torchlight 1 ### script_version=20230925.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='460000' 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=' torchlight.exe *.cfg *.dll' 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}/Application Data/runic games/torchlight' APP_MAIN_EXE='torchlight.exe' APP_MAIN_ICON='torchlight.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" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 unwanted files rm --force --recursive \ 'commonappdata' \ 'tmp' ) # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-torchlight-2.sh0000755000000000000000000001011014471751340014457 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Torchlight 2 ### script_version=20230925.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='1700000' 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='1700000' 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_BIN32_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib" CONTENT_LIBS_BIN32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86/lib" CONTENT_LIBS_BIN32_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=' libCEGUIBase.so.1 libCEGUIExpatParser.so libCEGUIFalagardWRBase.so libCEGUIFreeImageImageCodec.so libfmodex.so libOgreMain.so.1 Plugin_OctreeSceneManager.so RenderSystem_GL.so' CONTENT_GAME_BIN32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86" CONTENT_GAME_BIN32_FILES=' Torchlight2.bin.x86 ModLauncher.bin.x86' 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_DATA_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/noarch" CONTENT_GAME_DATA_FILES=' *.bmp *.cfg *.png icons movies music PAKS porting programs' CONTENT_DOC_DATA_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/noarch" CONTENT_DOC_DATA_FILES=' licenses' APP_MAIN_EXE_BIN32='Torchlight2.bin.x86' APP_MAIN_EXE_BIN64='Torchlight2.bin.x86_64' APP_MAIN_ICON='Delvers.png' APP_MAIN_ICON_HUMBLE='noarch/Delvers.png' PACKAGES_LIST='PKG_BIN32 PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_DEPS="$PKG_BIN_DEPS" 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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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 ( 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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN32' launchers_write PKG='PKG_BIN64' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-torment-tides-of-numenera.sh0000755000000000000000000001103314471751340017166 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=20231020.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-transistor.sh0000755000000000000000000000632414471751340014375 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=20230926.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='3600000' 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' ## Some shipped libraries can not be replaced by system ones. CONTENT_LIBS_LIBS32_PATH="${CONTENT_PATH_DEFAULT}/lib" CONTENT_LIBS_LIBS32_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=' libBink.so libFModPlugins.so libfmod.so.4 libfmodstudio.so.4 liblua52.so' 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' APP_MAIN_PREFIX_TYPE='none' APP_MAIN_EXE='Transistor.exe' APP_MAIN_ICON='Transistor.bmp' PACKAGES_LIST='PKG_MAIN PKG_LIBS32 PKG_LIBS64' 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_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS32_ARCH='32' PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS64_ARCH='64' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 icon PKG='PKG_MAIN' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_MAIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-tropico.sh0000755000000000000000000001247614471751340013651 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=20231020.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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' APP_MAIN_EXE_TROPICO1='tropico.exe' APP_MAIN_EXE_TROPICO2='tropico2.exe' # Packages PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' ## Tropico 1 PKG_L10N_ID_TROPICO1="${GAME_ID_TROPICO1}-l10n" PKG_L10N_ID_TROPICO1_EN="${PKG_L10N_ID_TROPICO1}-en" PKG_L10N_ID_TROPICO1_FR="${PKG_L10N_ID_TROPICO1}-fr" PKG_L10N_PROVIDES_TROPICO1=" $PKG_L10N_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" PKG_BIN_DEPS_TROPICO1="$PKG_L10N_ID_TROPICO1 $PKG_DATA_ID_TROPICO1" ## Tropico 2 PKG_L10N_ID_TROPICO2="${GAME_ID_TROPICO2}-l10n" PKG_L10N_ID_TROPICO2_EN="${PKG_L10N_ID_TROPICO2}-en" PKG_L10N_ID_TROPICO2_FR="${PKG_L10N_ID_TROPICO2}-fr" PKG_L10N_PROVIDES_TROPICO2=" $PKG_L10N_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" PKG_BIN_DEPS_TROPICO2="$PKG_L10N_ID_TROPICO2 $PKG_DATA_ID_TROPICO2" ## FIXME: This game should be run in a WINE virtual desktop. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 'SOURCE_ARCHIVE' ( 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/' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-tyranny-expansions.sh0000755000000000000000000005237514471751340016065 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=20230926.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='1700' 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='4600' 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='5700' 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='1200000' 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_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)" # Bastard's Wound - Delete duplicated files already provided by the base game case "$(context_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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-tyranny.sh0000755000000000000000000000475614471751340013700 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Tyranny ### script_version=20230926.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='16000000' 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_BIN32 PKG_BIN64 PKG_AREAS PKG_DATA' PKG_AREAS_ID="${GAME_ID}-areas" PKG_AREAS_DESCRIPTION='areas' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_AREAS_ID $PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_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 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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN32' launchers_write PKG='PKG_BIN64' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-unreal-tournament-2004.sh0000755000000000000000000001025014471751340016221 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Unreal Tournament 2004 ### script_version=20231016.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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=$(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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-unreal-tournament.sh0000755000000000000000000001135714471751340015647 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=20231212.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ## Do not convert file paths to lowercase. ARCHIVE_BASE_0_EXTRACTOR_OPTIONS='--progress=1 --silent' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-vampire-the-masquerade-bloodlines.sh0000755000000000000000000002607614471751340020671 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=20231102.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='vampire-the-masquerade-bloodlines' GAME_NAME='Vampire: The Masquerade - Bloodlines' 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='3000000' 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 *.asi *.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 *.dat *.mpg *.tth *.txt' ## 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_DIRECT3D_RENDERER='dxvk' APP_MAIN_EXE='vampire.exe' ## Switch French keyboard layout to us-azerty to provide direct access to digits. ## TODO: Check that this works as expected on Wayland (it probably does not). 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. 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 ' APP_MAIN_POSTRUN='# Restore the keyboard variant, if it has previously been switched to us-azerty. if [ $KEYBOARD_RESTORE_VARIANT -eq 1 ]; then setxkbmap -variant "$KEYBOARD_VARIANT" 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_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_ENSCRIPTION='English localization' PKG_L10N_FR_FRSCRIPTION='French localization' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_L10N_ID $PKG_DATA_ID" ## FIXME: This game should be run in a WINE virtual desktop. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation case "$(current_archive)" in ('ARCHIVE_BASE_DOTEMU_'*) 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_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.sh0000755000000000000000000000415414471751340016623 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=20230926.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='870000' 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='220000' 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_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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-victor-vran.sh0000755000000000000000000000717114471751340014440 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=20230926.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='5000000' 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_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 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' 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 PKG='PKG_BIN' 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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-wadjet-eye-games-ags.sh0000755000000000000000000002446114471751340016067 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=20240127.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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' ## 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' ## 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' ## 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_3_URL='https://www.gog.com/game/technobabylon' 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' ## 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_3_URL='https://www.gog.com/game/shardlight' 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' ## 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' 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' APP_MAIN_SCUMMID='ags' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 optional extra archives case "$(current_archive)" in ('ARCHIVE_BASE_SHIVAH_'*) ARCHIVE_OPTIONAL_ICONS_NAME='the-shivah_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='76cb6554e1c09596842391a71e696ded' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/the-shivah/' ;; ('ARCHIVE_BASE_GEMINIRUE_'*) ARCHIVE_OPTIONAL_ICONS_NAME='gemini-rue_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='329019f63b1acdfe7c4d5219a562efab' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/gemini-rue/' ;; ('ARCHIVE_BASE_RESONANCE_'*) ARCHIVE_OPTIONAL_ICONS_NAME='resonance_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='0a24712adffd9f5f2998bf355fc161b7' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/resonance/' ;; ('ARCHIVE_BASE_TECHNOBABYLON_'*) ARCHIVE_OPTIONAL_ICONS_NAME='technobabylon_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='84a7104801c25d5e931fbdd4cc3d1916' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/technobabylon/' ;; ('ARCHIVE_BASE_SHARDLIGHT_'*) ARCHIVE_OPTIONAL_ICONS_NAME='shardlight_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='59bce49abce9678d963cecd72be8b512' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/shardlight/' ;; ('ARCHIVE_BASE_UNAVOWED_'*) ARCHIVE_OPTIONAL_ICONS_NAME='unavowed_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='359eae49cc167a34a1cc5525cf6ab340' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/unavowed/' ;; esac archive_initialize_optional \ 'ARCHIVE_ICONS' \ 'ARCHIVE_OPTIONAL_ICONS' # Extract game data archive_extraction_default if archive_is_available 'ARCHIVE_ICONS'; then archive_extraction 'ARCHIVE_ICONS' fi # Include game data if archive_is_available 'ARCHIVE_ICONS'; then case "$(current_archive)" in ('ARCHIVE_BASE_SHIVAH_'*) CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 16x16 24x24 32x32 48x48 256x256' ;; ('ARCHIVE_BASE_GEMINIRUE_'*) CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 256x256' ;; ('ARCHIVE_BASE_RESONANCE_'*) CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 16x16 24x24 32x32 48x48 256x256' ;; ('ARCHIVE_BASE_TECHNOBABYLON_'*) CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 64x64' ;; ('ARCHIVE_BASE_SHARDLIGHT_'*) CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 16x16 32x32' ;; ('ARCHIVE_BASE_UNAVOWED_'*) CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 16x16 24x24 32x32 48x48 256x256' ;; esac content_inclusion 'ICONS_DATA' 'PKG_MAIN' "$(path_icons)" else case "$(current_archive)" in ('ARCHIVE_BASE_SHIVAH_0') APP_MAIN_ICON='Shivah.exe' ;; ('ARCHIVE_BASE_GEMINIRUE_0'|'ARCHIVE_BASE_GEMINIRUE_1') APP_MAIN_ICON='Gemini Rue.exe' ;; ('ARCHIVE_BASE_RESONANCE_0') APP_MAIN_ICON='Resonance.exe' ;; ('ARCHIVE_BASE_TECHNOBABYLON_0'|'ARCHIVE_BASE_TECHNOBABYLON_1') APP_MAIN_ICON='Technobabylon.exe' ;; ('ARCHIVE_BASE_SHARDLIGHT_0'|'ARCHIVE_BASE_SHARDLIGHT_1') APP_MAIN_ICON='Shardlight.exe' ;; ('ARCHIVE_BASE_UNAVOWED_0'|'ARCHIVE_BASE_UNAVOWED_1'|'ARCHIVE_BASE_UNAVOWED_2'|'ARCHIVE_BASE_UNAVOWED_3') APP_MAIN_ICON='Unavowed.exe' ;; (*) APP_MAIN_ICON='../support/icon.png' ;; esac icons_inclusion fi content_inclusion_default # Write launchers launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-war-for-the-overworld-expansions.sh0000755000000000000000000002136714471751340020532 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=20230926.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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_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_1_URL='http://buy.wftogame.com/charity/' 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_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_1_URL='http://buy.wftogame.com/charity/' 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_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_1_URL='http://buy.wftogame.com/charity/' 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_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_6_URL='https://www.gog.com/game/war_for_the_overworld_underlord_edition_upgrade' 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_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_2_URL='https://www.gog.com/game/war_for_the_overworld_heart_of_gold' 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_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_5_URL='https://www.gog.com/game/war_for_the_overworld_my_pet_dungeon' 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_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_2_URL='https://www.gog.com/game/war_for_the_overworld_worker_skin_collection' 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_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_1_URL='https://www.gog.com/game/war_for_the_overworld_the_under_games' 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_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 print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-war-for-the-overworld.sh0000755000000000000000000001064714471751340016344 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=20231017.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='war-for-the-overworld' GAME_NAME='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_6_URL='https://www.gog.com/game/war_for_the_overworld' 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' ## If libsteam_api.so is not included, ending a level will fail. UNITY3D_PLUGINS=' libCoherentGTCore.so libCoherentGTJS.so libcoherenticudata.so libcoherenticui18n.so libcoherenticuuc.so libCoherentUIGT_Native.so libGameLogic.so libRenoirCore.Linux.so libsteam_api.so libWTF.so ScreenSelector.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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 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" # Link some Unity3D plugin libraries in the game data path as the game engine fails to find them otherwise. libraries_source=$(path_libraries) libraries_destination="$(package_path 'PKG_BIN')$(path_game_data)/$(unity3d_name)_Data/Plugins/x86_64" mkdir --parents "$libraries_destination" ln --symbolic \ "${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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warcraft-1.sh0000755000000000000000000000336514471751340014136 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Warcraft 1 ### script_version=20230926.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='650000' 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=' *.bin *.cue *.exe *.war data drivers' 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 icons icons_inclusion # Include game data content_inclusion_default # Write launchers launchers_write # Build package packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warcraft-3.sh0000755000000000000000000000621314471751340014133 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Warcraft 3 ### script_version=20231017.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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" # Set the list of requirements to extract the archive contents. SCRIPT_DEPS="${SCRIPT_DEPS:-} smpq" ## FIXME: This game can get display issues on some resolutions, when run on Wayland without using a virtual desktop. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warhammer-40k-dawn-of-war.sh0000755000000000000000000002542214471751340016664 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Warhammer 40,000: Dawn of War: # - Dawn of War (original game) # - Winter Assault # - Dark Crusade # - Soulstorm ### script_version=20230918.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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_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 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' ARCHIVE_BASE_WA_EN_0_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' 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' ARCHIVE_BASE_WA_FR_0_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ## 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' APP_MAIN_EXE_DOW='w40k.exe' APP_MAIN_EXE_WA='w40kwa.exe' APP_MAIN_EXE_DC='darkcrusade.exe' APP_MAIN_EXE_SS='soulstorm.exe' APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=101' ## 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 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" ## 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" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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" # Include Mono in the WINE prefix ARCHIVE_REQUIRED_MONO_NAME='wine-mono-8.0.0-x86.msi' ARCHIVE_REQUIRED_MONO_MD5='4fe5c683fcd9634c7f6571f252b3603c' ARCHIVE_REQUIRED_MONO_URL='https://dl.winehq.org/wine/wine-mono/8.0.0/' archive_initialize_required 'ARCHIVE_MONO' 'ARCHIVE_REQUIRED_MONO' mono_installer_source=$(archive_path 'ARCHIVE_MONO') mono_installer_destination="$(package_path 'PKG_BIN')$(path_game_data)/mono/wine-mono-8.0.0-x86.msi" install -D --mode=644 "$mono_installer_source" "$mono_installer_destination" WINE_DLLOVERRIDES_DEFAULT='winemenubuilder.exe,mshtml=' APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Include Mono in the WINE prefix if [ ! -e .mono_installed ]; then $(wine_command) mono/wine-mono-8.0.0-x86.msi touch .mono_installed fi ' # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete unwanted files rm --force --recursive \ '__redist' \ 'app' \ 'commonappdata' \ 'tmp' # 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' ) # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warhammer-40k-gladius-expansions-extra.sh0000755000000000000000000000642314471751340021500 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=20231222.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_16_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_13_02_69663.sh' ARCHIVE_BASE_LORDOFSKULLS_16_MD5='4101714aa2ecb44a0a0df13ec040c9d5' ARCHIVE_BASE_LORDOFSKULLS_16_SIZE='1086' ARCHIVE_BASE_LORDOFSKULLS_16_VERSION='1.13.2-gog69663' ARCHIVE_BASE_LORDOFSKULLS_16_URL='https://www.gog.com/game/warhammer_40000_gladius_relics_of_war_lord_of_skulls' ARCHIVE_BASE_LORDOFSKULLS_15_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_13_01_69403.sh' ARCHIVE_BASE_LORDOFSKULLS_15_MD5='976d9770c167d3129fe202fdba9510cc' ARCHIVE_BASE_LORDOFSKULLS_15_SIZE='1400' ARCHIVE_BASE_LORDOFSKULLS_15_VERSION='1.13.1-gog69403' 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=20231222.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_17_NAME='warhammer_40_000_gladius_reinforcement_pack_1_13_02_69663.sh' ARCHIVE_BASE_REINFORCEMENT_17_MD5='809e33306d041d5be456d1de728dc9ee' ARCHIVE_BASE_REINFORCEMENT_17_SIZE='1086' ARCHIVE_BASE_REINFORCEMENT_17_VERSION='1.13.2-gog69663' ARCHIVE_BASE_REINFORCEMENT_17_URL='https://www.gog.com/game/warhammer_40000_gladius_reinforcement_pack' ARCHIVE_BASE_REINFORCEMENT_16_NAME='warhammer_40_000_gladius_reinforcement_pack_1_13_01_69403.sh' ARCHIVE_BASE_REINFORCEMENT_16_MD5='0c37c435320941b88a53f3ddc63381b6' ARCHIVE_BASE_REINFORCEMENT_16_SIZE='1400' ARCHIVE_BASE_REINFORCEMENT_16_VERSION='1.13.1-gog69403' 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_16_NAME='warhammer_40_000_gladius_fortification_pack_1_13_02_69663.sh' ARCHIVE_BASE_FORTIFICATION_16_MD5='b316bde92f52a981ca432cbc1225a9d8' ARCHIVE_BASE_FORTIFICATION_16_SIZE='1086' ARCHIVE_BASE_FORTIFICATION_16_VERSION='1.13.2-gog69663' ARCHIVE_BASE_FORTIFICATION_16_URL='https://www.gog.com/game/warhammer_40000_gladius_fortification_pack' ARCHIVE_BASE_FORTIFICATION_15_NAME='warhammer_40_000_gladius_fortification_pack_1_13_01_69403.sh' ARCHIVE_BASE_FORTIFICATION_15_MD5='a8a0af34a6e216ccb015a4dfc0c34543' ARCHIVE_BASE_FORTIFICATION_15_SIZE='1400' ARCHIVE_BASE_FORTIFICATION_15_VERSION='1.13.1-gog69403' 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_13_NAME='warhammer_40_000_gladius_assault_pack_1_13_02_69663.sh' ARCHIVE_BASE_ASSAULT_13_MD5='69207a858cd17d53b696f23c9c481d67' ARCHIVE_BASE_ASSAULT_13_SIZE='1086' ARCHIVE_BASE_ASSAULT_13_VERSION='1.13.2-gog69663' ARCHIVE_BASE_ASSAULT_13_URL='https://www.gog.com/game/warhammer_40000_gladius_assault_pack' ARCHIVE_BASE_ASSAULT_12_NAME='warhammer_40_000_gladius_assault_pack_1_13_01_69403.sh' ARCHIVE_BASE_ASSAULT_12_MD5='ca1484c5fba1a62eade6123c1baf4696' ARCHIVE_BASE_ASSAULT_12_SIZE='1400' ARCHIVE_BASE_ASSAULT_12_VERSION='1.13.1-gog69403' 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_11_NAME='warhammer_40_000_gladius_specialist_pack_1_13_02_69663.sh' ARCHIVE_BASE_SPECIALIST_11_MD5='01add4cdd855174cbc2c84043e0788d2' ARCHIVE_BASE_SPECIALIST_11_SIZE='1086' ARCHIVE_BASE_SPECIALIST_11_VERSION='1.13.2-gog69663' ARCHIVE_BASE_SPECIALIST_11_URL='https://www.gog.com/game/warhammer_40000_gladius_specialist_pack' ARCHIVE_BASE_SPECIALIST_10_NAME='warhammer_40_000_gladius_specialist_pack_1_13_01_69403.sh' ARCHIVE_BASE_SPECIALIST_10_MD5='d84044d2586b22ca339f5089b61887ff' ARCHIVE_BASE_SPECIALIST_10_SIZE='1400' ARCHIVE_BASE_SPECIALIST_10_VERSION='1.13.1-gog69403' 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_4_NAME='warhammer_40_000_gladius_escalation_pack_1_13_02_69663.sh' ARCHIVE_BASE_ESCALATION_4_MD5='4f911c1846da28c4dd47aba3bacce026' ARCHIVE_BASE_ESCALATION_4_SIZE='1086' ARCHIVE_BASE_ESCALATION_4_VERSION='1.13.2-gog69663' ARCHIVE_BASE_ESCALATION_4_URL='https://www.gog.com/game/warhammer_40000_gladius_adeptus_mechanicus' ARCHIVE_BASE_ESCALATION_3_NAME='warhammer_40_000_gladius_escalation_pack_1_13_01_69403.sh' ARCHIVE_BASE_ESCALATION_3_MD5='be161f47fcda7295c539f6930e480bd3' ARCHIVE_BASE_ESCALATION_3_SIZE='1400' ARCHIVE_BASE_ESCALATION_3_VERSION='1.13.1-gog69403' 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_3_NAME='warhammer_40_000_gladius_firepower_pack_1_13_02_69663.sh' ARCHIVE_BASE_FIREPOWER_3_MD5='81541c97a2f11295a9680538fe3860ec' ARCHIVE_BASE_FIREPOWER_3_SIZE='1086' ARCHIVE_BASE_FIREPOWER_3_VERSION='1.13.2-gog69663' ARCHIVE_BASE_FIREPOWER_3_URL='https://www.gog.com/game/warhammer_40000_gladius_firepower_pack' ARCHIVE_BASE_FIREPOWER_2_NAME='warhammer_40_000_gladius_firepower_pack_1_13_01_69403.sh' ARCHIVE_BASE_FIREPOWER_2_MD5='772201eab8a7b882e5cba34ed55ec741' ARCHIVE_BASE_FIREPOWER_2_SIZE='1400' ARCHIVE_BASE_FIREPOWER_2_VERSION='1.13.1-gog69403' 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.sh0000755000000000000000000002414614471751340020361 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=20231222.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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_17_NAME='warhammer_40_000_gladius_tyranids_1_13_02_69663.sh' ARCHIVE_BASE_TYRANIDS_17_MD5='56d9a21d1b66074e6e2ac2258dae1b1d' ARCHIVE_BASE_TYRANIDS_17_SIZE='1086' ARCHIVE_BASE_TYRANIDS_17_VERSION='1.13.2-gog69663' ARCHIVE_BASE_TYRANIDS_17_URL='https://www.gog.com/game/warhammer_40000_gladius_tyranids' ARCHIVE_BASE_TYRANIDS_16_NAME='warhammer_40_000_gladius_tyranids_1_13_01_69403.sh' ARCHIVE_BASE_TYRANIDS_16_MD5='1c9c6cd6c02b4ac7eb0b2b1c619a8e0b' ARCHIVE_BASE_TYRANIDS_16_SIZE='1400' ARCHIVE_BASE_TYRANIDS_16_VERSION='1.13.1-gog69403' 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_16_NAME='warhammer_40_000_gladius_chaos_space_marines_1_13_02_69663.sh' ARCHIVE_BASE_CHAOS_16_MD5='7646dcfb05aaca5b3d6e736af0b8d559' ARCHIVE_BASE_CHAOS_16_SIZE='1086' ARCHIVE_BASE_CHAOS_16_VERSION='1.13.2-gog69663' ARCHIVE_BASE_CHAOS_16_URL='https://www.gog.com/game/warhammer_40000_gladius_chaos_space_marines' ARCHIVE_BASE_CHAOS_15_NAME='warhammer_40_000_gladius_chaos_space_marines_1_13_01_69403.sh' ARCHIVE_BASE_CHAOS_15_MD5='48ac8b9902efc357916d0c09ac5b55cb' ARCHIVE_BASE_CHAOS_15_SIZE='1400' ARCHIVE_BASE_CHAOS_15_VERSION='1.13.1-gog69403' 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_13_NAME='warhammer_40_000_gladius_t_au_1_13_02_69663.sh' ARCHIVE_BASE_TAU_13_MD5='307b4cfe83e697ced5bb43d6f0b281f0' ARCHIVE_BASE_TAU_13_SIZE='1086' ARCHIVE_BASE_TAU_13_VERSION='1.13.2-gog69663' ARCHIVE_BASE_TAU_13_URL='https://www.gog.com/game/warhammer_40000_gladius_tau' ARCHIVE_BASE_TAU_12_NAME='warhammer_40_000_gladius_t_au_1_13_01_69403.sh' ARCHIVE_BASE_TAU_12_MD5='fdd2242b5c21206b00281c077907e337' ARCHIVE_BASE_TAU_12_SIZE='1396' ARCHIVE_BASE_TAU_12_VERSION='1.13.1-gog69403' 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_11_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_13_02_69663.sh' ARCHIVE_BASE_AELDARI_11_MD5='b78e818ea0eafd6a3f55f27780a32e41' ARCHIVE_BASE_AELDARI_11_SIZE='1086' ARCHIVE_BASE_AELDARI_11_VERSION='1.13.2-gog69663' ARCHIVE_BASE_AELDARI_11_URL='https://www.gog.com/game/warhammer_40000_gladius_craftworld_aeldari' ARCHIVE_BASE_AELDARI_10_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_13_01_69403.sh' ARCHIVE_BASE_AELDARI_10_MD5='4cd9164d99f7313f05b1a68e9a1db71c' ARCHIVE_BASE_AELDARI_10_SIZE='1400' ARCHIVE_BASE_AELDARI_10_VERSION='1.13.1-gog69403' 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_4_NAME='warhammer_40_000_gladius_adeptus_mechanicus_1_13_02_69663.sh' ARCHIVE_BASE_MECHANICUS_4_MD5='08f664202c9b6e59c7b32a1a0020576a' ARCHIVE_BASE_MECHANICUS_4_SIZE='1086' ARCHIVE_BASE_MECHANICUS_4_VERSION='1.13.2-gog69663' ARCHIVE_BASE_MECHANICUS_4_URL='https://www.gog.com/game/warhammer_40000_gladius_adeptus_mechanicus' ARCHIVE_BASE_MECHANICUS_3_NAME='warhammer_40_000_gladius_adeptus_mechanicus_1_13_01_69403.sh' ARCHIVE_BASE_MECHANICUS_3_MD5='dbff85c0663d5f00e56bba5888843030' ARCHIVE_BASE_MECHANICUS_3_SIZE='1400' ARCHIVE_BASE_MECHANICUS_3_VERSION='1.13.1-gog69403' 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_3_NAME='warhammer_40_000_gladius_adepta_sororitas_1_13_02_69663.sh' ARCHIVE_BASE_SORORITAS_3_MD5='d8c0a5bc12a9397f52df156dc60e71ac' ARCHIVE_BASE_SORORITAS_3_SIZE='1086' ARCHIVE_BASE_SORORITAS_3_VERSION='1.13.2-gog69663' ARCHIVE_BASE_SORORITAS_3_URL='https://www.gog.com/game/warhammer_40000_gladius_adepta_sororitas' ARCHIVE_BASE_SORORITAS_2_NAME='warhammer_40_000_gladius_adepta_sororitas_1_13_01_69403.sh' ARCHIVE_BASE_SORORITAS_2_MD5='a15dd3488b8bb46616cd2091c9bc659c' ARCHIVE_BASE_SORORITAS_2_SIZE='1400' ARCHIVE_BASE_SORORITAS_2_VERSION='1.13.1-gog69403' 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_0_NAME='warhammer_40_000_gladius_drukhari_1_13_02_69663.sh' ARCHIVE_BASE_DRUKHARI_0_MD5='0573455b94bb4af75b2a5bfbf2a02a82' ARCHIVE_BASE_DRUKHARI_0_SIZE='1086' ARCHIVE_BASE_DRUKHARI_0_VERSION='1.13.2-gog69663' ARCHIVE_BASE_DRUKHARI_0_URL='https://www.gog.com/game/warhammer_40000_gladius_drukhari' 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.sh0000755000000000000000000001207014471751340016165 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Warhammer 40k: Gladius ### script_version=20231222.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='warhammer-40k-gladius' GAME_NAME='Warhammer 40,000: Gladius - Relics of War' ARCHIVE_BASE_45_NAME='warhammer_40_000_gladius_relics_of_war_1_13_02_69663.sh' ARCHIVE_BASE_45_MD5='014a4878b0e605a69ff4d776a32fd7d6' ARCHIVE_BASE_45_SIZE='3484668' ARCHIVE_BASE_45_VERSION='1.13.2-gog69663' ARCHIVE_BASE_45_URL='https://www.gog.com/game/warhammer_40000_gladius_relics_of_war' ARCHIVE_BASE_44_NAME='warhammer_40_000_gladius_relics_of_war_1_13_01_69403.sh' ARCHIVE_BASE_44_MD5='bd1e15fafc70d0bc0350350b8d9419f0' ARCHIVE_BASE_44_SIZE='3519916' ARCHIVE_BASE_44_VERSION='1.13.1-gog69403' ARCHIVE_BASE_43_NAME='warhammer_40_000_gladius_relics_of_war_1_12_03_67548.sh' ARCHIVE_BASE_43_MD5='9bbcc5e63c4793fddceea5d8b8fbe1d8' ARCHIVE_BASE_43_SIZE='3254164' ARCHIVE_BASE_43_VERSION='1.12.3-gog67548' ARCHIVE_BASE_40_NAME='warhammer_40_000_gladius_relics_of_war_1_11_04_64361.sh' ARCHIVE_BASE_40_MD5='eb7bcdf1a43f47dbc7407e309fd209a3' ARCHIVE_BASE_40_SIZE='3200000' ARCHIVE_BASE_40_VERSION='1.11.4-gog64361' ARCHIVE_BASE_35_NAME='warhammer_40_000_gladius_relics_of_war_1_10_01_00_57375.sh' ARCHIVE_BASE_35_MD5='924bba1e75fdc323d72f24eccc2856a7' ARCHIVE_BASE_35_SIZE='2900000' ARCHIVE_BASE_35_VERSION='1.10.01-gog57375' ARCHIVE_BASE_33_NAME='warhammer_40_000_gladius_relics_of_war_v1_09_03_00_54377.sh' ARCHIVE_BASE_33_MD5='f3271281015c34f1ce3c6974998d886f' ARCHIVE_BASE_33_SIZE='2900000' ARCHIVE_BASE_33_VERSION='1.9.3.0-gog54377' ARCHIVE_BASE_31_NAME='warhammer_40_000_gladius_relics_of_war_1_08_04_01_49548.sh' ARCHIVE_BASE_31_MD5='d2e88289b1b7b1ebe1037d999f14578e' ARCHIVE_BASE_31_SIZE='2600000' ARCHIVE_BASE_31_VERSION='1.8.4.1-gog49548' ARCHIVE_BASE_28_NAME='warhammer_40_000_gladius_relics_of_war_1_07_04_44200.sh' ARCHIVE_BASE_28_MD5='b8534d0956159736ee49f207da516ba6' ARCHIVE_BASE_28_SIZE='2600000' ARCHIVE_BASE_28_VERSION='1.7.4-gog44200' ARCHIVE_BASE_24_NAME='warhammer_40_000_gladius_relics_of_war_1_06_4b_41966.sh' ARCHIVE_BASE_24_MD5='dbdcdd7450f009ffd2c5feae2fbc9fd2' ARCHIVE_BASE_24_SIZE='2300000' ARCHIVE_BASE_24_VERSION='1.6.4b-gog41966' ARCHIVE_BASE_20_NAME='warhammer_40_000_gladius_relics_of_war_1_05_01_36614.sh' ARCHIVE_BASE_20_MD5='faf0d5df1a800d8102bdf20309aa9b6c' ARCHIVE_BASE_20_SIZE='2200000' ARCHIVE_BASE_20_VERSION='1.5.1-gog36614' ARCHIVE_BASE_18_NAME='warhammer_40_000_gladius_relics_of_war_1_04_07_36064.sh' ARCHIVE_BASE_18_MD5='d42c72ef55cb2a42487f8173d26b2260' ARCHIVE_BASE_18_SIZE='2300000' ARCHIVE_BASE_18_VERSION='1.4.7-gog36064' ARCHIVE_BASE_8_NAME='warhammer_40_000_gladius_relics_of_war_1_03_08_32868.sh' ARCHIVE_BASE_8_MD5='0739ede31aa10db01b2afef9f66c5e12' ARCHIVE_BASE_8_SIZE='2100000' ARCHIVE_BASE_8_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 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=' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-warhammer-40k-rogue-trader.sh0000755000000000000000000001111214471751340017131 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=20240110.3 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID='warhammer-40k-rogue-trader' GAME_NAME='Warhammer 40,000: 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' ARCHIVE_BASE_0_URL='https://www.gog.com/game/warhammer_40000_rogue_trader' 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_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_BUNDLES_ID="${PKG_DATA_ID}-bundles" PKG_DATA_BUNDLES_DESCRIPTION="$PKG_DATA_DESCRIPTION - bundles" PKG_DATA_DEPS="${PKG_DATA_DEPS:-} $PKG_DATA_BUNDLES_ID" 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_DEPS="${PKG_DATA_BUNDLES_DEPS:-} $PKG_DATA_BUNDLES_SCENES_1_ID $PKG_DATA_BUNDLES_SCENES_2_ID" PKG_DATA_BUNDLES_UNIT_ID="${PKG_DATA_BUNDLES_ID}-unit" PKG_DATA_BUNDLES_UNIT_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - unit" PKG_DATA_BUNDLES_DEPS="${PKG_DATA_BUNDLES_DEPS:-} $PKG_DATA_BUNDLES_UNIT_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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Drop Steam-specific stuff. rm --recursive 'steam workshop tool' ) # Include game data set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-wasteland-2.sh0000755000000000000000000001142714471751340014306 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=20231021.2 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 engine overuse of file descriptors APP_MAIN_PRERUN='# Work around engine overuse of file descriptors ulimit -n $(($(ulimit -Hn)/2)) ' # 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 $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 $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' ## 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-whispers-of-a-machine.sh0000755000000000000000000000317314471751340016252 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=20230927.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='770000' 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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-world-of-goo.sh0000755000000000000000000000605414471751340014500 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=20230927.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='200000' 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_BIN32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86" CONTENT_GAME_BIN32_FILES=' WorldOfGoo.bin.x86' CONTENT_GAME_BIN64_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/x86_64" CONTENT_GAME_BIN64_FILES=' WorldOfGoo.bin.x86_64' 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_BIN32='WorldOfGoo.bin.x86' APP_MAIN_EXE_BIN64='WorldOfGoo.bin.x86_64' APP_MAIN_ICON='game/gooicon.png' PACKAGES_LIST='PKG_BIN32 PKG_BIN64 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN64_DEPS="$PKG_BIN_DEPS" 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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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 icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN32' launchers_write PKG='PKG_BIN64' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-worms-1.sh0000755000000000000000000000525514471751340013474 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Worms 1 ### script_version=20230927.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='210000' 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 worms*.ogg worms.cfg worms.dat worms.gog *.exe' 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 icons icons_inclusion # Include game data 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_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-worms-2.sh0000755000000000000000000000425314471751340013472 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Worms 2 ### script_version=20231025.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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' 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 set_current_package 'PKG_DATA' icons_inclusion content_inclusion_default # Write launchers set_current_package 'PKG_BIN' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-worms-armageddon.sh0000755000000000000000000000606114471751340015431 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=20230927.1 PLAYIT_COMPATIBILITY_LEVEL='2.26' 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='650000' 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=' *.dll *.exe' CONTENT_GAME_DATA_FILES=' data fesfx graphics tweaks user' CONTENT_DOC_DATA_FILES=' wa_manual.pdf worms armageddon update documentation.rtf' CONTENT_GAME0_DATA_PATH='__support' CONTENT_GAME0_DATA_PATH_0='app/__support' CONTENT_GAME0_DATA_FILES=' save' 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 required empty file prior to game run touch steam.dat ' 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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Drop unwanted files rm --force --recursive \ '__redist' \ 'commonappdata' \ 'tmp' ) # Include game icons PKG='PKG_DATA' icons_inclusion # Include game data content_inclusion_default # Write launchers PKG='PKG_BIN' launchers_write # Build packages packages_generation # Print instructions print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-wormwood-studios-ags.sh0000755000000000000000000001200714471751340016275 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=20240127.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' GAME_ID_PRIMORDIA='primordia' GAME_NAME_PRIMORDIA='Primordia' GAME_ID_STRANGELAND='strangeland' GAME_NAME_STRANGELAND='Strangeland' # Game archives ## 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_6_URL='https://www.gog.com/game/primordia' 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' ## 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='ags' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi 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 optional extra archives case "$(current_archive)" in ('ARCHIVE_BASE_PRIMORDIA_'*) ARCHIVE_OPTIONAL_ICONS_NAME='primordia_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5='66c1d186075708574ee870a9015b4ff6' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/primordia/' ;; esac archive_initialize_optional \ 'ARCHIVE_ICONS' \ 'ARCHIVE_OPTIONAL_ICONS' # Extract game data archive_extraction_default if archive_is_available 'ARCHIVE_ICONS'; then archive_extraction 'ARCHIVE_ICONS' fi # Include game data if archive_is_available 'ARCHIVE_ICONS'; then case "$(current_archive)" in ('ARCHIVE_BASE_PRIMORDIA_'*) CONTENT_ICONS_DATA_PATH='.' CONTENT_ICONS_DATA_FILES=' 16x16 24x24 32x32 48x48 256x256' ;; esac content_inclusion 'ICONS_DATA' 'PKG_MAIN' "$(path_icons)" else case "$(current_archive)" in ('ARCHIVE_BASE_PRIMORDIA_0'|'ARCHIVE_BASE_PRIMORDIA_1'|'ARCHIVE_BASE_PRIMORDIA_2') APP_MAIN_ICON='Primordia.exe' ;; ('ARCHIVE_BASE_STRANGELAND_'*) ## Strangeland.exe is too big, wrestool crashes when trying to handle it. APP_MAIN_ICON='winsetup.exe' ;; (*) APP_MAIN_ICON='../support/icon.png' ;; esac icons_inclusion fi content_inclusion_default # Write launchers launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-zachtronics-mono.sh0000755000000000000000000002200114471751340015450 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=20231021.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 icons_inclusion content_inclusion_default # Write launchers launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-zachtronics-unity3d.sh0000755000000000000000000000741614471751340016114 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=20231021.1 PLAYIT_COMPATIBILITY_LEVEL='2.27' 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 set_current_package 'PKG_DATA' icons_inclusion 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 set_current_package 'PKG_BIN64' launchers_write set_current_package 'PKG_BIN32' launchers_write # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 LICENSE0000644000000000000000000000357514471751340010601 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 © 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.md0000644000000000000000000001517514471751340011052 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 https://forge.dotslashplay.it/vv221/games.git games-vv221.git cd games-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 - SteamWorld series: - SteamWorld Dig - SteamWorld Dig 2 - SteamWorld Heist - The Elder Scrolls III: Morrowind - Titan Quest - Tonight We Riot - Torchlight series: - Torchlight - Torchlight II - Transistor - Unreal Tournament series: - Unreal Tournament - Unreal Tournament 2004 - Vampire: The Masquerade - Bloodlines - Victor Vran ### Adventure - Beyond Good & Evil - 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 - 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 - Myst - Obduction - 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 - 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 - 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 - 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 - Distance ### Role-playing - 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 - 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 - Godhood - Kapital: Sparks of Revolution - 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 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 - Worms series: - Worms - Worms 2 - Worms Armageddon