games/play-7-billion-humans.sh0000755000000000000000000000471414471751340015253 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=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='7-billion-humans' GAME_NAME='7 Billion Humans' ARCHIVE_BASE_0_NAME='7_billion_humans_1_0_32487_23774.sh' ARCHIVE_BASE_0_MD5='3d42952a6b9329f1c64bda00b05c4afb' ARCHIVE_BASE_0_SIZE='160000' ARCHIVE_BASE_0_VERSION='1.0.32487-gog23774' ARCHIVE_BASE_0_URL='https://www.gog.com/game/7_billion_humans' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' 7BillionHumans.bin.x86_64' CONTENT_GAME_BIN32_FILES=' 7BillionHumans.bin.x86' CONTENT_GAME_DATA_FILES=' shaders resource.pak icon.png' CONTENT_DOC_DATA_FILES=' LICENSE.txt README.linux' APP_MAIN_EXE_BIN64='7BillionHumans.bin.x86_64' APP_MAIN_EXE_BIN32='7BillionHumans.bin.x86' APP_MAIN_ICON='icon.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-a-dance-of-fire-and-ice.sh0000755000000000000000000000425314471751340016277 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=20241021.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='a-dance-of-fire-and-ice' GAME_NAME='A Dance of Fire and Ice' ARCHIVE_BASE_1_NAME='a-dance-of-fire-and-ice-linux.zip' ARCHIVE_BASE_1_MD5='adcffda56ec76b5ae8c3ba89e9b9bb93' ARCHIVE_BASE_1_SIZE='2069741' ARCHIVE_BASE_1_VERSION='2.6.3-itch.2023.12.16' ARCHIVE_BASE_1_URL='https://fizzd.itch.io/a-dance-of-fire-and-ice' ARCHIVE_BASE_0_NAME='a-dance-of-fire-and-ice-linux.zip' ARCHIVE_BASE_0_MD5='caf90b5416730395963e26aeb76c1155' ARCHIVE_BASE_0_SIZE='965475' ARCHIVE_BASE_0_VERSION='2.5.0-itch.2023.06.20' UNITY3D_NAME='ADanceOfFireAndIce' ## The game will crash on launch if libsteam_api.so is not available. UNITY3D_PLUGINS=' libadofaipulse.so libStandaloneFileBrowser.so libsteam_api.so' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 libpulse.so.0 librt.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-age-of-mythology.sh0000755000000000000000000015177614471751340015370 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=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='age-of-mythology' GAME_NAME='Age of Mythology' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_DEMO_0_NAME='mtrial.exe' ARCHIVE_BASE_DEMO_0_MD5='c475268b774c0fd469802e915b3c3803' ARCHIVE_BASE_DEMO_0_TYPE='cabinet' ARCHIVE_BASE_DEMO_0_SIZE='550000' ARCHIVE_BASE_DEMO_0_VERSION='1.0-archiveorg1' ARCHIVE_BASE_DEMO_0_URL='https://archive.org/details/AgeOfMythologyDemo' CONTENT_PATH_DEFAULT='aom' CONTENT_GAME_BIN_FILES=' *.exe *.dll' CONTENT_GAME0_BIN_PATH='.' CONTENT_GAME0_BIN_FILES=' *.dll' CONTENT_FONTS_DATA_FILES=' arialuni.ttf gio_bk.ttf per_____.ttf' CONTENT_FONTS0_DATA_PATH='.' CONTENT_FONTS0_DATA_FILES=' georgiab.ttf georgiai.ttf georgia.ttf georgiaz.ttf' ## TODO: An explicit list of files should be set CONTENT_GAME_DATA_FILES=' *' CONTENT_DOC_DATA_PATH='.' CONTENT_DOC_DATA_FILES=' *.rtf' USER_PERSISTENT_FILES=' startup/persistent.cfg rts3banglog.txt *.XMB *.xml .xs' USER_PERSISTENT_DIRECTORIES=' cameratracks default language savegame screenshots users' APP_MAIN_EXE='aom.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Rename files with truncated names. mv 'gfxcon_1' 'gfxconfig' mv 'godpow_1' 'god powers' mv 'sound/cinema_1' 'sound/cinematics' mv 'sound/music/interf_1' 'sound/music/interface' mv '1028/dwin0000.dll' '1028/dwintl.dll' mv '1029/dwin0001.dll' '1029/dwintl.dll' mv '1030/dwin0002.dll' '1030/dwintl.dll' mv '1031/dwin0003.dll' '1031/dwintl.dll' mv '1031/msil0000.bin' '1031/msiloadr.bin' mv '1031/webl0000.bin' '1031/webloadr.bin' mv '1032/dwin0004.dll' '1032/dwintl.dll' mv '1033/dwin0005.dll' '1033/dwintl.dll' mv '1033/msil0001.bin' '1033/msiloadr.bin' mv '1033/webl0001.bin' '1033/webloadr.bin' mv '1035/dwin0006.dll' '1035/dwintl.dll' mv '1036/dwin0007.dll' '1036/dwintl.dll' mv '1036/msil0002.bin' '1036/msiloadr.bin' mv '1036/webl0002.bin' '1036/webloadr.bin' mv '1037/dwin0008.dll' '1037/dwintl.dll' mv '1038/dwin0009.dll' '1038/dwintl.dll' mv '1040/dwin000a.dll' '1040/dwintl.dll' mv '1040/msil0003.bin' '1040/msiloadr.bin' mv '1040/webl0003.bin' '1040/webloadr.bin' mv '1041/dwin000b.dll' '1041/dwintl.dll' mv '1041/msil0004.bin' '1041/msiloadr.bin' mv '1041/webl0004.bin' '1041/webloadr.bin' mv '1042/dwin000c.dll' '1042/dwintl.dll' mv '1042/msil0005.bin' '1042/msiloadr.bin' mv '1042/webl0005.bin' '1042/webloadr.bin' mv '1043/dwin000d.dll' '1043/dwintl.dll' mv '1044/dwin000e.dll' '1044/dwintl.dll' mv '1045/dwin000f.dll' '1045/dwintl.dll' mv '1046/dwin0010.dll' '1046/dwintl.dll' mv '1048/dwin0011.dll' '1048/dwintl.dll' mv '1049/dwin0012.dll' '1049/dwintl.dll' mv '1050/dwin0013.dll' '1050/dwintl.dll' mv '1051/dwin0014.dll' '1051/dwintl.dll' mv '1053/dwin0015.dll' '1053/dwintl.dll' mv '1054/dwin0016.dll' '1054/dwintl.dll' mv '1055/dwin0017.dll' '1055/dwintl.dll' mv '1060/dwin0018.dll' '1060/dwintl.dll' mv '2052/dwin0019.dll' '2052/dwintl.dll' mv '2052/msil0006.bin' '2052/msiloadr.bin' mv '2052/webl0006.bin' '2052/webloadr.bin' mv '2070/dwin001a.dll' '2070/dwintl.dll' mv '3076/dwin001b.dll' '3076/dwintl.dll' mv '3082/dwin001c.dll' '3082/dwintl.dll' mv '3082/msil0007.bin' '3082/msiloadr.bin' mv '3082/webl0007.bin' '3082/webloadr.bin' mv 'ai/ao9982_1.xs' 'ai/aomdefaultaiprogress.xs' mv 'ai/aomdef_1.xs' 'ai/aomdefaultai.xs' mv 'ai/aomdef_2.xs' 'ai/aomdefaultaieconomy.xs' mv 'ai/aomdef_3.xs' 'ai/aomdefaultaigodpowers.xs' mv 'ai/aomdef_4.xs' 'ai/aomdefaultaimilitary.xs' mv 'ai/defaul_1.xml' 'ai/defaultboom.xml' mv 'ai/defaul_2.xml' 'ai/defaultrandom.xml' mv 'ai/defaul_3.xml' 'ai/defaultrush.xml' mv 'ai/scn17a_1.xs' 'ai/scn17altp2.xs' mv 'ai/scn28p_1.xs' 'ai/scn28p234.xs' mv 'ai/scnlib_1.xs' 'ai/scn lib.xs' mv 'autopa_1.exe' 'autopatcher.exe' mv 'avi/aomlog_1.bik' 'avi/aom logo.bik' mv 'data/fimbul_1.lgt' 'data/fimbulwinter.lgt' mv 'data/ghostl_1.lgt' 'data/ghost lake.lgt' mv 'data/learnt_1.cpn' 'data/learn to play.cpn' mv 'data/mainca_1.cpn' 'data/main campaign.cpn' mv 'data/prword_1.xml' 'data/prwordlist.xml' mv 'docs/aomais_1.rtf' 'docs/aom ai script help file.rtf' mv 'docs/aomce__1.pdf' 'docs/aomce_egyptianqrc_en.pdf' mv 'docs/aomce__2.pdf' 'docs/aomce_greekqrc_en.pdf' mv 'docs/aomce__3.pdf' 'docs/aomce_norseqrc_en.pdf' mv 'docs/aom_in_1.pdf' 'docs/aom_ingamemanual.pdf' mv 'docs/aomran_1.rtf' 'docs/aom random map help file.rtf' mv 'docs/aomsce_1.rtf' 'docs/aom scenario editor faq.rtf' mv 'docs/aomsta_1.pdf' 'docs/aomstandard_manual_en.pdf' mv 'docs/troubl_1.rtf' 'docs/troubleshooting crashing issues.rtf' mv 'docs/troubl_2.rtf' 'docs/troubleshooting display problems.rtf' mv 'esocli_1.dll' 'esoclientdll.dll' mv 'fonts/arialu_1.msk' 'fonts/arial unicode ms.msk' mv 'fonts/courie_1.msk' 'fonts/courier new.msk' mv 'fonts/frizqu_1.msk' 'fonts/friz quadrata tt.msk' mv 'fonts/giovan_1.msk' 'fonts/giovanni book.msk' mv 'fonts/giovan_2.msk' 'fonts/giovanni test.msk' mv 'fonts/giovan_3.msk' 'fonts/giovanniitctt.msk' mv 'fonts/imeuis_1.xml' 'fonts/imeuisettings.xml' mv 'fonts/timesn_1.msk' 'fonts/times new roman.msk' mv 'gfxconfig/0x015d_1.gfx' 'gfxconfig/0x015d_number9.gfx' mv 'gfxconfig/0x0315_1.gfx' 'gfxconfig/0x0315_sis.gfx' mv 'gfxconfig/0x1002_1.gfx' 'gfxconfig/0x1002_ati.gfx' mv 'gfxconfig/0x100c_1.gfx' 'gfxconfig/0x100c_tseng.gfx' mv 'gfxconfig/0x1013_1.gfx' 'gfxconfig/0x1013_cirruslogic.gfx' mv 'gfxconfig/0x1023_1.gfx' 'gfxconfig/0x1023_trident.gfx' mv 'gfxconfig/0x1029_1.gfx' 'gfxconfig/0x1029_trident.gfx' mv 'gfxconfig/0x102b_1.gfx' 'gfxconfig/0x102b_matrox.gfx' mv 'gfxconfig/0x1039_1.gfx' 'gfxconfig/0x1039_sis.gfx' mv 'gfxconfig/0x104a_1.gfx' 'gfxconfig/0x104a_stmicroelectronics.gfx' mv 'gfxconfig/0x104c_1.gfx' 'gfxconfig/0x104c_3dlabs.gfx' mv 'gfxconfig/0x104e_1.gfx' 'gfxconfig/0x104e_oaktech.gfx' mv 'gfxconfig/0x10c8_1.gfx' 'gfxconfig/0x10c8_neomagic.gfx' mv 'gfxconfig/0x10d9_1.gfx' 'gfxconfig/0x10d9_3dfx.gfx' mv 'gfxconfig/0x10de_1.gfx' 'gfxconfig/0x10de_nvidia.gfx' mv 'gfxconfig/0x110b_1.gfx' 'gfxconfig/0x110b_chromatic.gfx' mv 'gfxconfig/0x1142_1.gfx' 'gfxconfig/0x1142_3dfx.gfx' mv 'gfxconfig/0x1163_1.gfx' 'gfxconfig/0x1163_rendition.gfx' mv 'gfxconfig/0x121a_1.gfx' 'gfxconfig/0x121a_3dfx.gfx' mv 'gfxconfig/0x12d2_1.gfx' 'gfxconfig/0x12d2_nvidia.gfx' mv 'gfxconfig/0x14af_1.gfx' 'gfxconfig/0x14af_guillemot.gfx' mv 'gfxconfig/0x3d3d_1.gfx' 'gfxconfig/0x3d3d_3dlabs.gfx' mv 'gfxconfig/0x5333_1.gfx' 'gfxconfig/0x5333_s3.gfx' mv 'gfxconfig/0x8086_1.gfx' 'gfxconfig/0x8086_intel.gfx' mv 'gfxconfig/cyberb_1.gfx' 'gfxconfig/cyberbladexp.gfx' mv 'gfxconfig/geforc_1.gfx' 'gfxconfig/geforce1and2.gfx' mv 'gfxconfig/mt40b6_1.tss' 'gfxconfig/mtlinearblendalphaemissivespecularfactor_nvidia.tss' mv 'gfxconfig/mt6b37_1.tss' 'gfxconfig/mtlinearblendalphaemissivespecularfactor.tss' mv 'gfxconfig/mt6db5_1.tss' 'gfxconfig/mtlinearblendinversealpha.tss' mv 'gfxconfig/mt81aa_1.tss' 'gfxconfig/mtlinearblend_nvidia.tss' mv 'gfxconfig/mt8378_1.tss' 'gfxconfig/mtlinearblendemissivespecularfactor.tss' mv 'gfxconfig/mta5c3_1.tss' 'gfxconfig/mtlinearblendemissivespecularfactor_nvidia.tss' mv 'gfxconfig/mtadda_1.tss' 'gfxconfig/mtaddalpha.tss' mv 'gfxconfig/mtadda_2.tss' 'gfxconfig/mtaddalpha_nvidia.tss' mv 'gfxconfig/mtaddf_1.tss' 'gfxconfig/mtaddfactor.tss' mv 'gfxconfig/mtaddf_2.tss' 'gfxconfig/mtaddfactor_nvidia.tss' mv 'gfxconfig/mtaddi_1.tss' 'gfxconfig/mtaddinversealpha.tss' mv 'gfxconfig/mtaddi_2.tss' 'gfxconfig/mtaddinversealpha_nvidia.tss' mv 'gfxconfig/mte0b7_1.tss' 'gfxconfig/mtlinearblendalpha_nvidia.tss' mv 'gfxconfig/mtee67_1.tss' 'gfxconfig/mtlinearblendinversealpha_nvidia.tss' mv 'gfxconfig/mtemis_1.tss' 'gfxconfig/mtemissivespecularfactor.tss' mv 'gfxconfig/mtemis_2.tss' 'gfxconfig/mtemissivespecularfactor2stage.tss' mv 'gfxconfig/mtemis_3.tss' 'gfxconfig/mtemissivespecularfactornotx.tss' mv 'gfxconfig/mtemis_4.tss' 'gfxconfig/mtemissivespecularfactornotx2stage.tss' mv 'gfxconfig/mtfade_1.tss' 'gfxconfig/mtfadelightmapbyalpha.tss' mv 'gfxconfig/mtfogm_1.tss' 'gfxconfig/mtfogmask.tss' mv 'gfxconfig/mtfogm_2.tss' 'gfxconfig/mtfogmask2stage.tss' mv 'gfxconfig/mtligh_1.tss' 'gfxconfig/mtlightmap.tss' mv 'gfxconfig/mtline_1.tss' 'gfxconfig/mtlinearblend.tss' mv 'gfxconfig/mtline_2.tss' 'gfxconfig/mtlinearblend2stage.tss' mv 'gfxconfig/mtline_3.tss' 'gfxconfig/mtlinearblendalpha.tss' mv 'gfxconfig/mtline_4.tss' 'gfxconfig/mtlinearblendalpha2stage.tss' mv 'gfxconfig/mtoff2_1.tss' 'gfxconfig/mtoff2stage.tss' mv 'gfxconfig/mtoffn_1.tss' 'gfxconfig/mtoffnotx.tss' mv 'gfxconfig/mtoffn_2.tss' 'gfxconfig/mtoffnotx2stage.tss' mv 'gfxconfig/mtoffn_3.tss' 'gfxconfig/mtoffnovtxalpha.tss' mv 'gfxconfig/mtoffn_4.tss' 'gfxconfig/mtoffnovtxalpha2stage.tss' mv 'gfxconfig/mtoffo_1.tss' 'gfxconfig/mtoffonlyalpha.tss' mv 'gfxconfig/mtoffo_2.tss' 'gfxconfig/mtoffonlyalpha2stage.tss' mv 'gfxconfig/mtsepa_1.tss' 'gfxconfig/mtseparatealpha.tss' mv 'gfxconfig/mtspec_1.tss' 'gfxconfig/mtspecularbump.tss' mv 'gfxconfig/mtspec_2.tss' 'gfxconfig/mtspecularbump2stage.tss' mv 'gfxconfig/permed_1.gfx' 'gfxconfig/permedia2.gfx' mv 'gfxconfig/permed_2.gfx' 'gfxconfig/permedia3.gfx' mv 'gfxconfig/radeon_1.gfx' 'gfxconfig/radeon7500.gfx' mv 'gfxconfig/radeon_2.gfx' 'gfxconfig/radeon8500.gfx' mv 'gfxconfig/ragelt_1.gfx' 'gfxconfig/rageltpro.gfx' mv 'gfxconfig/refere_1.gfx' 'gfxconfig/reference.gfx' mv 'gfxconfig/savage_1.gfx' 'gfxconfig/savage2000.gfx' mv 'god powers/godpow_1.bar' 'god powers/godpowers.bar' mv 'history/arrows_1.txt' 'history/arrow ships.txt' mv 'history/blackm_1.txt' 'history/black map.txt' mv 'history/buildi_1.txt' 'history/buildings.txt' mv 'history/fogofw_1.txt' 'history/fog of war.txt' mv 'history/godpow_1.txt' 'history/god powers.txt' mv 'history/herode_1.txt' 'history/hero death model.txt' mv 'history/hippop_1.txt' 'history/hippopotamus.txt' mv 'history/humans_1.txt' 'history/human soldiers.txt' mv 'history/lineof_1.txt' 'history/line of sight.txt' mv 'history/mythun_1.txt' 'history/myth units.txt' mv 'history/popula_1.txt' 'history/population.txt' mv 'history/rammin_1.txt' 'history/ramming ships.txt' mv 'history/rammmi_1.txt' 'history/rammming ships.txt' mv 'history/sieges_1.txt' 'history/siege ships.txt' mv 'history/siegew_1.txt' 'history/siege weapons.txt' mv 'history/tableo_1.xmb' 'history/table of contents.xmb' mv 'history/techs/adzeof_1.txt' 'history/techs/adze of wepwawet.txt' mv 'history/techs/aegiss_1.txt' 'history/techs/aegis shield.txt' mv 'history/techs/age1ha_1.txt' 'history/techs/age 1 hades.txt' mv 'history/techs/age1is_1.txt' 'history/techs/age 1 isis.txt' mv 'history/techs/age1lo_1.txt' 'history/techs/age 1 loki.txt' mv 'history/techs/age1od_1.txt' 'history/techs/age 1 odin.txt' mv 'history/techs/age1po_1.txt' 'history/techs/age 1 poseidon.txt' mv 'history/techs/age1ra_1.txt' 'history/techs/age 1 ra.txt' mv 'history/techs/age1se_1.txt' 'history/techs/age 1 set.txt' mv 'history/techs/age1th_1.txt' 'history/techs/age 1 thor.txt' mv 'history/techs/age1ze_1.txt' 'history/techs/age 1 zeus.txt' mv 'history/techs/age2an_1.txt' 'history/techs/age 2 anubis.txt' mv 'history/techs/age2ar_1.txt' 'history/techs/age 2 ares.txt' mv 'history/techs/age2at_1.txt' 'history/techs/age 2 athena.txt' mv 'history/techs/age2ba_1.txt' 'history/techs/age 2 bast.txt' mv 'history/techs/age2fo_1.txt' 'history/techs/age 2 forseti.txt' mv 'history/techs/age2fr_1.txt' 'history/techs/age 2 freyja.txt' mv 'history/techs/age2he_1.txt' 'history/techs/age 2 heimdall.txt' mv 'history/techs/age2he_2.txt' 'history/techs/age 2 hermes.txt' mv 'history/techs/age2pt_1.txt' 'history/techs/age 2 ptah.txt' mv 'history/techs/age3ap_1.txt' 'history/techs/age 3 aphrodite.txt' mv 'history/techs/age3ap_2.txt' 'history/techs/age 3 apollo.txt' mv 'history/techs/age3br_1.txt' 'history/techs/age 3 bragi.txt' mv 'history/techs/age3di_1.txt' 'history/techs/age 3 dionysos.txt' mv 'history/techs/age3ha_1.txt' 'history/techs/age 3 hathor.txt' mv 'history/techs/age3ne_1.txt' 'history/techs/age 3 nephthys.txt' mv 'history/techs/age3nj_1.txt' 'history/techs/age 3 njord.txt' mv 'history/techs/age3se_1.txt' 'history/techs/age 3 sekhmet.txt' mv 'history/techs/age3sk_1.txt' 'history/techs/age 3 skadi.txt' mv 'history/techs/age4ar_1.txt' 'history/techs/age 4 artemis.txt' mv 'history/techs/age4ba_1.txt' 'history/techs/age 4 baldr.txt' mv 'history/techs/age4he_1.txt' 'history/techs/age 4 hel.txt' mv 'history/techs/age4he_2.txt' 'history/techs/age 4 hephaestus.txt' mv 'history/techs/age4he_3.txt' 'history/techs/age 4 hera.txt' mv 'history/techs/age4ho_1.txt' 'history/techs/age 4 horus.txt' mv 'history/techs/age4os_1.txt' 'history/techs/age 4 osiris.txt' mv 'history/techs/age4th_1.txt' 'history/techs/age 4 thoth.txt' mv 'history/techs/age4ty_1.txt' 'history/techs/age 4 tyr.txt' mv 'history/techs/ambass_1.txt' 'history/techs/ambassadors.txt' mv 'history/techs/anastr_1.txt' 'history/techs/anastrophe.txt' mv 'history/techs/ancest_1.txt' 'history/techs/ancestors.txt' mv 'history/techs/animal_1.txt' 'history/techs/animal magnetism.txt' mv 'history/techs/archit_1.txt' 'history/techs/architects.txt' mv 'history/techs/arctic_1.txt' 'history/techs/arctic gale.txt' mv 'history/techs/arctic_2.txt' 'history/techs/arctic winds.txt' mv 'history/techs/atefcr_1.txt' 'history/techs/atef crown.txt' mv 'history/techs/atheni_1.txt' 'history/techs/athenian wall.txt' mv 'history/techs/aurora_1.txt' 'history/techs/aurora borealis.txt' mv 'history/techs/axeofv_1.txt' 'history/techs/axe of vengeance.txt' mv 'history/techs/baccha_1.txt' 'history/techs/bacchanalia.txt' mv 'history/techs/ballis_1.txt' 'history/techs/ballista tower.txt' mv 'history/techs/berser_1.txt' 'history/techs/berserkergang.txt' mv 'history/techs/boilin_1.txt' 'history/techs/boiling oil.txt' mv 'history/techs/bonebo_1.txt' 'history/techs/bone bow.txt' mv 'history/techs/bookof_1.txt' 'history/techs/book of thoth.txt' mv 'history/techs/bowsaw_1.txt' 'history/techs/bow saw.txt' mv 'history/techs/br2276_1.txt' 'history/techs/bronze weapons.txt' mv 'history/techs/brdd97_1.txt' 'history/techs/bronze weapons thor.txt' mv 'history/techs/bronze_1.txt' 'history/techs/bronze mail.txt' mv 'history/techs/bronze_2.txt' 'history/techs/bronze mail thor.txt' mv 'history/techs/bronze_3.txt' 'history/techs/bronze shields.txt' mv 'history/techs/bronze_4.txt' 'history/techs/bronze shields thor.txt' mv 'history/techs/burnin_1.txt' 'history/techs/burning pitch.txt' mv 'history/techs/burnin_2.txt' 'history/techs/burning pitch thor.txt' mv 'history/techs/callof_1.txt' 'history/techs/call of valhalla.txt' mv 'history/techs/carpen_1.txt' 'history/techs/carpenters.txt' mv 'history/techs/carrie_1.txt' 'history/techs/carrier pigeons.txt' mv 'history/techs/ceasef_1.txt' 'history/techs/cease fire.txt' mv 'history/techs/ch5cf5_1.txt' 'history/techs/heavy chariots.txt' mv 'history/techs/ch9a9d_1.txt' 'history/techs/champion slingers.txt' mv 'history/techs/ch9fb2_1.txt' 'history/techs/medium archers.txt' mv 'history/techs/cha3d9_1.txt' 'history/techs/champion archers.txt' mv 'history/techs/cha9ae_1.txt' 'history/techs/heavy axemen.txt' mv 'history/techs/champi_1.txt' 'history/techs/champion camelry.txt' mv 'history/techs/champi_2.txt' 'history/techs/heavy camels.txt' mv 'history/techs/champi_3.txt' 'history/techs/medium cavalry.txt' mv 'history/techs/champi_4.txt' 'history/techs/heavy camelry.txt' mv 'history/techs/chcf33_1.txt' 'history/techs/medium infantry.txt' mv 'history/techs/citade_1.txt' 'history/techs/citadel wall.txt' mv 'history/techs/cityof_1.txt' 'history/techs/city of the dead.txt' mv 'history/techs/co3e7a_1.txt' 'history/techs/conscript archers.txt' mv 'history/techs/co3f35_1.txt' 'history/techs/conscript migdol soldiers.txt' mv 'history/techs/co73d0_1.txt' 'history/techs/conscript barracks soldiers.txt' mv 'history/techs/co8f28_1.txt' 'history/techs/copper weapons.txt' mv 'history/techs/coc88d_1.txt' 'history/techs/copper weapons thor.txt' mv 'history/techs/coe3f7_1.txt' 'history/techs/conscript sailors.txt' mv 'history/techs/conscr_1.txt' 'history/techs/conscript cavalry.txt' mv 'history/techs/conscr_2.txt' 'history/techs/conscript longhouse soldiers.txt' mv 'history/techs/conscr_3.txt' 'history/techs/conscript hill fort soldiers.txt' mv 'history/techs/conscr_4.txt' 'history/techs/conscript infantry.txt' mv 'history/techs/copper_1.txt' 'history/techs/copper mail.txt' mv 'history/techs/copper_2.txt' 'history/techs/copper mail thor.txt' mv 'history/techs/copper_3.txt' 'history/techs/copper shields.txt' mv 'history/techs/copper_4.txt' 'history/techs/copper shields thor.txt' mv 'history/techs/create_1.txt' 'history/techs/create gold.txt' mv 'history/techs/crenel_1.txt' 'history/techs/crenellations.txt' mv 'history/techs/criosp_1.txt' 'history/techs/criosphinx.txt' mv 'history/techs/crocod_1.txt' 'history/techs/crocodopolis.txt' mv 'history/techs/deimos_1.txt' 'history/techs/deimos sword of dread.txt' mv 'history/techs/desert_1.txt' 'history/techs/desert wind.txt' mv 'history/techs/divine_1.txt' 'history/techs/divine blood.txt' mv 'history/techs/drafth_1.txt' 'history/techs/draft horses.txt' mv 'history/techs/dragon_1.txt' 'history/techs/dragonscale shields.txt' mv 'history/techs/dwarve_1.txt' 'history/techs/dwarven auger.txt' mv 'history/techs/dwarve_2.txt' 'history/techs/dwarven mail.txt' mv 'history/techs/dwarve_3.txt' 'history/techs/dwarven shields.txt' mv 'history/techs/dwarve_4.txt' 'history/techs/dwarven weapons.txt' mv 'history/techs/earthq_1.txt' 'history/techs/earthquake.txt' mv 'history/techs/eldhri_1.txt' 'history/techs/eldhrimnir kettle.txt' mv 'history/techs/electr_1.txt' 'history/techs/electrum bullets.txt' mv 'history/techs/enclos_1.txt' 'history/techs/enclosed deck.txt' mv 'history/techs/engine_1.txt' 'history/techs/engineers.txt' mv 'history/techs/enyosb_1.txt' 'history/techs/enyos bow of horror.txt' mv 'history/techs/eyesin_1.txt' 'history/techs/eyes in the forest.txt' mv 'history/techs/faceof_1.txt' 'history/techs/face of the gorgon.txt' mv 'history/techs/feetof_1.txt' 'history/techs/feet of the jackal.txt' mv 'history/techs/flames_1.txt' 'history/techs/flames of typhon.txt' mv 'history/techs/flamin_1.txt' 'history/techs/flaming weapons.txt' mv 'history/techs/floodc_1.txt' 'history/techs/flood control.txt' mv 'history/techs/floodo_1.txt' 'history/techs/flood of the nile.txt' mv 'history/techs/forest_1.txt' 'history/techs/forest fire.txt' mv 'history/techs/forgeo_1.txt' 'history/techs/forge of olympus.txt' mv 'history/techs/fortif_1.txt' 'history/techs/fortified wall.txt' mv 'history/techs/fortif_2.txt' 'history/techs/fortify town center.txt' mv 'history/techs/funera_1.txt' 'history/techs/funeral barge.txt' mv 'history/techs/funera_2.txt' 'history/techs/funeral rites.txt' mv 'history/techs/golden_1.txt' 'history/techs/golden apples.txt' mv 'history/techs/granit_1.txt' 'history/techs/granite blood.txt' mv 'history/techs/greate_1.txt' 'history/techs/greatest of fifty.txt' mv 'history/techs/greath_1.txt' 'history/techs/great hunt.txt' mv 'history/techs/guardt_1.txt' 'history/techs/guard tower.txt' mv 'history/techs/hallof_1.txt' 'history/techs/hall of thanes.txt' mv 'history/techs/hamarr_1.txt' 'history/techs/hamarrtroll.txt' mv 'history/techs/hammer_1.txt' 'history/techs/hammer of the gods.txt' mv 'history/techs/handax_1.txt' 'history/techs/hand axe.txt' mv 'history/techs/handof_1.txt' 'history/techs/hand of talos.txt' mv 'history/techs/healin_1.txt' 'history/techs/healing spring.txt' mv 'history/techs/heavya_1.txt' 'history/techs/champion axemen.txt' mv 'history/techs/heavya_2.txt' 'history/techs/heavy spearmen.txt' mv 'history/techs/heavyc_1.txt' 'history/techs/champion camels.txt' mv 'history/techs/heavyc_2.txt' 'history/techs/medium axemen.txt' mv 'history/techs/heavyc_3.txt' 'history/techs/heavy archers.txt' mv 'history/techs/heavyc_4.txt' 'history/techs/medium slingers.txt' mv 'history/techs/heavye_1.txt' 'history/techs/heavy infantry.txt' mv 'history/techs/heavyi_1.txt' 'history/techs/champion chariots.txt' mv 'history/techs/heavys_1.txt' 'history/techs/heavy elephants.txt' mv 'history/techs/heavys_2.txt' 'history/techs/champion cavalry.txt' mv 'history/techs/hierac_1.txt' 'history/techs/hieracosphinx.txt' mv 'history/techs/huntin_1.txt' 'history/techs/hunting dogs.txt' mv 'history/techs/huntre_1.txt' 'history/techs/huntress axe.txt' mv 'history/techs/husban_1.txt' 'history/techs/husbandry.txt' mv 'history/techs/ironma_1.txt' 'history/techs/iron mail.txt' mv 'history/techs/ironma_2.txt' 'history/techs/iron mail thor.txt' mv 'history/techs/ironsh_1.txt' 'history/techs/iron shields.txt' mv 'history/techs/ironsh_2.txt' 'history/techs/iron shields thor.txt' mv 'history/techs/ironwe_1.txt' 'history/techs/iron weapons.txt' mv 'history/techs/ironwe_2.txt' 'history/techs/iron weapons thor.txt' mv 'history/techs/irriga_1.txt' 'history/techs/irrigation.txt' mv 'history/techs/labyri_1.txt' 'history/techs/labyrinth of minos.txt' mv 'history/techs/leathe_1.txt' 'history/techs/leather frame shield.txt' mv 'history/techs/levyar_1.txt' 'history/techs/levy cavalry.txt' mv 'history/techs/levyba_1.txt' 'history/techs/levy hill fort soldiers.txt' mv 'history/techs/levyca_1.txt' 'history/techs/levy longhouse soldiers.txt' mv 'history/techs/levyhi_1.txt' 'history/techs/levy migdol soldiers.txt' mv 'history/techs/levyin_1.txt' 'history/techs/levy barracks soldiers.txt' mv 'history/techs/levylo_1.txt' 'history/techs/levy archers.txt' mv 'history/techs/levymi_1.txt' 'history/techs/levy infantry.txt' mv 'history/techs/lightn_1.txt' 'history/techs/lightning storm.txt' mv 'history/techs/locust_1.txt' 'history/techs/locust swarm.txt' mv 'history/techs/lonewa_1.txt' 'history/techs/lone wanderer.txt' mv 'history/techs/longse_1.txt' 'history/techs/long serpent.txt' mv 'history/techs/lordof_1.txt' 'history/techs/lord of horses.txt' mv 'history/techs/me699b_1.txt' 'history/techs/champion spearmen.txt' mv 'history/techs/me78ac_1.txt' 'history/techs/champion infantry.txt' mv 'history/techs/medium_1.txt' 'history/techs/heavy cavalry.txt' mv 'history/techs/medium_2.txt' 'history/techs/champion elephants.txt' mv 'history/techs/medium_3.txt' 'history/techs/heavy slingers.txt' mv 'history/techs/medium_4.txt' 'history/techs/medium spearmen.txt' mv 'history/techs/meteor_1.txt' 'history/techs/meteoric iron mail.txt' mv 'history/techs/mithri_1.txt' 'history/techs/mithril breastplate.txt' mv 'history/techs/monstr_1.txt' 'history/techs/monstrous rage.txt' mv 'history/techs/navalo_1.txt' 'history/techs/naval oxybeles.txt' mv 'history/techs/necrop_1.txt' 'history/techs/necropolis.txt' mv 'history/techs/newkin_1.txt' 'history/techs/new kingdom.txt' mv 'history/techs/olympi_1.txt' 'history/techs/olympic parentage.txt' mv 'history/techs/omnisc_1.txt' 'history/techs/omniscience.txt' mv 'history/techs/pestil_1.txt' 'history/techs/pestilence.txt' mv 'history/techs/phobos_1.txt' 'history/techs/phobos spear of panic.txt' mv 'history/techs/pigsti_1.txt' 'history/techs/pig sticker.txt' mv 'history/techs/prospe_1.txt' 'history/techs/prosperity.txt' mv 'history/techs/purses_1.txt' 'history/techs/purse seine.txt' mv 'history/techs/ramoft_1.txt' 'history/techs/ram of the west wind.txt' mv 'history/techs/rebell_1.txt' 'history/techs/rebellion.txt' mv 'history/techs/reinfo_1.txt' 'history/techs/reinforced hull.txt' mv 'history/techs/restor_1.txt' 'history/techs/restoration.txt' mv 'history/techs/ringgi_1.txt' 'history/techs/ring giver.txt' mv 'history/techs/roarof_1.txt' 'history/techs/roar of orthus.txt' mv 'history/techs/sacred_1.txt' 'history/techs/sacred cats.txt' mv 'history/techs/safegu_1.txt' 'history/techs/safeguard.txt' mv 'history/techs/saltam_1.txt' 'history/techs/salt amphora.txt' mv 'history/techs/sandst_1.txt' 'history/techs/sandstorm.txt' mv 'history/techs/scallo_1.txt' 'history/techs/scalloped axe.txt' mv 'history/techs/serpen_1.txt' 'history/techs/serpent spear.txt' mv 'history/techs/shaftm_1.txt' 'history/techs/shaft mine.txt' mv 'history/techs/shafts_1.txt' 'history/techs/shafts of plague.txt' mv 'history/techs/should_1.txt' 'history/techs/shoulder of talos.txt' mv 'history/techs/signal_1.txt' 'history/techs/signal fires.txt' mv 'history/techs/skelet_1.txt' 'history/techs/skeleton power.txt' mv 'history/techs/skinof_1.txt' 'history/techs/skin of the rhino.txt' mv 'history/techs/slings_1.txt' 'history/techs/slings of the sun.txt' mv 'history/techs/snowst_1.txt' 'history/techs/snow storm.txt' mv 'history/techs/sonofo_1.txt' 'history/techs/son of osiris.txt' mv 'history/techs/sonsof_1.txt' 'history/techs/sons of sleipnir.txt' mv 'history/techs/spearo_1.txt' 'history/techs/spear on the horizon.txt' mv 'history/techs/spirit_1.txt' 'history/techs/spirit of maat.txt' mv 'history/techs/spirit_2.txt' 'history/techs/spirited charge.txt' mv 'history/techs/stones_1.txt' 'history/techs/stones of red linen.txt' mv 'history/techs/stonew_1.txt' 'history/techs/stone wall.txt' mv 'history/techs/sundri_1.txt' 'history/techs/sundried mud brick.txt' mv 'history/techs/sunray_1.txt' 'history/techs/sun ray.txt' mv 'history/techs/swinea_1.txt' 'history/techs/swine array.txt' mv 'history/techs/sylvan_1.txt' 'history/techs/sylvan lore.txt' mv 'history/techs/taxcol_1.txt' 'history/techs/tax collectors.txt' mv 'history/techs/temple_1.txt' 'history/techs/temple of healing.txt' mv 'history/techs/thraci_1.txt' 'history/techs/thracian horses.txt' mv 'history/techs/thunde_1.txt' 'history/techs/thundering hooves.txt' mv 'history/techs/thuris_1.txt' 'history/techs/thurisaz rune.txt' mv 'history/techs/triera_1.txt' 'history/techs/trierarch.txt' mv 'history/techs/tuskso_1.txt' 'history/techs/tusks of apedemak.txt' mv 'history/techs/underm_1.txt' 'history/techs/undermine.txt' mv 'history/techs/underw_1.txt' 'history/techs/underworld passage.txt' mv 'history/techs/valley_1.txt' 'history/techs/valley of the kings.txt' mv 'history/techs/vaults_1.txt' 'history/techs/vaults of erebus.txt' mv 'history/techs/walkin_1.txt' 'history/techs/walking woods.txt' mv 'history/techs/watcht_1.txt' 'history/techs/watch tower.txt' mv 'history/techs/weapon_1.txt' 'history/techs/weapon of the titans.txt' mv 'history/techs/willof_1.txt' 'history/techs/will of kronos.txt' mv 'history/techs/winged_1.txt' 'history/techs/winged messenger.txt' mv 'history/techs/winter_1.txt' 'history/techs/winter harvest.txt' mv 'history/techs/wratho_1.txt' 'history/techs/wrath of the deep.txt' mv 'history/units/agamem_1.txt' 'history/units/agamemnon.txt' mv 'history/units/anim0000.txt' 'history/units/animal attractor.txt' mv 'history/units/apeofs_1.txt' 'history/units/ape of set.txt' mv 'history/units/archer_1.txt' 'history/units/archery range.txt' mv 'history/units/arkant_1.txt' 'history/units/arkantos.txt' mv 'history/units/arkantos.txt' 'history/units/arkantosman.txt' mv 'history/units/atlant_1.txt' 'history/units/atlantis wall connector.txt' mv 'history/units/atlant_2.txt' 'history/units/atlantis wall long.txt' mv 'history/units/bandit_1.txt' 'history/units/bandit migdol.txt' mv 'history/units/battle_1.txt' 'history/units/battle boar.txt' mv 'history/units/berryb_1.txt' 'history/units/berry bush.txt' mv 'history/units/bolder_1.txt' 'history/units/bolder rolling.txt' mv 'history/units/bolder_2.txt' 'history/units/bolder rolling dead.txt' mv 'history/units/bolder_3.txt' 'history/units/bolder rolling 2.txt' mv 'history/units/bolder_4.txt' 'history/units/bolder wall.txt' mv 'history/units/broken_1.txt' 'history/units/broken column.txt' mv 'history/units/carava_1.txt' 'history/units/caravan egyptian.txt' mv 'history/units/carava_2.txt' 'history/units/caravan greek.txt' mv 'history/units/carava_3.txt' 'history/units/caravan norse.txt' mv 'history/units/cataph_1.txt' 'history/units/cataphract.txt' mv 'history/units/chario_1.txt' 'history/units/chariot archer.txt' mv 'history/units/charon_1.txt' 'history/units/charon ferry.txt' mv 'history/units/cita0000.txt' 'history/units/citadel center.txt' mv 'history/units/column_1.txt' 'history/units/columns broken.txt' mv 'history/units/column_2.txt' 'history/units/columns fallen.txt' mv 'history/units/constr_1.txt' 'history/units/construction extra large.txt' mv 'history/units/constr_2.txt' 'history/units/construction large.txt' mv 'history/units/constr_3.txt' 'history/units/construction medium.txt' mv 'history/units/constr_4.txt' 'history/units/construction small.txt' mv 'history/units/croc0000.txt' 'history/units/crocodile.txt' mv 'history/units/crocod_2.txt' 'history/units/crocodile of set.txt' mv 'history/units/crossb_1.txt' 'history/units/crossbowman.txt' mv 'history/units/crowne_1.txt' 'history/units/crowned crane.txt' mv 'history/units/digpil_1.txt' 'history/units/dig pile.txt' mv 'history/units/dwar0000.txt' 'history/units/dwarven forge.txt' mv 'history/units/dwarff_1.txt' 'history/units/dwarf foundry.txt' mv 'history/units/einher_1.txt' 'history/units/einheriar.txt' mv 'history/units/excava_1.txt' 'history/units/excavation.txt' mv 'history/units/fallen_1.txt' 'history/units/fallen columns.txt' mv 'history/units/fencei_1.txt' 'history/units/fence iron.txt' mv 'history/units/fences_1.txt' 'history/units/fence stone.txt' mv 'history/units/fencew_1.txt' 'history/units/fence wood.txt' mv 'history/units/fenris_1.txt' 'history/units/fenris wolf.txt' mv 'history/units/fimbul_1.txt' 'history/units/fimbulwinter wolf.txt' mv 'history/units/firegi_1.txt' 'history/units/fire giant.txt' mv 'history/units/fishin_1.txt' 'history/units/fishing ship egyptian.txt' mv 'history/units/fishin_2.txt' 'history/units/fishing ship greek.txt' mv 'history/units/fishin_3.txt' 'history/units/fishing ship norse.txt' mv 'history/units/fish_m_1.txt' 'history/units/fish - mahi.txt' mv 'history/units/fish_p_1.txt' 'history/units/fish - perch.txt' mv 'history/units/fish_s_1.txt' 'history/units/fish - salmon.txt' mv 'history/units/flying_1.txt' 'history/units/flying purple hippo.txt' mv 'history/units/folsta_1.txt' 'history/units/folstag flag bearer.txt' mv 'history/units/frostg_1.txt' 'history/units/frost giant.txt' mv 'history/units/gargar_1.txt' 'history/units/gargarensis.txt' mv 'history/units/gatera_1.txt' 'history/units/gate ram.txt' mv 'history/units/gatera_2.txt' 'history/units/gate ram 2.txt' mv 'history/units/gazell_1.txt' 'history/units/gazelle of set.txt' mv 'history/units/ghosts_1.txt' 'history/units/ghost ship.txt' mv 'history/units/giantg_1.txt' 'history/units/giant gate ram 2.txt' mv 'history/units/giantg_2.txt' 'history/units/giant gate ram.txt' mv 'history/units/giraff_1.txt' 'history/units/giraffe.txt' mv 'history/units/giraffe.txt' 'history/units/giraffe of set.txt' mv 'history/units/gold0000.txt' 'history/units/golden lion.txt' mv 'history/units/goldmi_1.txt' 'history/units/gold mine.txt' mv 'history/units/goldmi_2.txt' 'history/units/gold mine dwarven.txt' mv 'history/units/goldmi_3.txt' 'history/units/gold mine small.txt' mv 'history/units/goldmi_4.txt' 'history/units/gold mine tiny.txt' mv 'history/units/greatb_1.txt' 'history/units/great box.txt' mv 'history/units/greatb_2.txt' 'history/units/great box cart.txt' mv 'history/units/greatb_3.txt' 'history/units/great box cart 2.txt' mv 'history/units/guardi_1.txt' 'history/units/guardian sleeping.txt' mv 'history/units/hadesd_1.txt' 'history/units/hades door.txt' mv 'history/units/hadess_1.txt' 'history/units/hades shade.txt' mv 'history/units/he001a_1.txt' 'history/units/hero greek perseus.txt' mv 'history/units/he0444_1.txt' 'history/units/hero greek hippolyta.txt' mv 'history/units/he2813_1.txt' 'history/units/hero greek bellerophon.txt' mv 'history/units/he29cd_1.txt' 'history/units/hero greek polyphemus.txt' mv 'history/units/he9adf_1.txt' 'history/units/hero greek odysseus.txt' mv 'history/units/hea167_1.txt' 'history/units/hero greek jason.txt' mv 'history/units/heal0000.txt' 'history/units/healing spring object.txt' mv 'history/units/hedc5b_1.txt' 'history/units/hero greek chiron.txt' mv 'history/units/hee615_1.txt' 'history/units/hero greek heracles.txt' mv 'history/units/hef21d_1.txt' 'history/units/hero greek theseus.txt' mv 'history/units/helepo_1.txt' 'history/units/helepolis.txt' mv 'history/units/herobo_1.txt' 'history/units/hero boar 2.txt' mv 'history/units/herobo_2.txt' 'history/units/hero boar.txt' mv 'history/units/herogr_1.txt' 'history/units/hero greek achilles.txt' mv 'history/units/herogr_2.txt' 'history/units/hero greek ajax.txt' mv 'history/units/herogr_3.txt' 'history/units/hero greek argo.txt' mv 'history/units/herogr_4.txt' 'history/units/hero greek atalanta.txt' mv 'history/units/herono_1.txt' 'history/units/hero norse.txt' mv 'history/units/herora_1.txt' 'history/units/hero ragnorok.txt' mv 'history/units/hillfo_1.txt' 'history/units/hill fort.txt' mv 'history/units/hipp0000.txt' 'history/units/hippopotamus.txt' mv 'history/units/hippoc_1.txt' 'history/units/hippocampus.txt' mv 'history/units/hippoo_1.txt' 'history/units/hippo of set.txt' mv 'history/units/hyenao_1.txt' 'history/units/hyena of set.txt' mv 'history/units/hypasp_1.txt' 'history/units/hypaspist.txt' mv 'history/units/jailwa_1.txt' 'history/units/jail wall.txt' mv 'history/units/jormun_1.txt' 'history/units/jormund elver.txt' mv 'history/units/kraken_1.txt' 'history/units/kraken.txt' mv 'history/units/kraken.txt' 'history/units/kraken spc.txt' mv 'history/units/lazerb_1.txt' 'history/units/lazer bear.txt' mv 'history/units/leviat_1.txt' 'history/units/leviathan.txt' mv 'history/units/lighth_1.txt' 'history/units/lighthouse.txt' mv 'history/units/longho_1.txt' 'history/units/longhouse.txt' mv 'history/units/lumber_1.txt' 'history/units/lumber camp.txt' mv 'history/units/mantic_1.txt' 'history/units/manticore.txt' mv 'history/units/mercen_1.txt' 'history/units/mercenary cavalry.txt' mv 'history/units/mercen_2.txt' 'history/units/mercenary.txt' mv 'history/units/migdol_1.txt' 'history/units/migdol stronghold.txt' mv 'history/units/mining_1.txt' 'history/units/mining camp.txt' mv 'history/units/monkey_1.txt' 'history/units/monkey raft.txt' mv 'history/units/monkey_2.txt' 'history/units/monkey relic.txt' mv 'history/units/monume_1.txt' 'history/units/monument 2.txt' mv 'history/units/monume_2.txt' 'history/units/monument 3.txt' mv 'history/units/monume_3.txt' 'history/units/monument 4.txt' mv 'history/units/monume_4.txt' 'history/units/monument 5.txt' mv 'history/units/mounta_1.txt' 'history/units/mountain giant.txt' mv 'history/units/navals_1.txt' 'history/units/naval shipyard.txt' mv 'history/units/nemean_1.txt' 'history/units/nemean lion.txt' mv 'history/units/nidh0000.txt' 'history/units/nidhogg.txt' mv 'history/units/oakaut_1.txt' 'history/units/oak autumn.txt' mv 'history/units/oaktre_1.txt' 'history/units/oak tree.txt' mv 'history/units/oldman_1.txt' 'history/units/old man.txt' mv 'history/units/oxcart_1.txt' 'history/units/ox cart.txt' mv 'history/units/petrob_1.txt' 'history/units/petrobolos.txt' mv 'history/units/petsuc_1.txt' 'history/units/petsuchos.txt' mv 'history/units/pharao_1.txt' 'history/units/pharaoh of osiris.txt' mv 'history/units/pharao_2.txt' 'history/units/pharaoh secondary.txt' mv 'history/units/phoeni_1.txt' 'history/units/phoenix egg.txt' mv 'history/units/pigspe_1.txt' 'history/units/pig special.txt' mv 'history/units/pinede_1.txt' 'history/units/pine dead.txt' mv 'history/units/pinesn_1.txt' 'history/units/pine snow.txt' mv 'history/units/pirate_1.txt' 'history/units/pirate ship.txt' mv 'history/units/plenty_1.txt' 'history/units/plenty vault koth.txt' mv 'history/units/plenty_2.txt' 'history/units/plenty vault.txt' mv 'history/units/polarb_1.txt' 'history/units/polar bear.txt' mv 'history/units/portab_1.txt' 'history/units/portable ram.txt' mv 'history/units/poseid_1.txt' 'history/units/poseidon statue.txt' mv 'history/units/prodro_1.txt' 'history/units/prodromos.txt' mv 'history/units/pyrami_1.txt' 'history/units/pyramid large.txt' mv 'history/units/raidin_1.txt' 'history/units/raiding cavalry.txt' mv 'history/units/ramm0000.txt' 'history/units/ramming ship egyptian.txt' mv 'history/units/rammin_2.txt' 'history/units/ramming ship greek.txt' mv 'history/units/rammin_3.txt' 'history/units/ramming ship norse.txt' mv 'history/units/reginl_1.txt' 'history/units/reginleif.txt' mv 'history/units/rhinoc_1.txt' 'history/units/rhinoceros of set.txt' mv 'history/units/rhinoc_2.txt' 'history/units/rhinocerous.txt' mv 'history/units/savann_1.txt' 'history/units/savannah tree.txt' mv 'history/units/scaffo_1.txt' 'history/units/scaffolding.txt' mv 'history/units/scorpi_1.txt' 'history/units/scorpion man.txt' mv 'history/units/seasna_1.txt' 'history/units/sea snake.txt' mv 'history/units/seatur_1.txt' 'history/units/sea turtle.txt' mv 'history/units/sentin_1.txt' 'history/units/sentinel main.txt' mv 'history/units/settle_1.txt' 'history/units/settlement level 1.txt' mv 'history/units/settle_2.txt' 'history/units/settlement.txt' mv 'history/units/shabak_1.txt' 'history/units/shaba ka.txt' mv 'history/units/shadeo_1.txt' 'history/units/shade of erebus.txt' mv 'history/units/shadeo_2.txt' 'history/units/shade of hades.txt' mv 'history/units/shipwr_1.txt' 'history/units/shipwreck.txt' mv 'history/units/sieg0000.txt' 'history/units/siege ship egyptian.txt' mv 'history/units/siegec_1.txt' 'history/units/siege camp.txt' mv 'history/units/sieges_2.txt' 'history/units/siege ship greek.txt' mv 'history/units/sieges_3.txt' 'history/units/siege ship norse.txt' mv 'history/units/sieget_1.txt' 'history/units/siege tower.txt' mv 'history/units/skrael_1.txt' 'history/units/skraeling.txt' mv 'history/units/sleepi_1.txt' 'history/units/sleeping guardian.txt' mv 'history/units/st9642_1.txt' 'history/units/statue pharaoh.txt' mv 'history/units/statue_1.txt' 'history/units/statue lion left.txt' mv 'history/units/statue_2.txt' 'history/units/statue lion right.txt' mv 'history/units/statue_3.txt' 'history/units/statue of lightning.txt' mv 'history/units/statue_4.txt' 'history/units/statue of major god.txt' mv 'history/units/storeh_1.txt' 'history/units/storehouse.txt' mv 'history/units/swordb_1.txt' 'history/units/sword bearers.txt' mv 'history/units/tamari_1.txt' 'history/units/tamarisk tree.txt' mv 'history/units/taproo_1.txt' 'history/units/taproot large.txt' mv 'history/units/temp0000.txt' 'history/units/temple underworld.txt' mv 'history/units/thorha_1.txt' 'history/units/thor hammer haft.txt' mv 'history/units/thorha_2.txt' 'history/units/thor hammer head.txt' mv 'history/units/throwi_1.txt' 'history/units/throwing axeman.txt' mv 'history/units/titanb_1.txt' 'history/units/titan bad.txt' mv 'history/units/transp_1.txt' 'history/units/transport ship egyptian.txt' mv 'history/units/transp_2.txt' 'history/units/transport ship greek.txt' mv 'history/units/transp_3.txt' 'history/units/transport ship norse.txt' mv 'history/units/trojan_1.txt' 'history/units/trojan horse.txt' mv 'history/units/troyga_1.txt' 'history/units/troy gate.txt' mv 'history/units/troywa_1.txt' 'history/units/troy wall connector.txt' mv 'history/units/troywa_2.txt' 'history/units/troy wall long.txt' mv 'history/units/troywa_3.txt' 'history/units/troy wall short.txt' mv 'history/units/unde0000.txt' 'history/units/underworld passage spc.txt' mv 'history/units/villag_1.txt' 'history/units/villager egyptian.txt' mv 'history/units/villag_2.txt' 'history/units/villager greek.txt' mv 'history/units/villag_3.txt' 'history/units/villager norse.txt' mv 'history/units/waaa05_1.txt' 'history/units/walking woods pine.txt' mv 'history/units/waca6e_1.txt' 'history/units/walking woods savannah.txt' mv 'history/units/walk0000.txt' 'history/units/walking woods oak.txt' mv 'history/units/walkin_2.txt' 'history/units/walking woods palm.txt' mv 'history/units/walkin_3.txt' 'history/units/walking woods pine dead.txt' mv 'history/units/walkin_4.txt' 'history/units/walking woods pine snow.txt' mv 'history/units/wallat_1.txt' 'history/units/wall atlantis connector.txt' mv 'history/units/wallat_2.txt' 'history/units/wall atlantis long.txt' mv 'history/units/wallco_1.txt' 'history/units/wall connector.txt' mv 'history/units/walllo_1.txt' 'history/units/wall long.txt' mv 'history/units/wallme_1.txt' 'history/units/wall medium.txt' mv 'history/units/wallsh_1.txt' 'history/units/wall short.txt' mv 'history/units/warele_1.txt' 'history/units/war elephant.txt' mv 'history/units/waterb_1.txt' 'history/units/water buffalo.txt' mv 'history/units/wellof_1.txt' 'history/units/well of urd.txt' mv 'history/units/wonder_1.txt' 'history/units/wonder spc.txt' mv 'loadin_1.bmp' 'loading1024.bmp' mv 'loadin_2.bmp' 'loading1280.bmp' mv 'loadin_3.bmp' 'loading640.bmp' mv 'loadin_4.bmp' 'loading800.bmp' mv 'models/sfxabo_1.lng' 'models/sfx a bolt.lng' mv 'models/sfxaos_1.lng' 'models/sfx a osiris.lng' mv 'models/sfxape_1.lng' 'models/sfx a petosuchus.lng' mv 'models/sfxgli_1.lng' 'models/sfx g lightning bolt large.lng' mv 'models/sfxgli_2.lng' 'models/sfx g lightning bolt medium.lng' mv 'models/sfxgli_3.lng' 'models/sfx g lightning bolt small.lng' mv 'moviep_1.exe' 'movieplayer.exe' mv 'rm/acropo_1.xml' 'rm/acropolis.xml' mv 'rm/acropo_1.xs' 'rm/acropolis.xs' mv 'rm/archip_1.xml' 'rm/archipelago.xml' mv 'rm/archip_1.xs' 'rm/archipelago.xs' mv 'rm/fastra_1.set' 'rm/fastrandom.set' mv 'rm/ghostl_1.xml' 'rm/ghost lake.xml' mv 'rm/ghostl_1.xs' 'rm/ghost lake.xs' mv 'rm/jotunh_1.xml' 'rm/jotunheim.xml' mv 'rm/jotunh_1.xs' 'rm/jotunheim.xs' mv 'rm/kingof_1.xml' 'rm/king of the hill.xml' mv 'rm/kingof_1.xs' 'rm/king of the hill.xs' mv 'rm/medite_1.xml' 'rm/mediterranean.xml' mv 'rm/medite_1.xs' 'rm/mediterranean.xs' mv 'rm/random_1.set' 'rm/randommaps.set' mv 'rm/rivern_1.xml' 'rm/river nile.xml' mv 'rm/rivern_1.xs' 'rm/river nile.xs' mv 'rm/seaofw_1.xml' 'rm/sea of worms.xml' mv 'rm/seaofw_1.xs' 'rm/sea of worms.xs' mv 'rm/sudden_1.xml' 'rm/sudden death.xml' mv 'rm/sudden_1.xs' 'rm/sudden death.xs' mv 'rm/teammi_1.xml' 'rm/team migration.xml' mv 'rm/teammi_1.xs' 'rm/team migration.xs' mv 'rm/theunk_1.xml' 'rm/the unknown.xml' mv 'rm/theunk_1.xs' 'rm/the unknown.xs' mv 'rm/valley_1.xml' 'rm/valley of kings.xml' mv 'rm/valley_1.xs' 'rm/valley of kings.xs' mv 'rm/vinlan_1.xml' 'rm/vinlandsaga.xml' mv 'rm/vinlan_1.xs' 'rm/vinlandsaga.xs' mv 'rm/wateri_1.xml' 'rm/watering hole.xml' mv 'rm/wateri_1.xs' 'rm/watering hole.xs' mv 'rockal_1.dll' 'rockalldll.dll' mv 'rts3ba_1.txt' 'rts3banglog.txt' mv 'scenario/scenar_1.bar' 'scenario/scenarios.bar' mv 'sound/aheroh_1.wav' 'sound/aherohasfallen.wav' mv 'sound/cinematics/04_in/armyar_1.wav' 'sound/cinematics/04_in/armyarrive.wav' mv 'sound/cinematics/04_in/music1_1.mp3' 'sound/cinematics/04_in/music 1.mp3' mv 'sound/cinematics/04_in/music2_1.mp3' 'sound/cinematics/04_in/music 2.mp3' mv 'sound/cinematics/04_in/wavesb_1.mp3' 'sound/cinematics/04_in/wavesbirdsmix.mp3' mv 'sound/cinematics/04_out/wave0000.mp3' 'sound/cinematics/04_out/wavesbirds.mp3' mv 'sound/cinematics/05_out/boatsp_1.mp3' 'sound/cinematics/05_out/boatspass.mp3' mv 'sound/cinematics/05_out/kamosl_1.mp3' 'sound/cinematics/05_out/kamosleap.mp3' mv 'sound/cinematics/05_out/leviat_1.mp3' 'sound/cinematics/05_out/leviathangrunt.mp3' mv 'sound/cinematics/05_out/musi0000.mp3' 'sound/cinematics/05_out/music.mp3' mv 'sound/cinematics/1/wave0001.mp3' 'sound/cinematics/1/waves.mp3' mv 'sound/cinematics/3/ambi0000.mp3' 'sound/cinematics/3/ambience.mp3' mv 'sound/cinematics/3/boat0000.mp3' 'sound/cinematics/3/boatpass.mp3' mv 'sound/cinematics/3/wave0002.mp3' 'sound/cinematics/3/waves.mp3' mv 'sound/cinematics/a/dreamt_1.mp3' 'sound/cinematics/a/dreamthing.mp3' mv 'sound/cinematics/a/lostso_1.mp3' 'sound/cinematics/a/lostsouls.mp3' mv 'sound/cinematics/a/wave0003.mp3' 'sound/cinematics/a/waves.mp3' mv 'sound/dialog/kastor_1.mp3' 'sound/dialog/kastor061.mp3' mv 'sound/dialog/kastor_2.mp3' 'sound/dialog/kastor062.mp3' mv 'sound/music/culture/greekt_1.mp3' 'sound/music/culture/greek to me.mp3' mv 'sound/music/culture/ndnile_1.mp3' 'sound/music/culture/n. d. nile.mp3' mv 'sound/music/culture/ofnors_1.mp3' 'sound/music/culture/of norse not!.mp3' mv 'sound/music/fight/iwishi_1.mp3' 'sound/music/fight/i wish i could throw shapes.mp3' mv 'sound/music/fight/oi_tha_1.mp3' 'sound/music/fight/oi, that pops!!!.mp3' mv 'sound/music/fight/rotloa_1.mp3' 'sound/music/fight/rot loaf.mp3' mv 'sound/music/fight/thefir_1.mp3' 'sound/music/fight/the fire brigade.mp3' mv 'sound/music/interface/acatna_1.mp3' 'sound/music/interface/a cat named mittens.mp3' mv 'sound/music/interface/ganksn_1.mp3' "sound/music/interface/gank sneakin'.mp3" mv 'sound/music/interface/ifyouc_1.mp3' 'sound/music/interface/if you can use a doorknob.mp3' mv 'sound/music/interface/ma_ams_1.mp3' "sound/music/interface/ma'am...some other sunset.mp3" mv 'sound/music/quiet/behold_1.mp3' 'sound/music/quiet/behold the great science fi (mellow mix).mp3' mv 'sound/music/quiet/eatyou_1.mp3' 'sound/music/quiet/eat your potatoes (mellow mix).mp3' mv 'sound/music/quiet/_finel_1.mp3' 'sound/music/quiet/(fine layers of) slaysenflite (mellow mix).mp3' mv 'sound/music/quiet/flavor_1.mp3' 'sound/music/quiet/flavor cats (in the comfort zone) (mellow mix).mp3' mv 'sound/music/quiet/neverm_1.mp3' 'sound/music/quiet/never mind the slacks and bashers (mellow mix).mp3' mv 'sound/music/quiet/thebal_1.mp3' 'sound/music/quiet/the ballad of ace lebaron (mellow mix).mp3' mv 'sound/music/standard/beho0000.mp3' 'sound/music/standard/behold the great science fi.mp3' mv 'sound/music/standard/eaty0000.mp3' 'sound/music/standard/eat your potatoes.mp3' mv 'sound/music/standard/_fin0000.mp3' 'sound/music/standard/(fine layers of) slaysenflite.mp3' mv 'sound/music/standard/flav0000.mp3' 'sound/music/standard/flavor cats (in the comfort zone).mp3' mv 'sound/music/standard/neve0000.mp3' 'sound/music/standard/never mind the slacks and bashers.mp3' mv 'sound/music/standard/theb0000.mp3' 'sound/music/standard/the ballad of ace lebaron.mp3' mv 'startup/gamese_1.bar' 'startup/gamesettings.bar' mv 'textures/cursors/co0576_1.cur' 'textures/cursors/command god no isis mono icon.cur' mv 'textures/cursors/co06af_1.cur' 'textures/cursors/command no god power mono icon.cur' mv 'textures/cursors/co085a_1.cur' 'textures/cursors/cursor_hyperlink.cur' mv 'textures/cursors/co0d51_1.cur' 'textures/cursors/command gather fish mono icon.cur' mv 'textures/cursors/co0ddb_1.cur' 'textures/cursors/command guard icon.cur' mv 'textures/cursors/co17c2_1.cur' 'textures/cursors/command resource drop off gold mono icon.cur' mv 'textures/cursors/co1b52_1.cur' 'textures/cursors/cursor_ankh.cur' mv 'textures/cursors/co1ec7_1.cur' 'textures/cursors/command gather berries icon.cur' mv 'textures/cursors/co36e9_1.cur' 'textures/cursors/command cursor icon.cur' mv 'textures/cursors/co3d45_1.cur' 'textures/cursors/command no god power icon.cur' mv 'textures/cursors/co3e43_1.cur' 'textures/cursors/command herdable gaia mono icon.cur' mv 'textures/cursors/co4014_1.cur' 'textures/cursors/command gather gold icon.cur' mv 'textures/cursors/co4096_1.cur' 'textures/cursors/command gather wood icon.cur' mv 'textures/cursors/co40d2_1.cur' 'textures/cursors/command gather food icon.cur' mv 'textures/cursors/co41d0_1.cur' 'textures/cursors/command gather fish icon.cur' mv 'textures/cursors/co4648_1.cur' 'textures/cursors/command gather berries mono icon.cur' mv 'textures/cursors/co48a6_1.cur' 'textures/cursors/command patrol icon.cur' mv 'textures/cursors/co4c41_1.cur' 'textures/cursors/command cursor mono icon.cur' mv 'textures/cursors/co4e87_1.cur' 'textures/cursors/command empower mono icon.cur' mv 'textures/cursors/co5d3d_1.cur' 'textures/cursors/command convert mono icon.cur' mv 'textures/cursors/co6199_1.cur' 'textures/cursors/command god no isis icon.cur' mv 'textures/cursors/co61d1_1.cur' 'textures/cursors/command resource drop off gold icon.cur' mv 'textures/cursors/co63d7_1.cur' 'textures/cursors/command convert icon.cur' mv 'textures/cursors/co67c2_1.cur' 'textures/cursors/command resource drop off food mono icon.cur' mv 'textures/cursors/co7449_1.cur' 'textures/cursors/command god power mono icon.cur' mv 'textures/cursors/co7874_1.cur' 'textures/cursors/command resource drop off wood mono icon.cur' mv 'textures/cursors/co7886_1.cur' 'textures/cursors/cursor_gather.cur' mv 'textures/cursors/co846f_1.cur' 'textures/cursors/command repair icon.cur' mv 'textures/cursors/co8c08_1.cur' 'textures/cursors/command god power icon.cur' mv 'textures/cursors/co8ebb_1.cur' 'textures/cursors/command guard mono icon.cur' mv 'textures/cursors/co8ff0_1.cur' 'textures/cursors/command help icon.cur' mv 'textures/cursors/co9852_1.cur' 'textures/cursors/command gather favor icon.cur' mv 'textures/cursors/coa0a9_1.cur' 'textures/cursors/command unboard icon.cur' mv 'textures/cursors/coa29a_1.cur' 'textures/cursors/command help mono icon.cur' mv 'textures/cursors/coa2d1_1.cur' 'textures/cursors/command resource drop off food icon.cur' mv 'textures/cursors/cob08a_1.cur' 'textures/cursors/command dangerous gaia mono icon.cur' mv 'textures/cursors/coba58_1.cur' 'textures/cursors/command herdable gaia icon.cur' mv 'textures/cursors/cobfd6_1.cur' 'textures/cursors/command build icon.cur' mv 'textures/cursors/cod7b8_1.cur' 'textures/cursors/command dangerous gaia icon.cur' mv 'textures/cursors/codcf9_1.cur' 'textures/cursors/command patrol mono icon.cur' mv 'textures/cursors/code16_1.cur' 'textures/cursors/command build mono icon.cur' mv 'textures/cursors/coe410_1.cur' 'textures/cursors/command gather wood mono icon.cur' mv 'textures/cursors/coe4c0_1.cur' 'textures/cursors/command gather gold mono icon.cur' mv 'textures/cursors/coe690_1.cur' 'textures/cursors/command resource drop off wood icon.cur' mv 'textures/cursors/coe8ee_1.cur' 'textures/cursors/command gather favor mono icon.cur' mv 'textures/cursors/coeb2a_1.cur' 'textures/cursors/command repair mono icon.cur' mv 'textures/cursors/coec91_1.cur' 'textures/cursors/command gather food mono icon.cur' mv 'textures/cursors/coed8a_1.cur' 'textures/cursors/command gather resource mono icon.cur' mv 'textures/cursors/cof31e_1.cur' 'textures/cursors/command resource drop off mono icon.cur' mv 'textures/cursors/cof67e_1.cur' 'textures/cursors/command unboard mono icon.cur' mv 'textures/cursors/comman_1.cur' 'textures/cursors/cursor_attack.cur' mv 'textures/cursors/comman_2.cur' 'textures/cursors/command attack mono icon.cur' mv 'textures/cursors/comman_3.cur' 'textures/cursors/command board icon.cur' mv 'textures/cursors/comman_4.cur' 'textures/cursors/command board mono icon.cur' mv 'textures/cursors/cu29a0_1.cur' 'textures/cursors/cursor_pray mono.cur' mv 'textures/cursors/cu3102_1.cur' 'textures/cursors/cursor_hyperlink mono.cur' mv 'textures/cursors/cu3753_1.cur' 'textures/cursors/cursor_build mono.cur' mv 'textures/cursors/cu5567_1.cur' 'textures/cursors/cursor_pray.cur' mv 'textures/cursors/cu6cd0_1.cur' 'textures/cursors/cursor_workon.cur' mv 'textures/cursors/cu89cd_1.cur' 'textures/cursors/cursor_gather mono.cur' mv 'textures/cursors/cu8a47_1.cur' 'textures/cursors/cursor_workon mono.cur' mv 'textures/cursors/cub6eb_1.cur' 'textures/cursors/command resource drop off icon.cur' mv 'textures/cursors/cuc6cb_1.cur' 'textures/cursors/cursor_build.cur' mv 'textures/cursors/cucae1_1.cur' 'textures/cursors/command gather resource icon.cur' mv 'textures/cursors/cue611_1.cur' 'textures/cursors/cursor_pointer.cur' mv 'textures/cursors/cue9f1_1.cur' 'textures/cursors/cursor_pointer mono.cur' mv 'textures/cursors/cursor_1.cur' 'textures/cursors/cursor_ankh mono.cur' mv 'textures/cursors/cursor_2.cur' 'textures/cursors/command empower icon.cur' mv 'textures/cursors/cursor_3.cur' 'textures/cursors/cursor_attack mono.cur' mv 'textures/cursors/cursor_4.cur' 'textures/cursors/command attack icon.cur' mv 'textures/cursors/sc7b34_1.cur' 'textures/cursors/scale_vert cursor.cur' mv 'textures/cursors/scale__1.cur' 'textures/cursors/scale_both cursor mono.cur' mv 'textures/cursors/scale__2.cur' 'textures/cursors/scale_both cursor.cur' mv 'textures/cursors/scale__3.cur' 'textures/cursors/scale_horiz cursor mono.cur' mv 'textures/cursors/scale__4.cur' 'textures/cursors/scale_horiz cursor.cur' mv 'textures/cursors/scbed3_1.cur' 'textures/cursors/scale_vert cursor mono.cur' mv 'trigger/basicv_1.xs' 'trigger/basicvcnomain.xs' mv 'trigger/rmsudd_1.xs' 'trigger/rmsuddendeathvc.xs' mv 'zoneac_1.dll' 'zoneaccessapi.dll' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-alpha-centauri.sh0000755000000000000000000002105514471751340015060 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Alpha Centauri ### script_version=20241123.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='alpha-centauri' GAME_NAME='Alpha Centauri' ARCHIVE_BASE_1_NAME='setup_sid_meiers_alpha_centauri_planetary_pack_1.1_pracx_ddraw_(77244).exe' ARCHIVE_BASE_1_MD5='d401431ff9c1c7526c3104194409bd6e' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_VERSION='6.0b-gog77244' ARCHIVE_BASE_1_SIZE='601205' ARCHIVE_BASE_1_URL='https://www.gog.com/game/sid_meiers_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='609309' ## Loki native Linux engine ARCHIVE_REQUIRED_ENGINE_NAME='alpha-centauri-linux.tar.xz' ARCHIVE_REQUIRED_ENGINE_MD5='a13676f2bdf1d3570ebb1835c2e4b2e8' ARCHIVE_REQUIRED_ENGINE_URL='https://downloads.dotslashplay.it/games/alpha-centauri/' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='alpha-centauri-icons.2022-10-04.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='9293b41c5b0ab978ff007f78d29fbbcf' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/alpha-centauri/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_PATH='.' CONTENT_GAME_BIN_FILES=' smac smac.dynamic smacx smacx.dynamic smacpack' CONTENT_GAME_MOVIES_FILES=' data/movies' CONTENT_FONTS_DATA_FILES=' alphc___.ttf arialnbi.ttf arialnb.ttf arialni.ttf arialn.ttf' CONTENT_FONTS0_DATA_PATH='data/fonts' CONTENT_FONTS0_DATA_FILES=' arialb.ttf ariali.ttf arialr.ttf loki_times.ttf' CONTENT_GAME_DATA_FILES=' data/facs data/fx data/maps data/projs data/scenarios data/techs data/voices data/alieniscript.txt data/alienuscript.txt data/alpha.txt data/alphax.txt data/angels.txt data/basename.txt data/believe.txt data/blurbs.txt data/blurbsx.txt data/brian.txt data/caretake.txt data/concepts.txt data/conceptsx.txt data/credits.txt data/cyborg.txt data/drone.txt data/facedit.txt data/faction.txt data/flavor.txt data/fungboy.txt data/gaians.txt data/help.txt data/helpx.txt data/hive.txt data/holobook.txt data/humanludes.txt data/interludea.txt data/interlude.txt data/interludex.txt data/jackal.txt data/labels.txt data/logfile.txt data/menu.txt data/monument.txt data/morgan.txt data/movlist.txt data/peace.txt data/pirates.txt data/planets.txt data/scenario.txt data/script.txt data/sid.txt data/spartans.txt data/system.txt data/techlongs.txt data/techshorts.txt data/tutor.txt data/univ.txt data/usurper.txt data/xscript.txt data/*.cfg data/*.cvr data/*.flc data/*.pcx data/*.sys' CONTENT_GAME0_DATA_PATH='.' CONTENT_GAME0_DATA_FILES=' data' CONTENT_DOC_DATA_FILES=' manual.pdf' CONTENT_DOC0_DATA_RELATIVE_PATH='data' CONTENT_DOC0_DATA_FILES=' readme.txt readme_ac.txt smac_xp2000_readme.txt' APP_MAIN_EXE='smac.dynamic' APP_MAIN_ICON='terran.exe' ## Work around font rendering issues. APP_MAIN_PRERUN=' # Work around font rendering issues export FREETYPE_PROPERTIES="truetype:interpreter-version=35" ' APP_SMACX_ID="${GAME_ID}-alien-crossfire" APP_SMACX_NAME="$GAME_NAME - Alien Crossfire" APP_SMACX_EXE='smacx.dynamic' APP_SMACX_ICON='terranx.exe' ## Work around font rendering issues. APP_SMACX_PRERUN="$APP_MAIN_PRERUN" PACKAGES_LIST=' PKG_BIN PKG_MOVIES PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_MOVIES PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libEGL.so.1 libfreetype.so.6 libm.so.6 libpthread.so.0 libSDL-1.2.so.0 libSDL_mixer-1.2.so.0 libSDL_ttf-2.0.so.0 libsmpeg-0.4.so.0 libz.so.1' PKG_MOVIES_ID="${GAME_ID}-movies" PKG_MOVIES_DESCRIPTION='movies' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PRELOAD_HACKS_LIST=' HACK_SDL1COMPAT' # LD_PRELOAD shim allowing the old engine to run on top of latest SDL1 library # cf. https://github.com/ZeroPointEnergy/smacshim HACK_SDL1COMPAT_NAME='smacshim' HACK_SDL1COMPAT_DESCRIPTION='LD_PRELOAD shim allowing the old engine to run on top of latest SDL1 library cf. https://github.com/ZeroPointEnergy/smacshim' HACK_SDL1COMPAT_PACKAGE='PKG_BIN' HACK_SDL1COMPAT_SOURCE=' #define _GNU_SOURCE #include #include void *__builtin_new(size_t size) { return malloc(size); } void __builtin_delete(void *ptr) { free(ptr); } void *__builtin_vec_new(size_t size) { return malloc(size); } void __builtin_vec_delete(void *ptr) { free(ptr); } ' # Convert text files to UNIX-style line breaks REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} dos2unix" # Convert movies from the original format REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} 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 # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Check for the presence of the archive providing the native Linux engine archive_initialize_required \ 'ARCHIVE_ENGINE' \ 'ARCHIVE_REQUIRED_ENGINE' # Check that the "rename" command is available unset RENAME_CMD ## On Arch Linux is is provided under the name "perl-rename". for rename_cmd in 'perl-rename' 'rename'; do if command -v "$rename_cmd" >/dev/null 2>&1; then RENAME_CMD="$rename_cmd" break fi done if [ -z "${RENAME_CMD:-}" ]; then error_dependency_not_found 'rename' exit 1 fi # Build and include the LD_PRELOAD shim required for the old engine to run on top of modern libraries hacks_inclusion_default # Extract game data archive_extraction_default archive_extraction 'ARCHIVE_ENGINE' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Drop unused alternative art assets. rm --force --recursive \ 'alternative art' \ 'color blind palette' ## Replace spaces in file paths by underscores. find . -depth -name '* *' -execdir \ "$RENAME_CMD" 's/ /_/g' {} + ## Convert text files to UNIX-style line breaks. find . -type f -name '*.txt' -exec \ dos2unix --quiet {} + ## Move data files into the expected paths. mkdir --parents 'data' mv --target-directory='data' -- \ 'facs' \ 'fx' \ 'maps' \ 'projs' \ 'techs' \ 'voices' \ *.cvr \ *.flc \ *.pcx \ *.sys \ *.txt mv 'scenarios/alpha_centauri_scenarios' 'data/scenarios' if [ -e '__support/app/ip.cfg' ]; then mv '__support/app/ip.cfg' 'data/ip.cfg' else mv 'ip.cfg' 'data/ip.cfg' fi ## Convert movies from the original format. case "$(messages_language)" in ('fr') message_begin='Conversion des fichiers vidéo, cette étape peut prendre plusieurs minutes…\n' message_file='Conversion de %s…\n' message_done='Conversion terminée\n' ;; ('en'|*) message_begin='Converting video files, this will take several minutes…\n' message_file='Converting %s…\n' message_done='Converting done\n' ;; esac printf "$message_begin" mkdir 'data/movies' for source_file in movies/*.wve; do stream_video="${source_file%.wve}.m1v" stream_audio="${source_file%.wve}.mp2" destination_file="data/movies/$(basename "$source_file" .wve).mpg" printf "$message_file" "$source_file" ffmpeg -i "$source_file" -loglevel quiet -map v -codec:v mpeg1video -b:v 1727k -minrate 1727k -maxrate 1727k -r 29.97 "$stream_video" ffmpeg -i "$source_file" -loglevel quiet -map a -codec:a mp2 -ar 44100 "$stream_audio" rm "$source_file" mplex --verbose 0 --video-buffer 500 --output "$destination_file" "$stream_video" "$stream_audio" rm "$stream_video" "$stream_audio" done printf "$message_done" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Link the fonts in the hardcoded path the game engine expects. fonts_source=$(path_fonts_ttf) fonts_destination="$(package_path 'PKG_DATA')$(path_game_data)/data/fonts" mkdir --parents "$fonts_destination" for font_file in \ 'alphc___.ttf' \ 'arialr.ttf' \ 'arialb.ttf' \ 'ariali.ttf' \ 'arialn.ttf' \ 'arialnb.ttf' \ 'arialni.ttf' \ 'arialnbi.ttf' \ 'loki_times.ttf' do ln --symbolic "${fonts_source}/${font_file}" "$fonts_destination" done # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-anachronox.sh0000755000000000000000000000476114471751340014330 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=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='anachronox' GAME_NAME='Anachronox' ARCHIVE_BASE_1_NAME='setup_anachronox_1.02_(22258).exe' ARCHIVE_BASE_1_MD5='4e23d4f7637f6914a7cd6c13feb7ad7d' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='1074901' ARCHIVE_BASE_1_VERSION='1.02-gog22258' ARCHIVE_BASE_1_URL='https://www.gog.com/game/anachronox' ARCHIVE_BASE_0_NAME='setup_anachronox_2.0.0.28.exe' ARCHIVE_BASE_0_MD5='a9e148972e51a4980a2531d12a85dfc0' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1100000' ARCHIVE_BASE_0_VERSION='1.02-gog2.0.0.28' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' anoxdata/miles anoxdata/plugins anoxaux.dll anoxgfx.dll gamex86.dll ijl15.dll libpng13a.dll metagl.dll mss32.dll msvcp60.dll msvcrt.dll patch.dll ref_gl.dll zlib.dll afscmd.exe anox.exe autorun.exe dparse.exe gct setup.exe particleman.exe setupanox.exe autorun.inf gct setup.ini mscomctl.ocx' CONTENT_GAME_DATA_FILES=' anoxdata anox.ico anachronox_word.jpg' CONTENT_DOC_DATA_FILES=' manual.pdf readme.htm anachronox patch 1_02.rtf *readme.txt' USER_PERSISTENT_DIRECTORIES=' anoxdata/save' USER_PERSISTENT_FILES=' *.ini anoxdata/nokill.*' APP_MAIN_EXE='anox.exe' APP_MAIN_ICON='anox.ico' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-baldurs-gate-3.sh0000755000000000000000000016725714471751340014714 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=20250104.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='baldurs-gate-3' GAME_NAME='Baldurʼs Gate Ⅲ' ARCHIVE_BASE_PATCH7_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035).exe' ARCHIVE_BASE_PATCH7_0_MD5='4731f40c3ba5a04baa46f83954a11dc8' ARCHIVE_BASE_PATCH7_0_TYPE='innosetup' ARCHIVE_BASE_PATCH7_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-1.bin' ARCHIVE_BASE_PATCH7_0_PART1_MD5='71c4af7da8ef005e18d387565dd21b16' ARCHIVE_BASE_PATCH7_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-2.bin' ARCHIVE_BASE_PATCH7_0_PART2_MD5='b1ed5b656dd0fa53a60abca188966470' ARCHIVE_BASE_PATCH7_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-3.bin' ARCHIVE_BASE_PATCH7_0_PART3_MD5='d7dad117c9e7af9e3b86e660ab5bb7b5' ARCHIVE_BASE_PATCH7_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-4.bin' ARCHIVE_BASE_PATCH7_0_PART4_MD5='ae61e0a0c6124f61d343745d0fe10d57' ARCHIVE_BASE_PATCH7_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-5.bin' ARCHIVE_BASE_PATCH7_0_PART5_MD5='816405148684c3669784239e2cd26b02' ARCHIVE_BASE_PATCH7_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-6.bin' ARCHIVE_BASE_PATCH7_0_PART6_MD5='5391fcf18b77fadaf13e685e9a142b22' ARCHIVE_BASE_PATCH7_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-7.bin' ARCHIVE_BASE_PATCH7_0_PART7_MD5='e307ae4805537a15dcb9859be3556f4d' ARCHIVE_BASE_PATCH7_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-8.bin' ARCHIVE_BASE_PATCH7_0_PART8_MD5='fd5efa18847fa4c941e4b42219ad03dc' ARCHIVE_BASE_PATCH7_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-9.bin' ARCHIVE_BASE_PATCH7_0_PART9_MD5='0622bdb104ca1512d4a0078ad991d1ea' ARCHIVE_BASE_PATCH7_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-10.bin' ARCHIVE_BASE_PATCH7_0_PART10_MD5='e3f4fe11ecde3b0be12791db9eb41f67' ARCHIVE_BASE_PATCH7_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-11.bin' ARCHIVE_BASE_PATCH7_0_PART11_MD5='65629494b10a2e44d4b32febaedd67e1' ARCHIVE_BASE_PATCH7_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-12.bin' ARCHIVE_BASE_PATCH7_0_PART12_MD5='0d39d5fb7094ed2507525056edc96658' ARCHIVE_BASE_PATCH7_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-13.bin' ARCHIVE_BASE_PATCH7_0_PART13_MD5='e88517daedf8393b25441534603ceac1' ARCHIVE_BASE_PATCH7_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-14.bin' ARCHIVE_BASE_PATCH7_0_PART14_MD5='63c4c9a9b8fa4a28cf47a828e6791fc6' ARCHIVE_BASE_PATCH7_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-15.bin' ARCHIVE_BASE_PATCH7_0_PART15_MD5='198ee0e4bc27d4e69ec979c177f39e9f' ARCHIVE_BASE_PATCH7_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-16.bin' ARCHIVE_BASE_PATCH7_0_PART16_MD5='89fc96eff7849886532f52689177a7a3' ARCHIVE_BASE_PATCH7_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-17.bin' ARCHIVE_BASE_PATCH7_0_PART17_MD5='c44b6b7b2a65b08558d5e7a0dbd15b53' ARCHIVE_BASE_PATCH7_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-18.bin' ARCHIVE_BASE_PATCH7_0_PART18_MD5='3257064cdb862e995db3bcb637602efd' ARCHIVE_BASE_PATCH7_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-19.bin' ARCHIVE_BASE_PATCH7_0_PART19_MD5='277c3b78d305362642e2610f96b18773' ARCHIVE_BASE_PATCH7_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-20.bin' ARCHIVE_BASE_PATCH7_0_PART20_MD5='a474dc343c2984f22ad1cd67741583ab' ARCHIVE_BASE_PATCH7_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-21.bin' ARCHIVE_BASE_PATCH7_0_PART21_MD5='36b777303e40ce40afd533572dc5b669' ARCHIVE_BASE_PATCH7_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-22.bin' ARCHIVE_BASE_PATCH7_0_PART22_MD5='a3424984840c0d342c420861cafb610e' ARCHIVE_BASE_PATCH7_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-23.bin' ARCHIVE_BASE_PATCH7_0_PART23_MD5='37ee123135f0a0d5664c3ad123a14323' ARCHIVE_BASE_PATCH7_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-24.bin' ARCHIVE_BASE_PATCH7_0_PART24_MD5='a293911fe03fc6510d2ded8d1926e88e' ARCHIVE_BASE_PATCH7_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-25.bin' ARCHIVE_BASE_PATCH7_0_PART25_MD5='a5ed151d731fffc6721774ceddfe9dc6' ARCHIVE_BASE_PATCH7_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-26.bin' ARCHIVE_BASE_PATCH7_0_PART26_MD5='7a2b2564e8ca4289729e29f1dd7eb330' ARCHIVE_BASE_PATCH7_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-27.bin' ARCHIVE_BASE_PATCH7_0_PART27_MD5='6e7e8555e2c041ec6c76702dc82651eb' ARCHIVE_BASE_PATCH7_0_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-28.bin' ARCHIVE_BASE_PATCH7_0_PART28_MD5='4c0f2b5bbbfa525769977b316348b4de' ARCHIVE_BASE_PATCH7_0_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-29.bin' ARCHIVE_BASE_PATCH7_0_PART29_MD5='45bce06db81d8452f97833ecf69d1385' ARCHIVE_BASE_PATCH7_0_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-30.bin' ARCHIVE_BASE_PATCH7_0_PART30_MD5='5c499c0e5ae46ad2ccf56d231aa73743' ARCHIVE_BASE_PATCH7_0_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-31.bin' ARCHIVE_BASE_PATCH7_0_PART31_MD5='ede42db8ed1db940449a4a9e1cd2c276' ARCHIVE_BASE_PATCH7_0_PART32_NAME='setup_baldurs_gate_3_release_-_v4.1.1.6072089_-_patch_patch7_hotfix3_(64bit)_(77035)-32.bin' ARCHIVE_BASE_PATCH7_0_PART32_MD5='4209e5bdcc87061a22236b28759eba18' ARCHIVE_BASE_PATCH7_0_SIZE='151199932' ARCHIVE_BASE_PATCH7_0_VERSION='4.1.1.6072089-gog77035' ARCHIVE_BASE_PATCH7_0_URL='https://www.gog.com/game/baldurs_gate_iii' ARCHIVE_BASE_PATCH6_1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479).exe' ARCHIVE_BASE_PATCH6_1_MD5='a68f1a0edcf026a1095c20efe1fa6edc' ARCHIVE_BASE_PATCH6_1_TYPE='innosetup' ARCHIVE_BASE_PATCH6_1_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-1.bin' ARCHIVE_BASE_PATCH6_1_PART1_MD5='c479abb170e4741bf731d5c89cb985c5' ARCHIVE_BASE_PATCH6_1_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-2.bin' ARCHIVE_BASE_PATCH6_1_PART2_MD5='4d3c3d90c5b70abf10502b2eac7e7b91' ARCHIVE_BASE_PATCH6_1_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-3.bin' ARCHIVE_BASE_PATCH6_1_PART3_MD5='34e7830447cfe59b71a6d3cdc627d473' ARCHIVE_BASE_PATCH6_1_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-4.bin' ARCHIVE_BASE_PATCH6_1_PART4_MD5='7700f5bd163051ad3b544920267158a5' ARCHIVE_BASE_PATCH6_1_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-5.bin' ARCHIVE_BASE_PATCH6_1_PART5_MD5='f7e89a93a24a921c71ed7d9efdb2cc52' ARCHIVE_BASE_PATCH6_1_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-6.bin' ARCHIVE_BASE_PATCH6_1_PART6_MD5='cf6044ced2436c68fa644b16c43bd486' ARCHIVE_BASE_PATCH6_1_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-7.bin' ARCHIVE_BASE_PATCH6_1_PART7_MD5='91bb08a6576f56dc7eecdfc8475cbbea' ARCHIVE_BASE_PATCH6_1_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-8.bin' ARCHIVE_BASE_PATCH6_1_PART8_MD5='735d68133f1ad45d43b67a19bdcaf6b7' ARCHIVE_BASE_PATCH6_1_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-9.bin' ARCHIVE_BASE_PATCH6_1_PART9_MD5='76334ea7438e73cb4ff83f03b9aa4f0b' ARCHIVE_BASE_PATCH6_1_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-10.bin' ARCHIVE_BASE_PATCH6_1_PART10_MD5='d9ee57b1a0fa335c9ddbf8857cdf83b6' ARCHIVE_BASE_PATCH6_1_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-11.bin' ARCHIVE_BASE_PATCH6_1_PART11_MD5='eae123041bbf9f775b285da32ffa234c' ARCHIVE_BASE_PATCH6_1_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-12.bin' ARCHIVE_BASE_PATCH6_1_PART12_MD5='ccd6d28381f5e375aec2768714b8f825' ARCHIVE_BASE_PATCH6_1_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-13.bin' ARCHIVE_BASE_PATCH6_1_PART13_MD5='8042f5a7280456fe309dd7840c04125f' ARCHIVE_BASE_PATCH6_1_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-14.bin' ARCHIVE_BASE_PATCH6_1_PART14_MD5='71899991f13404154119dc4eb88ee68d' ARCHIVE_BASE_PATCH6_1_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-15.bin' ARCHIVE_BASE_PATCH6_1_PART15_MD5='23f96cb8a4c49d99935805a9b7c531e1' ARCHIVE_BASE_PATCH6_1_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-16.bin' ARCHIVE_BASE_PATCH6_1_PART16_MD5='2adbe0b025aacbd2a24d8f91caed65c6' ARCHIVE_BASE_PATCH6_1_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-17.bin' ARCHIVE_BASE_PATCH6_1_PART17_MD5='518e9ea117e9bab82e3ba3ff12ee99a3' ARCHIVE_BASE_PATCH6_1_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-18.bin' ARCHIVE_BASE_PATCH6_1_PART18_MD5='d1c1b477754b7f2661b0669c8b3eebd4' ARCHIVE_BASE_PATCH6_1_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-19.bin' ARCHIVE_BASE_PATCH6_1_PART19_MD5='0b93534901cbfb0c523c690181cc4bde' ARCHIVE_BASE_PATCH6_1_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-20.bin' ARCHIVE_BASE_PATCH6_1_PART20_MD5='d8efb4ef169d590c89f884c240a0bf72' ARCHIVE_BASE_PATCH6_1_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-21.bin' ARCHIVE_BASE_PATCH6_1_PART21_MD5='b5babfb43c75a5b919e497d7d54c86bd' ARCHIVE_BASE_PATCH6_1_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-22.bin' ARCHIVE_BASE_PATCH6_1_PART22_MD5='bb9419ce976980f86df35a21646da355' ARCHIVE_BASE_PATCH6_1_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-23.bin' ARCHIVE_BASE_PATCH6_1_PART23_MD5='a2cb3ae76774d36ce04346510dd019b0' ARCHIVE_BASE_PATCH6_1_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-24.bin' ARCHIVE_BASE_PATCH6_1_PART24_MD5='a33ab802e04f0c4d4f17f1e7e9e8b94a' ARCHIVE_BASE_PATCH6_1_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-25.bin' ARCHIVE_BASE_PATCH6_1_PART25_MD5='9bdfa763b6832aff6dc023a2d8d340c9' ARCHIVE_BASE_PATCH6_1_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-26.bin' ARCHIVE_BASE_PATCH6_1_PART26_MD5='c852917906a08488e823e60500cfc175' ARCHIVE_BASE_PATCH6_1_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-27.bin' ARCHIVE_BASE_PATCH6_1_PART27_MD5='608cf14bb3839e87e755683ee22059bb' ARCHIVE_BASE_PATCH6_1_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-28.bin' ARCHIVE_BASE_PATCH6_1_PART28_MD5='f5b16334779fbb662323966ed4735f61' ARCHIVE_BASE_PATCH6_1_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-29.bin' ARCHIVE_BASE_PATCH6_1_PART29_MD5='441e05f65ad6f0cb2642c29468302385' ARCHIVE_BASE_PATCH6_1_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-30.bin' ARCHIVE_BASE_PATCH6_1_PART30_MD5='5565eb0a62b83e3ab2eab663f1ad802e' ARCHIVE_BASE_PATCH6_1_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-31.bin' ARCHIVE_BASE_PATCH6_1_PART31_MD5='b73f8e36b290be55b5aec3ba5aaf197e' ARCHIVE_BASE_PATCH6_1_PART32_NAME='setup_baldurs_gate_3_release_-_v4.1.1.5022896_-_patch_patch6_hotfix9__(64bit)_(72479)-32.bin' ARCHIVE_BASE_PATCH6_1_PART32_MD5='181d4fc84ee71980b1dce7d04003f5bf' ARCHIVE_BASE_PATCH6_1_SIZE='149637909' ARCHIVE_BASE_PATCH6_1_VERSION='4.1.1.5022896-gog72479' ARCHIVE_BASE_PATCH5_1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408).exe' ARCHIVE_BASE_PATCH5_1_MD5='41d296389ec755596846312c290188ba' ARCHIVE_BASE_PATCH5_1_TYPE='innosetup' ARCHIVE_BASE_PATCH5_1_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-1.bin' ARCHIVE_BASE_PATCH5_1_PART1_MD5='ebbff6fbb2a38f555a30fe8e5c1a8b31' ARCHIVE_BASE_PATCH5_1_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-2.bin' ARCHIVE_BASE_PATCH5_1_PART2_MD5='a6577500e4ae2df79027a3aab47180ce' ARCHIVE_BASE_PATCH5_1_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-3.bin' ARCHIVE_BASE_PATCH5_1_PART3_MD5='413949288793c7ef6e7576cb573e6561' ARCHIVE_BASE_PATCH5_1_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-4.bin' ARCHIVE_BASE_PATCH5_1_PART4_MD5='ba3b2132916fb1a9924668e9c121eacd' ARCHIVE_BASE_PATCH5_1_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-5.bin' ARCHIVE_BASE_PATCH5_1_PART5_MD5='2833f2573f0c231eace28e5d55cdf760' ARCHIVE_BASE_PATCH5_1_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-6.bin' ARCHIVE_BASE_PATCH5_1_PART6_MD5='a14412e73266f5284fe3512f8531d5d6' ARCHIVE_BASE_PATCH5_1_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-7.bin' ARCHIVE_BASE_PATCH5_1_PART7_MD5='598fb783c55f0e750ce0dc9ff33d4e91' ARCHIVE_BASE_PATCH5_1_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-8.bin' ARCHIVE_BASE_PATCH5_1_PART8_MD5='4f15395994841e57ab238a417ad19f76' ARCHIVE_BASE_PATCH5_1_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-9.bin' ARCHIVE_BASE_PATCH5_1_PART9_MD5='3e0aeed6e2f499b74889600415bbbee8' ARCHIVE_BASE_PATCH5_1_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-10.bin' ARCHIVE_BASE_PATCH5_1_PART10_MD5='bf3b28a6d1c8210cff15a0a49d4c3773' ARCHIVE_BASE_PATCH5_1_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-11.bin' ARCHIVE_BASE_PATCH5_1_PART11_MD5='fa4fd60332c20e30217197f58e4bbf1b' ARCHIVE_BASE_PATCH5_1_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-12.bin' ARCHIVE_BASE_PATCH5_1_PART12_MD5='d00c210e621ab8163a36ca5973d3b8af' ARCHIVE_BASE_PATCH5_1_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-13.bin' ARCHIVE_BASE_PATCH5_1_PART13_MD5='80208dd51f3b41543b34b8a08c611bd8' ARCHIVE_BASE_PATCH5_1_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-14.bin' ARCHIVE_BASE_PATCH5_1_PART14_MD5='130710e4e6c422769453b7949a783f85' ARCHIVE_BASE_PATCH5_1_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-15.bin' ARCHIVE_BASE_PATCH5_1_PART15_MD5='bfc6635ab6f90b5168f67b88d3f7b57a' ARCHIVE_BASE_PATCH5_1_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-16.bin' ARCHIVE_BASE_PATCH5_1_PART16_MD5='84f39956129ff4e43c5dbe61a316315a' ARCHIVE_BASE_PATCH5_1_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-17.bin' ARCHIVE_BASE_PATCH5_1_PART17_MD5='fb05f610719dfed7278af617d70093e0' ARCHIVE_BASE_PATCH5_1_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-18.bin' ARCHIVE_BASE_PATCH5_1_PART18_MD5='40495dfc26875491f29eadeabeb77308' ARCHIVE_BASE_PATCH5_1_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-19.bin' ARCHIVE_BASE_PATCH5_1_PART19_MD5='d428eecb383c1317570ef4f9663045c8' ARCHIVE_BASE_PATCH5_1_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-20.bin' ARCHIVE_BASE_PATCH5_1_PART20_MD5='cdb6f938deb3ce2bc122f9effcc489b7' ARCHIVE_BASE_PATCH5_1_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-21.bin' ARCHIVE_BASE_PATCH5_1_PART21_MD5='6cbcaa9b7c412231b592b436f4e5b77a' ARCHIVE_BASE_PATCH5_1_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-22.bin' ARCHIVE_BASE_PATCH5_1_PART22_MD5='a68accd6f697dc9c7542441ce4373c5f' ARCHIVE_BASE_PATCH5_1_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-23.bin' ARCHIVE_BASE_PATCH5_1_PART23_MD5='67045ba580bfe38320d046caebf82799' ARCHIVE_BASE_PATCH5_1_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-24.bin' ARCHIVE_BASE_PATCH5_1_PART24_MD5='77d5c61d647007d6c2ee522d82354c10' ARCHIVE_BASE_PATCH5_1_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-25.bin' ARCHIVE_BASE_PATCH5_1_PART25_MD5='17db3c1c0706d86d074bad776401dfae' ARCHIVE_BASE_PATCH5_1_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-26.bin' ARCHIVE_BASE_PATCH5_1_PART26_MD5='6dc6d4ef5c7b3c6fdef926c1dbb79abe' ARCHIVE_BASE_PATCH5_1_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-27.bin' ARCHIVE_BASE_PATCH5_1_PART27_MD5='15d16729ba8fd25eaf3fe95bcfd89863' ARCHIVE_BASE_PATCH5_1_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-28.bin' ARCHIVE_BASE_PATCH5_1_PART28_MD5='51458a5835f079f452fbb32e57fe29d3' ARCHIVE_BASE_PATCH5_1_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-29.bin' ARCHIVE_BASE_PATCH5_1_PART29_MD5='771fe718c64fa6bfd9ac57cba1c18d4e' ARCHIVE_BASE_PATCH5_1_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.4494476_-_patch_patch5_hotfix6__(64bit)_(70408)-30.bin' ARCHIVE_BASE_PATCH5_1_PART30_MD5='9d1e8c2dde7c7e8d7be9684a1d2936dc' ARCHIVE_BASE_PATCH5_1_SIZE='144316256' ARCHIVE_BASE_PATCH5_1_VERSION='4.1.1.4494476-gog70408' ARCHIVE_BASE_PATCH4_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995).exe' ARCHIVE_BASE_PATCH4_0_MD5='ab6267432b272ff880127131e7b2f5f3' ARCHIVE_BASE_PATCH4_0_TYPE='innosetup' ARCHIVE_BASE_PATCH4_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-1.bin' ARCHIVE_BASE_PATCH4_0_PART1_MD5='df12c48514a6e053123b993536984db1' ARCHIVE_BASE_PATCH4_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-2.bin' ARCHIVE_BASE_PATCH4_0_PART2_MD5='7624eae52e3ba390cc451c92eb22971e' ARCHIVE_BASE_PATCH4_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-3.bin' ARCHIVE_BASE_PATCH4_0_PART3_MD5='55926fedfbe8bfc55259f43e279506c2' ARCHIVE_BASE_PATCH4_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-4.bin' ARCHIVE_BASE_PATCH4_0_PART4_MD5='6521b33ac90d7da85737fd789a035a4b' ARCHIVE_BASE_PATCH4_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-5.bin' ARCHIVE_BASE_PATCH4_0_PART5_MD5='9cab7eb4d37f6970d7c75620604f6260' ARCHIVE_BASE_PATCH4_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-6.bin' ARCHIVE_BASE_PATCH4_0_PART6_MD5='d6c465c93781fe3ff757c6c20a2ff373' ARCHIVE_BASE_PATCH4_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-7.bin' ARCHIVE_BASE_PATCH4_0_PART7_MD5='75a4703c4ab50e922f35c37dc0b2f91c' ARCHIVE_BASE_PATCH4_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-8.bin' ARCHIVE_BASE_PATCH4_0_PART8_MD5='2abf5bf419d07af67fa89ab9cf782401' ARCHIVE_BASE_PATCH4_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-9.bin' ARCHIVE_BASE_PATCH4_0_PART9_MD5='156c9711f63b8db03f31e41fd22e59af' ARCHIVE_BASE_PATCH4_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-10.bin' ARCHIVE_BASE_PATCH4_0_PART10_MD5='32430ec83c9b780c637c1d6b2de9ce68' ARCHIVE_BASE_PATCH4_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-11.bin' ARCHIVE_BASE_PATCH4_0_PART11_MD5='d0ae7f626c2f163f7192f2e6d10f09db' ARCHIVE_BASE_PATCH4_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-12.bin' ARCHIVE_BASE_PATCH4_0_PART12_MD5='5378372fae1cf46669db85f60091e77c' ARCHIVE_BASE_PATCH4_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-13.bin' ARCHIVE_BASE_PATCH4_0_PART13_MD5='f0e0d239c05867ceddd2f630794db82f' ARCHIVE_BASE_PATCH4_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-14.bin' ARCHIVE_BASE_PATCH4_0_PART14_MD5='49324f1d65939e8e41ea5530f369d5cd' ARCHIVE_BASE_PATCH4_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-15.bin' ARCHIVE_BASE_PATCH4_0_PART15_MD5='a6547b00be69663430c8c72bfa4a9f85' ARCHIVE_BASE_PATCH4_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-16.bin' ARCHIVE_BASE_PATCH4_0_PART16_MD5='c285e952585a260478c2d31f29448745' ARCHIVE_BASE_PATCH4_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-17.bin' ARCHIVE_BASE_PATCH4_0_PART17_MD5='d6fb24e9f9781f4f72c5435634ac6ac7' ARCHIVE_BASE_PATCH4_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-18.bin' ARCHIVE_BASE_PATCH4_0_PART18_MD5='c05f0ef6d178843fb0da80753752b5b5' ARCHIVE_BASE_PATCH4_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-19.bin' ARCHIVE_BASE_PATCH4_0_PART19_MD5='626615ae36a91d6f06b66f82090725e7' ARCHIVE_BASE_PATCH4_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-20.bin' ARCHIVE_BASE_PATCH4_0_PART20_MD5='e41563ed5af9e65893968dc4f3a3a11f' ARCHIVE_BASE_PATCH4_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-21.bin' ARCHIVE_BASE_PATCH4_0_PART21_MD5='f8c9ca01fa54f40c6720907a6754497c' ARCHIVE_BASE_PATCH4_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-22.bin' ARCHIVE_BASE_PATCH4_0_PART22_MD5='6c73b251f90ccdfc3478e36dd5c10ba2' ARCHIVE_BASE_PATCH4_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-23.bin' ARCHIVE_BASE_PATCH4_0_PART23_MD5='1b3b77c0ec4d9d0355964662ff82c9eb' ARCHIVE_BASE_PATCH4_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-24.bin' ARCHIVE_BASE_PATCH4_0_PART24_MD5='49538632c8eb659f017c3ae1a1698a1f' ARCHIVE_BASE_PATCH4_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-25.bin' ARCHIVE_BASE_PATCH4_0_PART25_MD5='6ee062ce652cb6606b9747f3ace8706e' ARCHIVE_BASE_PATCH4_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-26.bin' ARCHIVE_BASE_PATCH4_0_PART26_MD5='97fda2b27e9bf32387e17294f2dd05ed' ARCHIVE_BASE_PATCH4_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3956130_-_patch_patch4_hotfix3__(64bit)_(68995)-27.bin' ARCHIVE_BASE_PATCH4_0_PART27_MD5='c4e2eee7ea51aa41ba1fcd2544a7423c' ARCHIVE_BASE_PATCH4_0_SIZE='126864164' ARCHIVE_BASE_PATCH4_0_VERSION='4.1.1.3956130-gog68995' ARCHIVE_BASE_PATCH3_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008).exe' ARCHIVE_BASE_PATCH3_0_MD5='e2da307eb714d2e746048e8fb7d646a4' ARCHIVE_BASE_PATCH3_0_TYPE='innosetup' ARCHIVE_BASE_PATCH3_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-1.bin' ARCHIVE_BASE_PATCH3_0_PART1_MD5='c1f97403bf1b7aef31aac7ac8a05c52c' ARCHIVE_BASE_PATCH3_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-2.bin' ARCHIVE_BASE_PATCH3_0_PART2_MD5='f758ba3cb8c8b92ec3f87d1b923b7c11' ARCHIVE_BASE_PATCH3_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-3.bin' ARCHIVE_BASE_PATCH3_0_PART3_MD5='0a74176898bbe90ba6df280d002c608f' ARCHIVE_BASE_PATCH3_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-4.bin' ARCHIVE_BASE_PATCH3_0_PART4_MD5='2839a599a52492bf7fc7e21a0f948792' ARCHIVE_BASE_PATCH3_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-5.bin' ARCHIVE_BASE_PATCH3_0_PART5_MD5='e6662560a171acf293da789ba73e66a5' ARCHIVE_BASE_PATCH3_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-6.bin' ARCHIVE_BASE_PATCH3_0_PART6_MD5='3fa48d0c2cbdb8d2bed0d7b1120e4807' ARCHIVE_BASE_PATCH3_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-7.bin' ARCHIVE_BASE_PATCH3_0_PART7_MD5='435d3b387cbd7f77149f4fd48e97172e' ARCHIVE_BASE_PATCH3_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-8.bin' ARCHIVE_BASE_PATCH3_0_PART8_MD5='3e6a2f03e58ec7067c9cebffc913144d' ARCHIVE_BASE_PATCH3_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-9.bin' ARCHIVE_BASE_PATCH3_0_PART9_MD5='9560938b6aa92559096c7db471c437fa' ARCHIVE_BASE_PATCH3_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-10.bin' ARCHIVE_BASE_PATCH3_0_PART10_MD5='42e9165bd6665754052936cf5949269a' ARCHIVE_BASE_PATCH3_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-11.bin' ARCHIVE_BASE_PATCH3_0_PART11_MD5='b536ed99f08843c8bb6c7af50f3a14b9' ARCHIVE_BASE_PATCH3_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-12.bin' ARCHIVE_BASE_PATCH3_0_PART12_MD5='86a43810f51761fd09a653f1b89e9936' ARCHIVE_BASE_PATCH3_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-13.bin' ARCHIVE_BASE_PATCH3_0_PART13_MD5='83d3432202ca5a775952afc001086a03' ARCHIVE_BASE_PATCH3_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-14.bin' ARCHIVE_BASE_PATCH3_0_PART14_MD5='db7dcdd36279cf06e014b3d51d06e978' ARCHIVE_BASE_PATCH3_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-15.bin' ARCHIVE_BASE_PATCH3_0_PART15_MD5='9e472641d3c34199dfeba8851f7bdcf5' ARCHIVE_BASE_PATCH3_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-16.bin' ARCHIVE_BASE_PATCH3_0_PART16_MD5='1f7d14f63ecafdbbcd727de7ac38223c' ARCHIVE_BASE_PATCH3_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-17.bin' ARCHIVE_BASE_PATCH3_0_PART17_MD5='f1359a59c61a955f0620febc487a1269' ARCHIVE_BASE_PATCH3_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-18.bin' ARCHIVE_BASE_PATCH3_0_PART18_MD5='bfd969ab39637c49b64f7cfaa1f20804' ARCHIVE_BASE_PATCH3_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-19.bin' ARCHIVE_BASE_PATCH3_0_PART19_MD5='e8eae4f90a2cea5bcbdee08a1b712aef' ARCHIVE_BASE_PATCH3_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-20.bin' ARCHIVE_BASE_PATCH3_0_PART20_MD5='b88525457e4b590b78c34f40e1ba60f0' ARCHIVE_BASE_PATCH3_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-21.bin' ARCHIVE_BASE_PATCH3_0_PART21_MD5='d74266b799d4d911838cf9173c87fda6' ARCHIVE_BASE_PATCH3_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-22.bin' ARCHIVE_BASE_PATCH3_0_PART22_MD5='75b917c7abbf4483a82b56b5395e39c0' ARCHIVE_BASE_PATCH3_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-23.bin' ARCHIVE_BASE_PATCH3_0_PART23_MD5='bd518745958733216fb50f9fce5cb494' ARCHIVE_BASE_PATCH3_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-24.bin' ARCHIVE_BASE_PATCH3_0_PART24_MD5='404946034a46864f9172c7b9cf13002b' ARCHIVE_BASE_PATCH3_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-25.bin' ARCHIVE_BASE_PATCH3_0_PART25_MD5='f6255a2a3130642c3f96fd43252e9dec' ARCHIVE_BASE_PATCH3_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-26.bin' ARCHIVE_BASE_PATCH3_0_PART26_MD5='d2bbcc99329999915b2b478e9d9218e4' ARCHIVE_BASE_PATCH3_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-27.bin' ARCHIVE_BASE_PATCH3_0_PART27_MD5='3e8cc3d3b3028f065e73296dcc714712' ARCHIVE_BASE_PATCH3_0_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-28.bin' ARCHIVE_BASE_PATCH3_0_PART28_MD5='1ad835b73e36f5fd9706f5a3e3ccd276' ARCHIVE_BASE_PATCH3_0_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-29.bin' ARCHIVE_BASE_PATCH3_0_PART29_MD5='27564ccea2ef5b369feee3b246631060' ARCHIVE_BASE_PATCH3_0_PART30_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-30.bin' ARCHIVE_BASE_PATCH3_0_PART30_MD5='c3729516a6fb77dad2f760ef9d21bb9a' ARCHIVE_BASE_PATCH3_0_PART31_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3767641_-_patch_patch3_hotfix3__(64bit)_(68008)-31.bin' ARCHIVE_BASE_PATCH3_0_PART31_MD5='5fb4854aaac674f56a563dc4616b8792' ARCHIVE_BASE_PATCH3_0_SIZE='156835644' ARCHIVE_BASE_PATCH3_0_VERSION='4.1.1.3767641-gog68008' ARCHIVE_BASE_PATCH2_0_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336).exe' ARCHIVE_BASE_PATCH2_0_MD5='6eeac06fdc264d09052dd52a5d8f85fb' ARCHIVE_BASE_PATCH2_0_TYPE='innosetup' ARCHIVE_BASE_PATCH2_0_PART1_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-1.bin' ARCHIVE_BASE_PATCH2_0_PART1_MD5='a8ac39fc4ddd9dc8c8b451ddceb2bed7' ARCHIVE_BASE_PATCH2_0_PART2_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-2.bin' ARCHIVE_BASE_PATCH2_0_PART2_MD5='1e1806b014056b87e1d8d38310d27843' ARCHIVE_BASE_PATCH2_0_PART3_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-3.bin' ARCHIVE_BASE_PATCH2_0_PART3_MD5='3caaa1250e79563a94689b6cc7777226' ARCHIVE_BASE_PATCH2_0_PART4_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-4.bin' ARCHIVE_BASE_PATCH2_0_PART4_MD5='c73405adb39664c2580444be4d8f1e77' ARCHIVE_BASE_PATCH2_0_PART5_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-5.bin' ARCHIVE_BASE_PATCH2_0_PART5_MD5='d380505dfa53dfda7cfd446781cadc1e' ARCHIVE_BASE_PATCH2_0_PART6_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-6.bin' ARCHIVE_BASE_PATCH2_0_PART6_MD5='bbd932a09811206b178cbaaa3e1961f4' ARCHIVE_BASE_PATCH2_0_PART7_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-7.bin' ARCHIVE_BASE_PATCH2_0_PART7_MD5='9096d0e0d58509b010366140d74d0387' ARCHIVE_BASE_PATCH2_0_PART8_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-8.bin' ARCHIVE_BASE_PATCH2_0_PART8_MD5='bbfceef39180a8066727f23c9e494f9a' ARCHIVE_BASE_PATCH2_0_PART9_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-9.bin' ARCHIVE_BASE_PATCH2_0_PART9_MD5='5a118078fc27f3aa102023ef6f0f8b38' ARCHIVE_BASE_PATCH2_0_PART10_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-10.bin' ARCHIVE_BASE_PATCH2_0_PART10_MD5='0f221f4cb8c70bec4a76f605842e4b5a' ARCHIVE_BASE_PATCH2_0_PART11_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-11.bin' ARCHIVE_BASE_PATCH2_0_PART11_MD5='03bb396186275434f3630dcaea22f847' ARCHIVE_BASE_PATCH2_0_PART12_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-12.bin' ARCHIVE_BASE_PATCH2_0_PART12_MD5='94e6c7a3957f0692587dd1e17e57bd6b' ARCHIVE_BASE_PATCH2_0_PART13_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-13.bin' ARCHIVE_BASE_PATCH2_0_PART13_MD5='0e492c7302256ec45e5f01cb6d86f194' ARCHIVE_BASE_PATCH2_0_PART14_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-14.bin' ARCHIVE_BASE_PATCH2_0_PART14_MD5='2d476b947cd51d52d5406eb22772b370' ARCHIVE_BASE_PATCH2_0_PART15_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-15.bin' ARCHIVE_BASE_PATCH2_0_PART15_MD5='932de8332ecef4512f15942f306e35d9' ARCHIVE_BASE_PATCH2_0_PART16_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-16.bin' ARCHIVE_BASE_PATCH2_0_PART16_MD5='e7fd6a1d8b1191726d29beeb671db49a' ARCHIVE_BASE_PATCH2_0_PART17_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-17.bin' ARCHIVE_BASE_PATCH2_0_PART17_MD5='586951c282b7937106f303a80911245b' ARCHIVE_BASE_PATCH2_0_PART18_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-18.bin' ARCHIVE_BASE_PATCH2_0_PART18_MD5='f9a7d5f8dacd3469bdb79126bd4838e7' ARCHIVE_BASE_PATCH2_0_PART19_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-19.bin' ARCHIVE_BASE_PATCH2_0_PART19_MD5='9099f94ffe643239596ce857c1720e08' ARCHIVE_BASE_PATCH2_0_PART20_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-20.bin' ARCHIVE_BASE_PATCH2_0_PART20_MD5='9e20afbabdaea6d69bc51045da768f69' ARCHIVE_BASE_PATCH2_0_PART21_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-21.bin' ARCHIVE_BASE_PATCH2_0_PART21_MD5='4230156c15022f0634edd98542020683' ARCHIVE_BASE_PATCH2_0_PART22_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-22.bin' ARCHIVE_BASE_PATCH2_0_PART22_MD5='0471d8d45cd5eb7accdd16c563c1e972' ARCHIVE_BASE_PATCH2_0_PART23_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-23.bin' ARCHIVE_BASE_PATCH2_0_PART23_MD5='50d0b713eaa36adaf530f9bf87600baa' ARCHIVE_BASE_PATCH2_0_PART24_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-24.bin' ARCHIVE_BASE_PATCH2_0_PART24_MD5='05c0bdfd7c1b01083d511054f6a9f23a' ARCHIVE_BASE_PATCH2_0_PART25_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-25.bin' ARCHIVE_BASE_PATCH2_0_PART25_MD5='96141571c42a53a9bf78960e4c7d83ab' ARCHIVE_BASE_PATCH2_0_PART26_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-26.bin' ARCHIVE_BASE_PATCH2_0_PART26_MD5='3e23b9e016c006fae2c3c60a5af44a47' ARCHIVE_BASE_PATCH2_0_PART27_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-27.bin' ARCHIVE_BASE_PATCH2_0_PART27_MD5='b50cb9a55312f948909ee57c6ed09469' ARCHIVE_BASE_PATCH2_0_PART28_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-28.bin' ARCHIVE_BASE_PATCH2_0_PART28_MD5='24910c2975faf1762a177df3cb95c593' ARCHIVE_BASE_PATCH2_0_PART29_NAME='setup_baldurs_gate_3_release_-_v4.1.1.3700362_-_patch_patch2_hotfix2__(64bit)_(67336)-29.bin' ARCHIVE_BASE_PATCH2_0_PART29_MD5='2e4c222aabc70fd6068ad8834aaa7b2c' ARCHIVE_BASE_PATCH2_0_SIZE='145464212' ARCHIVE_BASE_PATCH2_0_VERSION='4.1.1.3700362-gog67336' ARCHIVE_BASE_PATCH1_0_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052).exe' ARCHIVE_BASE_PATCH1_0_MD5='09401cf3b960c56032b9c8d5492d2316' ARCHIVE_BASE_PATCH1_0_TYPE='innosetup' ARCHIVE_BASE_PATCH1_0_PART1_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-1.bin' ARCHIVE_BASE_PATCH1_0_PART1_MD5='f3a8409e3f4dd3db98bc5df6ce0742f5' ARCHIVE_BASE_PATCH1_0_PART2_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-2.bin' ARCHIVE_BASE_PATCH1_0_PART2_MD5='9135194fb160d8d8fb35aac207b668b3' ARCHIVE_BASE_PATCH1_0_PART3_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-3.bin' ARCHIVE_BASE_PATCH1_0_PART3_MD5='489c13ad3282beb71aa3de4db880fade' ARCHIVE_BASE_PATCH1_0_PART4_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-4.bin' ARCHIVE_BASE_PATCH1_0_PART4_MD5='24caf894181a2d7be008bfd6bce865a6' ARCHIVE_BASE_PATCH1_0_PART5_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-5.bin' ARCHIVE_BASE_PATCH1_0_PART5_MD5='17a4f372bd3d56a3b531eb2bf1c9f14d' ARCHIVE_BASE_PATCH1_0_PART6_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-6.bin' ARCHIVE_BASE_PATCH1_0_PART6_MD5='5897dad5e3de1419b13ea78ffb200510' ARCHIVE_BASE_PATCH1_0_PART7_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-7.bin' ARCHIVE_BASE_PATCH1_0_PART7_MD5='f652711efa1f8328d097be81527260f4' ARCHIVE_BASE_PATCH1_0_PART8_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-8.bin' ARCHIVE_BASE_PATCH1_0_PART8_MD5='748370642aefced9eb5647cc4e431828' ARCHIVE_BASE_PATCH1_0_PART9_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-9.bin' ARCHIVE_BASE_PATCH1_0_PART9_MD5='01e5e27b88c2d9a610136fafdb4b8f02' ARCHIVE_BASE_PATCH1_0_PART10_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-10.bin' ARCHIVE_BASE_PATCH1_0_PART10_MD5='084d3daf2161b8054e5a4d58fd859e80' ARCHIVE_BASE_PATCH1_0_PART11_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-11.bin' ARCHIVE_BASE_PATCH1_0_PART11_MD5='6a2e64ba408cfacc1cf4d4c87ef0ef7b' ARCHIVE_BASE_PATCH1_0_PART12_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-12.bin' ARCHIVE_BASE_PATCH1_0_PART12_MD5='c7936ac74791438308efb79b748a1a9e' ARCHIVE_BASE_PATCH1_0_PART13_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-13.bin' ARCHIVE_BASE_PATCH1_0_PART13_MD5='262a4d8e4c34d382a6220acf44205b84' ARCHIVE_BASE_PATCH1_0_PART14_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-14.bin' ARCHIVE_BASE_PATCH1_0_PART14_MD5='ccf42f75bdd18740ddc3680ece6c06b2' ARCHIVE_BASE_PATCH1_0_PART15_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-15.bin' ARCHIVE_BASE_PATCH1_0_PART15_MD5='2e2558d1b7c1d5252afcb6a0542b3848' ARCHIVE_BASE_PATCH1_0_PART16_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-16.bin' ARCHIVE_BASE_PATCH1_0_PART16_MD5='a7d40cc96e64cdb85aeccc2471900acc' ARCHIVE_BASE_PATCH1_0_PART17_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-17.bin' ARCHIVE_BASE_PATCH1_0_PART17_MD5='53b77f130bc641baf7e26007f9fc3849' ARCHIVE_BASE_PATCH1_0_PART18_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-18.bin' ARCHIVE_BASE_PATCH1_0_PART18_MD5='26ecb989f6d025bb4ab5ea726cacb496' ARCHIVE_BASE_PATCH1_0_PART19_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-19.bin' ARCHIVE_BASE_PATCH1_0_PART19_MD5='8f507b0da3729dba21989460f96d3781' ARCHIVE_BASE_PATCH1_0_PART20_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-20.bin' ARCHIVE_BASE_PATCH1_0_PART20_MD5='40493a3fb33da7202533823f1444b526' ARCHIVE_BASE_PATCH1_0_PART21_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-21.bin' ARCHIVE_BASE_PATCH1_0_PART21_MD5='8f2abd65aaaae133ac4e6233efda0654' ARCHIVE_BASE_PATCH1_0_PART22_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-22.bin' ARCHIVE_BASE_PATCH1_0_PART22_MD5='f5a21a6a93328adb55459b28d7096608' ARCHIVE_BASE_PATCH1_0_PART23_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-23.bin' ARCHIVE_BASE_PATCH1_0_PART23_MD5='0f2f3783421bbf5c7c714b0d99dc0bc2' ARCHIVE_BASE_PATCH1_0_PART24_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-24.bin' ARCHIVE_BASE_PATCH1_0_PART24_MD5='11ee20ad29f1dfa7ba9618664c974fa9' ARCHIVE_BASE_PATCH1_0_PART25_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-25.bin' ARCHIVE_BASE_PATCH1_0_PART25_MD5='4c93abd831b0469f2061f27b6ecaebe0' ARCHIVE_BASE_PATCH1_0_PART26_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-26.bin' ARCHIVE_BASE_PATCH1_0_PART26_MD5='610b63465163f61c5e645092800bc3d9' ARCHIVE_BASE_PATCH1_0_PART27_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-27.bin' ARCHIVE_BASE_PATCH1_0_PART27_MD5='9e81fa436fb596f0ae071ae1d7d660d6' ARCHIVE_BASE_PATCH1_0_PART28_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3669438_-_patch_patch1_data_fix_(64bit)_(67052)-28.bin' ARCHIVE_BASE_PATCH1_0_PART28_MD5='8581ed928d138c89a05d68a116684d7a' ARCHIVE_BASE_PATCH1_0_SIZE='140000000' ARCHIVE_BASE_PATCH1_0_VERSION='4.1.1.3669438-gog67052' ARCHIVE_BASE_PATCH0_0_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683).exe' ARCHIVE_BASE_PATCH0_0_MD5='986cbd346ca2444eba5ca65921557abc' ARCHIVE_BASE_PATCH0_0_TYPE='innosetup' ARCHIVE_BASE_PATCH0_0_PART1_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-1.bin' ARCHIVE_BASE_PATCH0_0_PART1_MD5='14c9146c4ef5c86dae1edcc4ffcf5953' ARCHIVE_BASE_PATCH0_0_PART2_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-2.bin' ARCHIVE_BASE_PATCH0_0_PART2_MD5='2768930a5a1f20998c087c483c298d4e' ARCHIVE_BASE_PATCH0_0_PART3_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-3.bin' ARCHIVE_BASE_PATCH0_0_PART3_MD5='f6de17882cf9c14bf4d9c35d1408b370' ARCHIVE_BASE_PATCH0_0_PART4_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-4.bin' ARCHIVE_BASE_PATCH0_0_PART4_MD5='57821851b52dbc96735e19ed4cea4412' ARCHIVE_BASE_PATCH0_0_PART5_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-5.bin' ARCHIVE_BASE_PATCH0_0_PART5_MD5='2699c17f29e4385685fedf8f4c722942' ARCHIVE_BASE_PATCH0_0_PART6_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-6.bin' ARCHIVE_BASE_PATCH0_0_PART6_MD5='dfda5cb12822ab47d0fbec331a3bf4e9' ARCHIVE_BASE_PATCH0_0_PART7_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-7.bin' ARCHIVE_BASE_PATCH0_0_PART7_MD5='a9c6c86ba6b752fdfe3b17e2bb671da9' ARCHIVE_BASE_PATCH0_0_PART8_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-8.bin' ARCHIVE_BASE_PATCH0_0_PART8_MD5='6b8124c98e89a4476fd5ebc5fb6eac4e' ARCHIVE_BASE_PATCH0_0_PART9_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-9.bin' ARCHIVE_BASE_PATCH0_0_PART9_MD5='0b40958f3d74bc799e39c0b6757dd210' ARCHIVE_BASE_PATCH0_0_PART10_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-10.bin' ARCHIVE_BASE_PATCH0_0_PART10_MD5='274034a44d58e127f845664c7ba290ee' ARCHIVE_BASE_PATCH0_0_PART11_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-11.bin' ARCHIVE_BASE_PATCH0_0_PART11_MD5='2f4d7c82fb650731a2e215d28b4aefc8' ARCHIVE_BASE_PATCH0_0_PART12_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-12.bin' ARCHIVE_BASE_PATCH0_0_PART12_MD5='bd3a022fe59b2089d97e5f3905bc3962' ARCHIVE_BASE_PATCH0_0_PART13_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-13.bin' ARCHIVE_BASE_PATCH0_0_PART13_MD5='712abe64604b05e2fbbc7bd9aacb1413' ARCHIVE_BASE_PATCH0_0_PART14_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-14.bin' ARCHIVE_BASE_PATCH0_0_PART14_MD5='4dfd9e4a56ce1d63293a0e7bcc66e7a4' ARCHIVE_BASE_PATCH0_0_PART15_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-15.bin' ARCHIVE_BASE_PATCH0_0_PART15_MD5='512fa657892ca991d3f626e21f2d6821' ARCHIVE_BASE_PATCH0_0_PART16_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-16.bin' ARCHIVE_BASE_PATCH0_0_PART16_MD5='e364b2302d2e23e79478eceda835b95f' ARCHIVE_BASE_PATCH0_0_PART17_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-17.bin' ARCHIVE_BASE_PATCH0_0_PART17_MD5='0623bd7550eb187d569ee66cf2bad6c1' ARCHIVE_BASE_PATCH0_0_PART18_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-18.bin' ARCHIVE_BASE_PATCH0_0_PART18_MD5='886a04f956eb69f6a644dd9faff319d0' ARCHIVE_BASE_PATCH0_0_PART19_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-19.bin' ARCHIVE_BASE_PATCH0_0_PART19_MD5='c6d3c5c670066872c7e0cf78162d96ad' ARCHIVE_BASE_PATCH0_0_PART20_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-20.bin' ARCHIVE_BASE_PATCH0_0_PART20_MD5='6517b23d62e752d5f28e607157690f9b' ARCHIVE_BASE_PATCH0_0_PART21_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-21.bin' ARCHIVE_BASE_PATCH0_0_PART21_MD5='e80bbbd92fa5992792679bf0f46d32ad' ARCHIVE_BASE_PATCH0_0_PART22_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-22.bin' ARCHIVE_BASE_PATCH0_0_PART22_MD5='16c82788a087f3ad44939854aed5b812' ARCHIVE_BASE_PATCH0_0_PART23_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-23.bin' ARCHIVE_BASE_PATCH0_0_PART23_MD5='ee096b68eb210b732348d31e940702ea' ARCHIVE_BASE_PATCH0_0_PART24_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-24.bin' ARCHIVE_BASE_PATCH0_0_PART24_MD5='df2a50351cc593ebaf7316afe7a0ae72' ARCHIVE_BASE_PATCH0_0_PART25_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-25.bin' ARCHIVE_BASE_PATCH0_0_PART25_MD5='1db116cd2f589addfa9cf258429c085b' ARCHIVE_BASE_PATCH0_0_PART26_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-26.bin' ARCHIVE_BASE_PATCH0_0_PART26_MD5='f937efd190dc0a93b918061f97d24ba9' ARCHIVE_BASE_PATCH0_0_PART27_NAME='setup_baldurs_gate_3_live_-_v4.1.1.3635601_-_patch0_hotfix2.1_(64bit)_(66683)-27.bin' ARCHIVE_BASE_PATCH0_0_PART27_MD5='2c61a47bea3ed93960382139ba15c6b7' ARCHIVE_BASE_PATCH0_0_SIZE='131000000' ARCHIVE_BASE_PATCH0_0_VERSION='4.1.1.3635601-gog66683' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bin' CONTENT_GAME_L10N_VOICES_FILES=' data/localization/voicemeta.pak' CONTENT_GAME_L10N_COMMON_FILES=' data/localization/english.pak data/localization/english_animations.pak' CONTENT_GAME_L10N_FR_FILES=' data/localization/french' CONTENT_GAME_DATA_MODELS_FILES=' data/models.pak' CONTENT_GAME_DATA_SOUNDS_FILES=' data/sharedsoundbanks.pak' CONTENT_GAME_DATA_TEXTURES_1_FILES=' data/gustav_textures.pak data/textures.pak data/textures_1.pak' CONTENT_GAME_DATA_TEXTURES_2_FILES=' data/textures_2.pak data/textures_3.pak data/virtualtextures.pak' CONTENT_GAME_DATA_TEXTURES_3_FILES=' data/virtualtextures_1.pak data/virtualtextures_2.pak' CONTENT_GAME_DATA_TEXTURES_4_FILES=' data/virtualtextures_3.pak data/virtualtextures_4.pak' CONTENT_GAME_DATA_TEXTURES_5_FILES=' data/virtualtextures_5.pak data/virtualtextures_6.pak' CONTENT_GAME_DATA_TEXTURES_6_FILES=' data/virtualtextures_7.pak data/virtualtextures_8.pak' CONTENT_GAME_DATA_TEXTURES_7_FILES=' data/virtualtextures_9.pak data/virtualtextures_10.pak' CONTENT_GAME_DATA_TEXTURES_8_FILES=' data/virtualtextures_11.pak data/virtualtextures_12.pak' CONTENT_GAME_DATA_TEXTURES_9_FILES=' data/virtualtextures_13.pak data/virtualtextures_14.pak' CONTENT_GAME_DATA_TEXTURES_10_FILES=' data/virtualtextures_15.pak data/virtualtextures_16.pak' CONTENT_GAME_DATA_TEXTURES_11_FILES=' data/virtualtextures_17.pak data/virtualtextures_18.pak' CONTENT_GAME_DATA_TEXTURES_12_FILES=' data/virtualtextures_*.pak' CONTENT_GAME_DATA_PATCH0_FILES=' data/patch0_hotfix*.pak' CONTENT_GAME_DATA_PATCH1_FILES=' data/patch1.pak' CONTENT_GAME_DATA_PATCH2_FILES=' data/patch2.pak data/patch2_hotfix*.pak' CONTENT_GAME_DATA_PATCH3_FILES=' data/patch3_hotfix*.pak' CONTENT_GAME_DATA_PATCH4_FILES=' data/patch4_hotfix*.pak' CONTENT_GAME_DATA_PATCH5_FILES=' data/patch5_hotfix*.pak' CONTENT_GAME_DATA_PATCH6_FILES=' data/patch6_hotfix*.pak' CONTENT_GAME_DATA_PATCH7_FILES=' data/patch7_hotfix*.pak' CONTENT_GAME_DATA_FILES=' data/assets.pak data/day0.pak data/diceset??.pak data/effects.pak data/engine.pak data/engineshaders.pak data/game.pak data/gameplatform.pak data/gustav_navcloud.pak data/gustav_video.pak data/icons.pak data/lowtex.pak data/materials.pak data/shared.pak' HUGE_FILES_L10N_VOICES=' data/localization/voice.pak' HUGE_FILES_DATA=' data/gustav.pak' ## The size of sharedsounds.pak goes over the .deb size limit only with patch 5, ## but ./play.it has no problem "splitting" a file into a single chunk, ## at the cost of more time spent in post-install scripts. ## TODO: The library-side implementation of huge files should probably skip files under the size limit, ## putting the whole file into a dedicated package without "splitting" it into a single chunk first. HUGE_FILES_DATA_SOUNDS=' data/sharedsounds.pak' ## The _PATCH3 suffix is doubled so this matches: ## PKG_DATA_PATCH3 in the context of ARCHIVE_BASE_PATCH3 ## but does not match: ## PKG_DATA in the context of ARCHIVE_BASE_PATCH3. HUGE_FILES_DATA_PATCH3_PATCH3=' data/patch3.pak' WINE_PERSISTENT_DIRECTORIES=" users/\${USER}/AppData/Local/Larian Studios/Baldur's Gate 3" ## mfc140u.dll is required. ## TODO: Check if this is still required with current WINE WINE_WINETRICKS_VERBS='mfc140' APP_MAIN_EXE='bin/bg3.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' PACKAGES_LIST_PATCH0="$PACKAGES_LIST_BASE PKG_DATA_PATCH0" PACKAGES_LIST_PATCH1="$PACKAGES_LIST_BASE PKG_DATA_PATCH0 PKG_DATA_PATCH1" PACKAGES_LIST_PATCH2="$PACKAGES_LIST_BASE PKG_DATA_PATCH0 PKG_DATA_PATCH1 PKG_DATA_PATCH2" PACKAGES_LIST_PATCH3="$PACKAGES_LIST_BASE PKG_DATA_PATCH0 PKG_DATA_PATCH1 PKG_DATA_PATCH2 PKG_DATA_PATCH3" PACKAGES_LIST_PATCH4="$PACKAGES_LIST_BASE PKG_DATA_PATCH4" PACKAGES_LIST_PATCH5="$PACKAGES_LIST_BASE PKG_DATA_TEXTURES_12 PKG_DATA_PATCH5" PACKAGES_LIST_PATCH6="$PACKAGES_LIST_BASE PKG_DATA_TEXTURES_12 PKG_DATA_PATCH6" PACKAGES_LIST_PATCH7="$PACKAGES_LIST_BASE PKG_DATA_TEXTURES_12 PKG_DATA_PATCH7" PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_EN_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_FR_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_EN_DESCRIPTION='English localization' PKG_L10N_FR_DESCRIPTION='French localization' PKG_L10N_DEPENDENCIES_SIBLINGS=' PKG_L10N_COMMON PKG_L10N_VOICES' PKG_L10N_EN_DEPENDENCIES_SIBLINGS="$PKG_L10N_DEPENDENCIES_SIBLINGS" PKG_L10N_FR_DEPENDENCIES_SIBLINGS="$PKG_L10N_DEPENDENCIES_SIBLINGS" PKG_L10N_COMMON_ID="${PKG_L10N_ID}-common" PKG_L10N_COMMON_DESCRIPTION='localizations - shared files' PKG_L10N_VOICES_ID="${PKG_L10N_ID}-voices" PKG_L10N_VOICES_DESCRIPTION='localizations - voices' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_MODELS PKG_DATA_SOUNDS PKG_DATA_TEXTURES_1 PKG_DATA_TEXTURES_2 PKG_DATA_TEXTURES_3 PKG_DATA_TEXTURES_4 PKG_DATA_TEXTURES_5 PKG_DATA_TEXTURES_6 PKG_DATA_TEXTURES_7 PKG_DATA_TEXTURES_8 PKG_DATA_TEXTURES_9 PKG_DATA_TEXTURES_10 PKG_DATA_TEXTURES_11' PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH0="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_PATCH0" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH1="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_PATCH0 PKG_DATA_PATCH1" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH2="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_PATCH0 PKG_DATA_PATCH1 PKG_DATA_PATCH2" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH3="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_PATCH0 PKG_DATA_PATCH1 PKG_DATA_PATCH2 PKG_DATA_PATCH3" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH4="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_PATCH4" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH5="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_TEXTURES_12 PKG_DATA_PATCH5" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH6="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_TEXTURES_12 PKG_DATA_PATCH6" PKG_DATA_DEPENDENCIES_SIBLINGS_PATCH7="$PKG_DATA_DEPENDENCIES_SIBLINGS PKG_DATA_TEXTURES_12 PKG_DATA_PATCH7" PKG_DATA_MODELS_ID="${PKG_DATA_ID}-models" PKG_DATA_MODELS_DESCRIPTION="$PKG_DATA_DESCRIPTION - models" PKG_DATA_SOUNDS_ID="${PKG_DATA_ID}-sounds" PKG_DATA_SOUNDS_DESCRIPTION="$PKG_DATA_DESCRIPTION - sounds" PKG_DATA_TEXTURES_ID="${PKG_DATA_ID}-textures" PKG_DATA_TEXTURES_1_ID="${PKG_DATA_TEXTURES_ID}-1" PKG_DATA_TEXTURES_2_ID="${PKG_DATA_TEXTURES_ID}-2" PKG_DATA_TEXTURES_3_ID="${PKG_DATA_TEXTURES_ID}-3" PKG_DATA_TEXTURES_4_ID="${PKG_DATA_TEXTURES_ID}-4" PKG_DATA_TEXTURES_5_ID="${PKG_DATA_TEXTURES_ID}-5" PKG_DATA_TEXTURES_6_ID="${PKG_DATA_TEXTURES_ID}-6" PKG_DATA_TEXTURES_7_ID="${PKG_DATA_TEXTURES_ID}-7" PKG_DATA_TEXTURES_8_ID="${PKG_DATA_TEXTURES_ID}-8" PKG_DATA_TEXTURES_9_ID="${PKG_DATA_TEXTURES_ID}-9" PKG_DATA_TEXTURES_10_ID="${PKG_DATA_TEXTURES_ID}-10" PKG_DATA_TEXTURES_11_ID="${PKG_DATA_TEXTURES_ID}-11" PKG_DATA_TEXTURES_12_ID="${PKG_DATA_TEXTURES_ID}-12" PKG_DATA_TEXTURES_DESCRIPTION="$PKG_DATA_DESCRIPTION - textures" PKG_DATA_TEXTURES_1_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 1" PKG_DATA_TEXTURES_2_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 2" PKG_DATA_TEXTURES_3_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 3" PKG_DATA_TEXTURES_4_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 4" PKG_DATA_TEXTURES_5_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 5" PKG_DATA_TEXTURES_6_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 6" PKG_DATA_TEXTURES_7_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 7" PKG_DATA_TEXTURES_8_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 8" PKG_DATA_TEXTURES_9_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 9" PKG_DATA_TEXTURES_10_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 10" PKG_DATA_TEXTURES_11_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 11" PKG_DATA_TEXTURES_12_DESCRIPTION="$PKG_DATA_TEXTURES_DESCRIPTION - 12" PKG_DATA_PATCH0_ID="${PKG_DATA_ID}-patch0" PKG_DATA_PATCH1_ID="${PKG_DATA_ID}-patch1" PKG_DATA_PATCH2_ID="${PKG_DATA_ID}-patch2" PKG_DATA_PATCH3_ID="${PKG_DATA_ID}-patch3" PKG_DATA_PATCH4_ID="${PKG_DATA_ID}-patch4" PKG_DATA_PATCH5_ID="${PKG_DATA_ID}-patch5" PKG_DATA_PATCH6_ID="${PKG_DATA_ID}-patch6" PKG_DATA_PATCH7_ID="${PKG_DATA_ID}-patch7" PKG_DATA_PATCH0_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch0" PKG_DATA_PATCH1_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch1" PKG_DATA_PATCH2_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch2" PKG_DATA_PATCH3_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch3" PKG_DATA_PATCH4_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch4" PKG_DATA_PATCH5_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch5" PKG_DATA_PATCH6_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch6" PKG_DATA_PATCH7_DESCRIPTION="$PKG_DATA_DESCRIPTION - patch7" ## Archives patch0*.pak, patch1*.pak, patch2*.pak and patch3*.pak are dropped with the patch 4 release. PKG_DATA_PATCH4_PROVIDES=" $PKG_DATA_PATCH0_ID $PKG_DATA_PATCH1_ID $PKG_DATA_PATCH2_ID $PKG_DATA_PATCH3_ID ${PKG_DATA_PATCH3_ID}-chunk1 ${PKG_DATA_PATCH3_ID}-chunk2" ## Archives patch4*.pak are dropped with the patch 5 release. PKG_DATA_PATCH5_PROVIDES="$PKG_DATA_PATCH4_PROVIDES $PKG_DATA_PATCH4_ID" ## Archives patch5*.pak are dropped with the patch 6 release. PKG_DATA_PATCH6_PROVIDES="$PKG_DATA_PATCH5_PROVIDES $PKG_DATA_PATCH5_ID" ## Archives patch6*.pak are dropped with the patch 7 release. PKG_DATA_PATCH7_PROVIDES="$PKG_DATA_PATCH6_PROVIDES $PKG_DATA_PATCH6_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Generate localizations configuration l10n_config_source="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/data/localization/language.lsx" l10n_config_pattern='' l10n_config_destination_en="$(package_path 'PKG_L10N_EN')$(path_game_data)/data/localization/language.lsx" l10n_config_replacement_en='' mkdir --parents "$(dirname "$l10n_config_destination_en")" sed --expression="s;${l10n_config_pattern};${l10n_config_replacement_en};" \ "$l10n_config_source" > "$l10n_config_destination_en" l10n_config_destination_fr="$(package_path 'PKG_L10N_FR')$(path_game_data)/data/localization/language.lsx" l10n_config_replacement_fr='' mkdir --parents "$(dirname "$l10n_config_destination_fr")" sed --expression="s;${l10n_config_pattern};${l10n_config_replacement_fr};" \ "$l10n_config_source" > "$l10n_config_destination_fr" # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd bin $(wine_command) bg3.exe "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation case "$(messages_language)" in ('fr') message='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) message='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' ## English localization printf "$message" "$lang_en" ## Silence a ShellCheck false positive, word splitting is expected here ## SC2046 (warning): Quote this to prevent word splitting. # shellcheck disable=SC2046 print_instructions $(packages_list | sed 's/PKG_L10N_FR//') ## French localization printf "$message" "$lang_fr" ## Silence a ShellCheck false positive, word splitting is expected here ## SC2046 (warning): Quote this to prevent word splitting. # shellcheck disable=SC2046 print_instructions $(packages_list | sed 's/PKG_L10N_EN//') # Clean up working_directory_cleanup exit 0 games/play-ballisticng-expansions.sh0000755000000000000000000000315214471751340016641 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # BallisticNG expansions: # - Neon Nights ### script_version=20241230.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='ballisticng' GAME_NAME='BallisticNG' EXPANSION_ID_NEON='neon-nights' EXPANSION_NAME_NEON='Neon Nights' ARCHIVE_BASE_NEON_0_NAME='ballisticng_neon_nights_1_3_3_1_69502.sh' ARCHIVE_BASE_NEON_0_MD5='18897d4477a80a88afe3a05fa52cfee9' ARCHIVE_BASE_NEON_0_SIZE='100101' ARCHIVE_BASE_NEON_0_VERSION='1.3.3.1-gog69502' ARCHIVE_BASE_NEON_0_URL='https://www.gog.com/game/ballisticng_neon_nights' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' DLC' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-ballisticng.sh0000755000000000000000000000573014471751340014460 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # BallisticNG ### script_version=20241230.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='ballisticng' GAME_NAME='BallisticNG' ARCHIVE_BASE_0_NAME='ballisticng_1_3_3_1_69502.sh' ARCHIVE_BASE_0_MD5='4fd3dd5695e9f94523bb699df024dbee' ARCHIVE_BASE_0_SIZE='2749158' ARCHIVE_BASE_0_VERSION='1.3.3.1-gog69502' ARCHIVE_BASE_0_URL='https://www.gog.com/game/ballisticng' UNITY3D_NAME='BallisticNG' UNITY3D_PLUGINS=' cimgui.so libaudioplugin_phonon.so libphonon.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_BIN_FILES=' DedicatedServerExample.cfg SvrScripts' CONTENT_GAME_EXPANSION_TRACKS_FILES=' DLC/free extra tracks.cpd DLC/free extra tracks.cps' CONTENT_GAME_EXPANSION_VOICES_FILES=' User/Mods/Sounds/Legacy System Voices' CONTENT_GAME_MODDING_FILES=' Modding' CONTENT_DOC_DATA_FILES=' Legacy Track Creator Commands.txt' USER_PERSISTENT_DIRECTORIES=' User' USER_PERSISTENT_FILES=' DedicatedServerExample.cfg' APPLICATIONS_LIST=' APP_MAIN APP_SERVER' APP_SERVER_ID="${GAME_ID}-server" APP_SERVER_NAME="$GAME_NAME - Server" APP_SERVER_OPTIONS='-batchmode -nographics -logfile -svrcfg DedicatedServerExample.cfg' PACKAGES_LIST=' PKG_BIN PKG_EXPANSION_TRACKS PKG_EXPANSION_VOICES PKG_MODDING PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_EXPANSION_TRACKS_ID="${GAME_ID}-expansion-free-extra-tracks" PKG_EXPANSION_TRACKS_DESCRIPTION='expansion - free extra tracks' PKG_EXPANSION_TRACKS_DEPENDENCIES_SIBLINGS=' PKG_BIN' PKG_EXPANSION_VOICES_ID="${GAME_ID}-expansion-legacy-system-voices" PKG_EXPANSION_VOICES_DESCRIPTION='expansion - legacy system voices' PKG_EXPANSION_VOICES_DEPENDENCIES_SIBLINGS=' PKG_BIN' PKG_MODDING_ID="${GAME_ID}-modding" PKG_MODDING_DESCRIPTION='modding' PKG_MODDING_DEPENDENCIES_SIBLINGS=' PKG_BIN' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-bastion.sh0000755000000000000000000001042214471751340013616 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=20241027.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='bastion' GAME_NAME='Bastion' ARCHIVE_BASE_GOG_3_NAME='bastion_1_0_1747_initial_test_33876.sh' ARCHIVE_BASE_GOG_3_MD5='b4edf5e95e952a35bfde0c12959134ab' ARCHIVE_BASE_GOG_3_SIZE='1285709' ARCHIVE_BASE_GOG_3_VERSION='1.50436-gog33876' ARCHIVE_BASE_GOG_3_URL='https://www.gog.com/game/bastion' ARCHIVE_BASE_GOG_2_NAME='bastion_1_50436_29_08_2018_23317.sh' ARCHIVE_BASE_GOG_2_MD5='73c6b33c23232597bec30f211a46f73d' ARCHIVE_BASE_GOG_2_SIZE='1400000' ARCHIVE_BASE_GOG_2_VERSION='1.50436.20180829-gog23317' ARCHIVE_BASE_GOG_1_NAME='bastion_en_1_50436_23291.sh' ARCHIVE_BASE_GOG_1_MD5='59c2bbcf43cd9ba243d5fa1baa4a4b48' ARCHIVE_BASE_GOG_1_SIZE='1400000' ARCHIVE_BASE_GOG_1_VERSION='1.50436-gog23291' ARCHIVE_BASE_GOG_0_NAME='gog_bastion_2.0.0.1.sh' ARCHIVE_BASE_GOG_0_MD5='e5e6eefb4885b67abcfa201b1b3a9c48' ARCHIVE_BASE_GOG_0_SIZE='1300000' ARCHIVE_BASE_GOG_0_VERSION='1.2.20161020-gog2.0.0.1' ARCHIVE_BASE_HUMBLE_0_NAME='bastion-10162016-bin' ARCHIVE_BASE_HUMBLE_0_MD5='19fea173ff2da0f990f60bd5e7c3b237' ## This is a MojoSetup installer, not relying on Makeself. ARCHIVE_BASE_HUMBLE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_HUMBLE_0_SIZE='1253966' ARCHIVE_BASE_HUMBLE_0_VERSION='1.2.20161020-humble161019' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_GAME_MAIN_FILES=' Bastion.bmp Bastion.exe gamecontrollerdb.txt mono monomachineconfig monoconfig Content' CONTENT_DOC_MAIN_FILES=' Linux.README' ## Some Mono libraries are not provided by system packages. CONTENT_GAME0_MAIN_FILES=' FMOD.dll FNA.dll FNA.dll.config Lidgren.Network.dll MojoShader.dll MonoGame.Framework.Net.dll SDL2.dll' ## System-provided libmojoshader.so can not be used, as it triggers the following error: ## System.NullReferenceException: Object reference not set to an instance of an object ## cf. https://forge.dotslashplay.it/play.it/games/-/issues/653 CONTENT_LIBS_FILES=' libfmodex.so libmojoshader.so' CONTENT_LIBS_LIBS64_RELATIVE_PATH='lib64' CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_LIBS32_RELATIVE_PATH='lib' CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES" ## libSteamWrapper.so is required to prevent a crash of the Humble Bundle build, ## libsteam_api.so is required by libSteamWrapper.so. CONTENT_LIBS0_FILES=' libSteamWrapper.so libsteam_api.so' CONTENT_LIBS0_LIBS64_RELATIVE_PATH='lib64' CONTENT_LIBS0_LIBS64_FILES_HUMBLE="$CONTENT_LIBS0_FILES" CONTENT_LIBS0_LIBS32_RELATIVE_PATH='lib' CONTENT_LIBS0_LIBS32_FILES_HUMBLE="$CONTENT_LIBS0_FILES" APP_MAIN_EXE='Bastion.exe' APP_MAIN_ICON='Bastion.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS32 PKG_LIBS64' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libGL.so.1 libSDL2-2.0.so.0 libudev.so.1' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Xml.dll System.Xml.Linq.dll' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_MAIN' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-beyond-good-and-evil.sh0000755000000000000000000000764514471751340016077 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=20241021.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='beyond-good-and-evil' GAME_NAME='Beyond Good and Evil' ARCHIVE_BASE_0_NAME='setup_beyond_good_and_evil_2.1.0.9.exe' ARCHIVE_BASE_0_MD5='fdfa4b94cf02e24523b01c9d54568482' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='2195754' ARCHIVE_BASE_0_VERSION='1.0-gog2.1.0.9' ARCHIVE_BASE_0_URL='https://www.gog.com/game/beyond_good_and_evil' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' binkw32.dll bge.exe checkapplication.exe run.exe settingsapplication.exe' CONTENT_GAME0_BIN_PATH='sys' CONTENT_GAME0_BIN_FILES=' eax.dll' CONTENT_GAME_DATA_FILES=' bgemakingof.bik jade.spe sally_clean.bf' CONTENT_DOC_DATA_FILES=' manual.pdf readme.txt' USER_PERSISTENT_FILES=' sally.idx *.sav' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Ubisoft\Beyond Good & Evil\settingsapplication.INI' APP_MAIN_EXE='run.exe' APP_MAIN_ICON='bge.exe' ## Hide EAX library from the game, this helps avoiding some sound issues. ## The library should still be available to the settings application. APP_MAIN_PRERUN=' # Hide EAX library from the game, this helps avoiding some sound issues. rm --force eax.dll ' APP_SETTINGS_ID="${GAME_ID}-settings" APP_SETTINGS_NAME="${GAME_NAME} - settings" APP_SETTINGS_CAT='Settings' APP_SETTINGS_EXE='settingsapplication.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Set install path in registry install_path="C:\\\\${GAME_ID}" registry_dump_install_file='registry-dumps/install-path.reg' registry_dump_install_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\Ubisoft\Beyond Good & Evil] "Install path"="'"${install_path}"'"' CONTENT_GAME_BIN_FILES="${CONTENT_GAME_BIN_FILES:-} $registry_dump_install_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_install_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Automatically spawn game settings window on first launch ## Using desktop_field_exec here ensures that we get a path already escaped if required. settings_cmd=$(desktop_field_exec 'APP_SETTINGS') APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Automatically spawn game settings window on first launch settings_registry_key='\''HKEY_CURRENT_USER\Software\Ubisoft\Beyond Good & Evil\settingsapplication.INI'\'' settings_registry_dump="${REGEDIT_DUMPS_WINEPREFIX_PATH}/$(regedit_convert_key_to_path "$settings_registry_key")" if [ ! -e "$settings_registry_dump" ]; then '"${settings_cmd}"' exit 0 fi' # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Set install path in registry. mkdir --parents "$(dirname "$registry_dump_install_file")" printf '%s' "$registry_dump_install_content" | \ iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_install_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-blacksad-under-the-skin.sh0000755000000000000000000001056314471751340016564 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Blacksad: Under the Skin ### script_version=20241230.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='blacksad-under-the-skin' GAME_NAME='Blacksad: Under the Skin' ARCHIVE_BASE_2_NAME='setup_blacksad_under_the_skin_20270705_blacksad_patch_(74700).exe' ARCHIVE_BASE_2_MD5='70a5fc8fb6321cf832154a6db74366f5' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_blacksad_under_the_skin_20270705_blacksad_patch_(74700)-1.bin' ARCHIVE_BASE_2_PART1_MD5='0d258ccdb79b34e9124108c73a18b49f' ARCHIVE_BASE_2_PART2_NAME='setup_blacksad_under_the_skin_20270705_blacksad_patch_(74700)-2.bin' ARCHIVE_BASE_2_PART2_MD5='3ef508b9e836742dc5ead2519799b5b5' ARCHIVE_BASE_2_PART3_NAME='setup_blacksad_under_the_skin_20270705_blacksad_patch_(74700)-3.bin' ARCHIVE_BASE_2_PART3_MD5='c0a9371f54b7dd6150ecdf4d7f8c9a09' ARCHIVE_BASE_2_PART4_NAME='setup_blacksad_under_the_skin_20270705_blacksad_patch_(74700)-4.bin' ARCHIVE_BASE_2_PART4_MD5='5d9e0d6b7b1af4c423f44e599ce70fa1' ARCHIVE_BASE_2_SIZE='15210283' ## "20270705" is most probably a typo for "20240705". ARCHIVE_BASE_2_VERSION='2024.07.05-gog74700' ARCHIVE_BASE_2_URL='https://www.gog.com/game/blacksad_under_the_skin' ARCHIVE_BASE_1_NAME='setup_blacksad_under_the_skin_20240621_(74269).exe' ARCHIVE_BASE_1_MD5='9e1bafb70073291b5bbf554ba9f48cb7' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_blacksad_under_the_skin_20240621_(74269)-1.bin' ARCHIVE_BASE_1_PART1_MD5='19b038f25821bb10fe8439af45db294b' ARCHIVE_BASE_1_PART2_NAME='setup_blacksad_under_the_skin_20240621_(74269)-2.bin' ARCHIVE_BASE_1_PART2_MD5='9085f255243fd1eddc058ded6a69da97' ARCHIVE_BASE_1_PART3_NAME='setup_blacksad_under_the_skin_20240621_(74269)-3.bin' ARCHIVE_BASE_1_PART3_MD5='14e9c32b5fbb26a4c004cca8175dfd42' ARCHIVE_BASE_1_PART4_NAME='setup_blacksad_under_the_skin_20240621_(74269)-4.bin' ARCHIVE_BASE_1_PART4_MD5='b1f14b3ae72154f77f0905f1c51e5bcb' ARCHIVE_BASE_1_SIZE='15208271' ARCHIVE_BASE_1_VERSION='2024.06.21-gog74269' ARCHIVE_BASE_0_NAME='setup_blacksad_under_the_skin_1.0.5_12210.2935.2020040301_(37312).exe' ARCHIVE_BASE_0_MD5='9c9211aac30170bf4ac85950094f99a2' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_blacksad_under_the_skin_1.0.5_12210.2935.2020040301_(37312)-1.bin' ARCHIVE_BASE_0_PART1_MD5='0d21ed49ef3377b4816ae364cbb5eee1' ARCHIVE_BASE_0_PART2_NAME='setup_blacksad_under_the_skin_1.0.5_12210.2935.2020040301_(37312)-2.bin' ARCHIVE_BASE_0_PART2_MD5='58e82951055a5c863cd804f2421e729f' ARCHIVE_BASE_0_PART3_NAME='setup_blacksad_under_the_skin_1.0.5_12210.2935.2020040301_(37312)-3.bin' ARCHIVE_BASE_0_PART3_MD5='acf9dc21ffa4d483b124561e5b19633d' ARCHIVE_BASE_0_PART4_NAME='setup_blacksad_under_the_skin_1.0.5_12210.2935.2020040301_(37312)-4.bin' ARCHIVE_BASE_0_PART4_MD5='d1c80d50a67c2a4212e9898416193562' ARCHIVE_BASE_0_SIZE='16000000' ARCHIVE_BASE_0_VERSION='1.0.5-gog37312' UNITY3D_NAME='blacksad' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_ASSETS_FILES=" ${UNITY3D_NAME}_data/streamingassets" WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/PenduloStudios/Blacksad' PACKAGES_LIST=' PKG_BIN PKG_DATA_ASSETS PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_ASSETS' PKG_DATA_ASSETS_ID="${PKG_DATA_ID}-assets" PKG_DATA_ASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - assets" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-blackwell-series.sh0000755000000000000000000002712014471751340015412 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=20250211.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' 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_7_NAME='blackwell_legacy_4_0_79895.sh' ARCHIVE_BASE_BLACKWELL1_7_MD5='3606c861a4d62a55f8a451a9d07e3b1b' ARCHIVE_BASE_BLACKWELL1_7_SIZE='312096' ARCHIVE_BASE_BLACKWELL1_7_VERSION='4.0-gog79895' ARCHIVE_BASE_BLACKWELL1_7_URL='https://www.gog.com/game/blackwell_bundle' ARCHIVE_BASE_BLACKWELL1_6_NAME='blackwell_legacy_3_7_76434.sh' ARCHIVE_BASE_BLACKWELL1_6_MD5='2cfc73a83548212940a995ab4b01dd50' ARCHIVE_BASE_BLACKWELL1_6_SIZE='312095' ARCHIVE_BASE_BLACKWELL1_6_VERSION='3.7-gog76434' ARCHIVE_BASE_BLACKWELL1_5_NAME='blackwell_legacy_3_5_71786.sh' ARCHIVE_BASE_BLACKWELL1_5_MD5='3b1b569ec92ff53a8ad243627a13c6a2' ARCHIVE_BASE_BLACKWELL1_5_SIZE='312061' ARCHIVE_BASE_BLACKWELL1_5_VERSION='3.5-gog71786' ARCHIVE_BASE_BLACKWELL1_4_NAME='blackwell_legacy_3_1_67142.sh' ARCHIVE_BASE_BLACKWELL1_4_MD5='840ad19ae85cbfdcbc431e8333767f0d' ARCHIVE_BASE_BLACKWELL1_4_SIZE='312516' ARCHIVE_BASE_BLACKWELL1_4_VERSION='3.1-gog67142' ARCHIVE_BASE_BLACKWELL1_3_NAME='blackwell_legacy_3_0_66153.sh' ARCHIVE_BASE_BLACKWELL1_3_MD5='f21fa6de53dc115ccfb769ffe3ef9e70' ARCHIVE_BASE_BLACKWELL1_3_SIZE='320000' ARCHIVE_BASE_BLACKWELL1_3_VERSION='3.0-gog66153' ARCHIVE_BASE_BLACKWELL1_2_NAME='blackwell_legacy_2_4a_55329.sh' ARCHIVE_BASE_BLACKWELL1_2_MD5='4ac2a52315daa0ccde214adf68dadfc9' ARCHIVE_BASE_BLACKWELL1_2_SIZE='320000' ARCHIVE_BASE_BLACKWELL1_2_VERSION='2.4a-gog55329' ARCHIVE_BASE_BLACKWELL1_1_NAME='blackwell_legacy_2_2_3_53579.sh' ARCHIVE_BASE_BLACKWELL1_1_MD5='1649b8c1c430dd24b0bbe89f7ccb541b' ARCHIVE_BASE_BLACKWELL1_1_SIZE='320000' ARCHIVE_BASE_BLACKWELL1_1_VERSION='2.2.3-gog53579' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BLACKWELL1='blackwell-1_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5_BLACKWELL1='3352b2267c9200b1c06d21c5d65ddef8' ARCHIVE_OPTIONAL_ICONS_URL_BLACKWELL1='https://downloads.dotslashplay.it/games/blackwell/' CONTENT_ICONS_PATH_BLACKWELL1='.' CONTENT_ICONS_FILES_BLACKWELL1=' 16x16 24x24 32x32 48x48 256x256' ## Blackwell 2 ARCHIVE_BASE_BLACKWELL2_5_NAME='blackwell_unbound_3_1a_71097.sh' ARCHIVE_BASE_BLACKWELL2_5_MD5='9bcabf910cf4f719ecb2f4d8a8d033ad' ARCHIVE_BASE_BLACKWELL2_5_SIZE='263113' ARCHIVE_BASE_BLACKWELL2_5_VERSION='3.1a-gog71097' ARCHIVE_BASE_BLACKWELL2_5_URL='https://www.gog.com/game/blackwell_bundle' ARCHIVE_BASE_BLACKWELL2_4_NAME='blackwell_unbound_3_0_67142.sh' ARCHIVE_BASE_BLACKWELL2_4_MD5='8336d9714956fbe4b2a872afdabca960' ARCHIVE_BASE_BLACKWELL2_4_SIZE='263568' ARCHIVE_BASE_BLACKWELL2_4_VERSION='3.0-gog67142' ARCHIVE_BASE_BLACKWELL2_3_NAME='blackwell_unbound_3_0_66153.sh' ARCHIVE_BASE_BLACKWELL2_3_MD5='efcc0c8bb1643ca653b72a3675534dee' ARCHIVE_BASE_BLACKWELL2_3_SIZE='270000' ARCHIVE_BASE_BLACKWELL2_3_VERSION='3.0-gog66153' ARCHIVE_BASE_BLACKWELL2_2_NAME='blackwell_unbound_2_4_57370.sh' ARCHIVE_BASE_BLACKWELL2_2_MD5='3eaef9e29721384d1aec74fe0901f195' ARCHIVE_BASE_BLACKWELL2_2_SIZE='260000' ARCHIVE_BASE_BLACKWELL2_2_VERSION='2.4-gog57370' ARCHIVE_BASE_BLACKWELL2_1_NAME='blackwell_unbound_2_2_2_1_53176.sh' ARCHIVE_BASE_BLACKWELL2_1_MD5='026d7f9171819be7bd4d4bfe3b9e9f6e' ARCHIVE_BASE_BLACKWELL2_1_SIZE='260000' ARCHIVE_BASE_BLACKWELL2_1_VERSION='2.2.2.1-gog53176' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BLACKWELL2='blackwell-2_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5_BLACKWELL2='e7bef09076eaf830effc44d7fe6b8a9e' ARCHIVE_OPTIONAL_ICONS_URL_BLACKWELL2='https://downloads.dotslashplay.it/games/blackwell/' CONTENT_ICONS_PATH_BLACKWELL2='.' CONTENT_ICONS_FILES_BLACKWELL2=' 16x16 24x24 32x32 48x48 256x256' ## Blackwell 3 ARCHIVE_BASE_BLACKWELL3_4_NAME='blackwell_convergence_3_1a_71097.sh' ARCHIVE_BASE_BLACKWELL3_4_MD5='1ca9574462053e33555da972f02accbc' ARCHIVE_BASE_BLACKWELL3_4_SIZE='325125' ARCHIVE_BASE_BLACKWELL3_4_VERSION='3.1a-gog71097' ARCHIVE_BASE_BLACKWELL3_4_URL='https://www.gog.com/game/blackwell_bundle' ARCHIVE_BASE_BLACKWELL3_3_NAME='blackwell_convergence_3_0_67142.sh' ARCHIVE_BASE_BLACKWELL3_3_MD5='a0e8f8eb25df6e3aab086424c4e5c8e7' ARCHIVE_BASE_BLACKWELL3_3_SIZE='325592' ARCHIVE_BASE_BLACKWELL3_3_VERSION='3.0-gog67142' ARCHIVE_BASE_BLACKWELL3_2_NAME='blackwell_convergence_3_0_66153.sh' ARCHIVE_BASE_BLACKWELL3_2_MD5='2c074d610175629e72e1f7e4970e9342' ARCHIVE_BASE_BLACKWELL3_2_SIZE='330000' ARCHIVE_BASE_BLACKWELL3_2_VERSION='3.0-gog66153' ARCHIVE_BASE_BLACKWELL3_1_NAME='blackwell_convergence_2_2_2_53176.sh' ARCHIVE_BASE_BLACKWELL3_1_MD5='e0e6b8c425c35804f47aa0ffe41ff98d' ARCHIVE_BASE_BLACKWELL3_1_SIZE='380000' ARCHIVE_BASE_BLACKWELL3_1_VERSION='2.2.2-gog53176' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BLACKWELL3='blackwell-3_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5_BLACKWELL3='49cb2320d1a32788399493dd42e3d607' ARCHIVE_OPTIONAL_ICONS_URL_BLACKWELL3='https://downloads.dotslashplay.it/games/blackwell/' CONTENT_ICONS_PATH_BLACKWELL3='.' CONTENT_ICONS_FILES_BLACKWELL3=' 32x32 64x64 256x256' ## Blackwell 4 ARCHIVE_BASE_BLACKWELL4_6_NAME='blackwell_deception_3_3_76159.sh' ARCHIVE_BASE_BLACKWELL4_6_MD5='a65df9a5e03d9c656c5fda6075e698a5' ARCHIVE_BASE_BLACKWELL4_6_SIZE='585481' ARCHIVE_BASE_BLACKWELL4_6_VERSION='3.3-gog76159' ARCHIVE_BASE_BLACKWELL4_6_URL='https://www.gog.com/game/blackwell_bundle' ARCHIVE_BASE_BLACKWELL4_4_NAME='blackwell_deception_3_2_72383.sh' ARCHIVE_BASE_BLACKWELL4_4_MD5='65531d5078cefc73589ddefcb4e10672' ARCHIVE_BASE_BLACKWELL4_4_SIZE='585481' ARCHIVE_BASE_BLACKWELL4_4_VERSION='3.2-gog72383' ARCHIVE_BASE_BLACKWELL4_3_NAME='blackwell_deception_3_0_67142.sh' ARCHIVE_BASE_BLACKWELL4_3_MD5='c4823fb1410fd412b6262323d9b05a19' ARCHIVE_BASE_BLACKWELL4_3_SIZE='585944' ARCHIVE_BASE_BLACKWELL4_3_VERSION='3.0-gog67142' ARCHIVE_BASE_BLACKWELL4_2_NAME='blackwell_deception_3_0_66153.sh' ARCHIVE_BASE_BLACKWELL4_2_MD5='c8839642e293df1a016db8ed6046dbee' ARCHIVE_BASE_BLACKWELL4_2_SIZE='590000' ARCHIVE_BASE_BLACKWELL4_2_VERSION='3.0-gog66153' ARCHIVE_BASE_BLACKWELL4_1_NAME='blackwell_deception_1_3_53244.sh' ARCHIVE_BASE_BLACKWELL4_1_MD5='61c144995e396515948fbb15c3467494' ARCHIVE_BASE_BLACKWELL4_1_SIZE='660000' ARCHIVE_BASE_BLACKWELL4_1_VERSION='1.3-gog53244' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BLACKWELL4='blackwell-4_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5_BLACKWELL4='d9dae751697727cb42e43221755f507a' ARCHIVE_OPTIONAL_ICONS_URL_BLACKWELL4='https://downloads.dotslashplay.it/games/blackwell/' CONTENT_ICONS_PATH_BLACKWELL4='.' CONTENT_ICONS_FILES_BLACKWELL4=' 16x16 24x24 32x32 48x48 256x256' ## Blackwell 5 ARCHIVE_BASE_BLACKWELL5_5_NAME='blackwell_epiphany_3_3a_78230.sh' ARCHIVE_BASE_BLACKWELL5_5_MD5='765e4f7f90161c7708728f7096d2a495' ARCHIVE_BASE_BLACKWELL5_5_SIZE='864300' ARCHIVE_BASE_BLACKWELL5_5_VERSION='3.3a-gog78230' ARCHIVE_BASE_BLACKWELL5_5_URL='https://www.gog.com/game/blackwell_epiphany_the' ARCHIVE_BASE_BLACKWELL5_4_NAME='blackwell_epiphany_3_1a_71097.sh' ARCHIVE_BASE_BLACKWELL5_4_MD5='b313ed9ee4a8531a2205f3d9f1932f9d' ARCHIVE_BASE_BLACKWELL5_4_SIZE='864300' ARCHIVE_BASE_BLACKWELL5_4_VERSION='3.1a-gog71097' ARCHIVE_BASE_BLACKWELL5_3_NAME='blackwell_epiphany_3_0_67142.sh' ARCHIVE_BASE_BLACKWELL5_3_MD5='bc979e295bee8e1e7e59299bea33080f' ARCHIVE_BASE_BLACKWELL5_3_SIZE='864772' ARCHIVE_BASE_BLACKWELL5_3_VERSION='3.0-gog67142' ARCHIVE_BASE_BLACKWELL5_2_NAME='blackwell_epiphany_3_0_66153.sh' ARCHIVE_BASE_BLACKWELL5_2_MD5='c0865ccac7ad31c7dc95a0b1a171e589' ARCHIVE_BASE_BLACKWELL5_2_SIZE='870000' ARCHIVE_BASE_BLACKWELL5_2_VERSION='3.0-gog66153' ARCHIVE_BASE_BLACKWELL5_1_NAME='blackwell_epiphany_2_2_53244.sh' ARCHIVE_BASE_BLACKWELL5_1_MD5='6ffbcfb56b62e476a0255eaa1a2aae6d' ARCHIVE_BASE_BLACKWELL5_1_SIZE='890000' ARCHIVE_BASE_BLACKWELL5_1_VERSION='2.2-gog53244' ## Optional icons pack ## FIXME: Despite its .tar.gz file extension, this is an uncompressed tar archive. ARCHIVE_OPTIONAL_ICONS_NAME_BLACKWELL5='blackwell-5_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_BLACKWELL5='cf27b6428d455ac9e6af2e5c8b065a43' ARCHIVE_OPTIONAL_ICONS_TYPE_BLACKWELL5='tar' ARCHIVE_OPTIONAL_ICONS_URL_BLACKWELL5='https://downloads.dotslashplay.it/games/blackwell/' CONTENT_ICONS_PATH_BLACKWELL5='.' CONTENT_ICONS_FILES_BLACKWELL5=' 16x16 24x24 32x32 48x48 256x256' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' *.ags *.cfg *.exe *.vox' CONTENT_DOC_MAIN_FILES=' licenses' APP_MAIN_SCUMMID_BLACKWELL1='ags:blackwell1' APP_MAIN_SCUMMID_BLACKWELL2='ags:blackwell2' APP_MAIN_SCUMMID_BLACKWELL3='ags:blackwell3' APP_MAIN_SCUMMID_BLACKWELL4='ags:blackwell4' APP_MAIN_SCUMMID_BLACKWELL5='ags:blackwell5' APP_MAIN_ICON='../support/icon.png' APP_MAIN_ICON_BLACKWELL1_1='Blackwell Legacy.exe' APP_MAIN_ICON_BLACKWELL1_2='Blackwell Legacy.exe' APP_MAIN_ICON_BLACKWELL2_1='Unbound.exe' APP_MAIN_ICON_BLACKWELL2_2='Unbound.exe' APP_MAIN_ICON_BLACKWELL3_1='Convergence.exe' APP_MAIN_ICON_BLACKWELL4_1='Deception.exe' APP_MAIN_ICON_BLACKWELL5_1='Epiphany.exe' ## Switch French keyboard layout to us-azerty to provide direct access to digits ## TODO: Update this snippet to make it work on Wayland too APP_MAIN_PRERUN=' # Switch French keyboard layout to us-azerty to provide direct access to digits. # This is required to not get stuck when asked to type digits in-game. ## This works on X.org only, not on Wayland. if [ -z "${WAYLAND_DISPLAY:-}" ] && [ -n "${DISPLAY:-}" ] && command -v setxkbmap >/dev/null 2>&1; then KEYBOARD_RESTORE_VARIANT=0 KEYBOARD_LAYOUT=$(LANG=C setxkbmap -query | awk "/layout:/ {print \$2}") if [ "$KEYBOARD_LAYOUT" = "fr" ]; then KEYBOARD_VARIANT=$(LANG=C setxkbmap -query | awk "/variant:/ {print \$2}") if [ "$KEYBOARD_VARIANT" != "us-azerty" ]; then KEYBOARD_RESTORE_VARIANT=1 setxkbmap -variant us-azerty fi fi fi ' APP_MAIN_POSTRUN=' # Restore the keyboard variant, if it has previously been switched to us-azerty. ## This works on X.org only, not on Wayland. if [ -z "${WAYLAND_DISPLAY:-}" ] && [ -n "${DISPLAY:-}" ] && command -v setxkbmap >/dev/null 2>&1; then if [ $KEYBOARD_RESTORE_VARIANT -eq 1 ]; then setxkbmap -variant "$KEYBOARD_VARIANT" fi fi ' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data ## FIXME: Blackwell 5 - Despite its .tar.gz file extension, the icons archive is an uncompressed tar archive. ARCHIVE_ICONS_TYPE=$(context_value 'ARCHIVE_OPTIONAL_ICONS_TYPE') archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-caesar-3.sh0000755000000000000000000000600214471751340013554 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Caesar 3 ### script_version=20250112.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='caesar-3' GAME_NAME='Cæsar Ⅲ' # Archives ## Base game installer ARCHIVE_BASE_1_NAME='setup_caesartm_3_1.0.1.0_(76354).exe' ARCHIVE_BASE_1_MD5='6a5ee051d469f1b3eea42d84e483b066' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='650439' ARCHIVE_BASE_1_VERSION='1.0.1.0-gog76354' ARCHIVE_BASE_1_URL='https://www.gog.com/game/caesar_3' 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' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' 555 smk wavs mission1.pak c3_model.txt *.555 *.emp *.eng *.map *.sg2' CONTENT_DOC_MAIN_FILES=' readme.txt *.pdf' USER_PERSISTENT_FILES=' c3_model.txt status.txt *.ini *.sav' APP_MAIN_TYPE='custom' APP_MAIN_ICON='c3.exe' PKG_MAIN_DEPENDENCIES_COMMANDS=' julius' ## Ensure easy upgrades from packages generated with pre-20250112.1 game scripts PKG_MAIN_PROVIDES="${PKG_MAIN_PROVIDES:-} caesar-3-data" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers custom_launcher() { local application application="$1" launcher_headers # Set the paths that should be available to the generated launcher launcher_init_paths "$application" # Generate the game prefix prefix_generate_links_farm launcher_prefix_symlinks_build # Set up the paths diversion to persistent storage persistent_storage_initialization persistent_storage_common persistent_path_diversion persistent_storage_update_directories persistent_storage_update_files native_launcher_run "$application" # Update persistent storage with files from the current prefix persistent_storage_update_files_from_prefix launcher_exit } native_launcher_binary_copy() { return 0; } case "$(option_value 'package')" in ('gentoo'|'egentoo') game_exec_line() { cat <<- 'EOF' julius-game "$@" EOF } ;; (*) game_exec_line() { cat <<- 'EOF' julius "$@" EOF } ;; esac launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-children-of-morta-expansions.sh0000755000000000000000000000414214471751340017660 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=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='children-of-morta' GAME_NAME='Children of Morta' EXPANSION_ID_ANCIENT='ancient-spirits' EXPANSION_NAME_ANCIENT='Ancient Spirits' EXPANSION_ID_PAWS='paws-and-claws' EXPANSION_NAME_PAWS='Paws and Claws' # Archives ## Ancient Spirits ARCHIVE_BASE_ANCIENT_0_NAME='backers_dlc_1_2_63_48061.sh' ARCHIVE_BASE_ANCIENT_0_MD5='931cfdfd304b909efbe61ac4d6c10b34' ARCHIVE_BASE_ANCIENT_0_SIZE='1026' ARCHIVE_BASE_ANCIENT_0_VERSION='1.2.63-gog48061' ARCHIVE_BASE_ANCIENT_0_URL='https://www.gog.com/en/game/children_of_morta_ancient_spirits' ## Paws and Claws ARCHIVE_BASE_PAWS_0_NAME='children_of_morta_paws_and_claws_1_2_63_48061.sh' ARCHIVE_BASE_PAWS_0_MD5='09efef01a9bd0c1a5172e1fe7fd19530' ARCHIVE_BASE_PAWS_0_SIZE='1026' ARCHIVE_BASE_PAWS_0_VERSION='1.2.63-gog48061' ARCHIVE_BASE_PAWS_0_URL='https://www.gog.com/en/game/children_of_morta_paws_and_claws' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' goggame-*.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-children-of-morta.sh0000755000000000000000000000423314471751340015474 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Children of Morta ### script_version=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='children-of-morta' GAME_NAME='Children of Morta' ARCHIVE_BASE_0_NAME='children_of_morta_1_2_63_48061.sh' ARCHIVE_BASE_0_MD5='3f70026a2f2adf1eff19c25041e94a3e' ARCHIVE_BASE_0_SIZE='1309191' ARCHIVE_BASE_0_VERSION='1.2.63-gog48061' ARCHIVE_BASE_0_URL='https://www.gog.com/game/children_of_morta' UNITY3D_NAME='ChildrenOfMorta' UNITY3D_PLUGINS=' libfmodL.so libfmod.so libfmodstudioL.so libfmodstudio.so libgvraudio.so libresonanceaudio.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-cultist-simulator-expansions.sh0000755000000000000000000003261314471751340020056 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=20241123.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='cultist-simulator' GAME_NAME='Cultist Simulator' EXPANSION_ID_PERPETUAL='perpetual-edition' EXPANSION_NAME_PERPETUAL='Perpetual Edition' EXPANSION_ID_DANCER='the-dancer' EXPANSION_NAME_DANCER='The Dancer' EXPANSION_ID_GHOUL='the-ghoul' EXPANSION_NAME_GHOUL='The Ghoul' EXPANSION_ID_PRIEST='the-priest' EXPANSION_NAME_PRIEST='The Priest' EXPANSION_ID_EXILE='the-exile' EXPANSION_NAME_EXILE='The Exile' # Archives ## Perpetual Edition ARCHIVE_BASE_PERPETUAL_9_NAME='cultist_simulator_perpetual_edition_content_2024_7_b_3_77913.sh' ARCHIVE_BASE_PERPETUAL_9_MD5='653f6b60b6587db9b24e850daf25e045' ARCHIVE_BASE_PERPETUAL_9_SIZE='897' ARCHIVE_BASE_PERPETUAL_9_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_PERPETUAL_8_NAME='cultist_simulator_perpetual_edition_content_2024_5_a_3_74582.sh' ARCHIVE_BASE_PERPETUAL_8_MD5='0150fa2617c138697f8b05b9c659e76e' ARCHIVE_BASE_PERPETUAL_8_SIZE='897' ARCHIVE_BASE_PERPETUAL_8_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_PERPETUAL_7_NAME='cultist_simulator_perpetual_edition_content_2023_12_s_5_71509.sh' ARCHIVE_BASE_PERPETUAL_7_MD5='ba64a839ed79df208e346e45705028c7' ARCHIVE_BASE_PERPETUAL_7_SIZE='897' ARCHIVE_BASE_PERPETUAL_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_PERPETUAL_6_NAME='cultist_simulator_perpetual_edition_content_2023_12_s_4_71175.sh' ARCHIVE_BASE_PERPETUAL_6_MD5='b06fb18d1183088111c459e4369823b0' ARCHIVE_BASE_PERPETUAL_6_SIZE='897' ARCHIVE_BASE_PERPETUAL_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_PERPETUAL_5_NAME='cultist_simulator_perpetual_edition_content_2023_10_r_10_68985.sh' ARCHIVE_BASE_PERPETUAL_5_MD5='d4b6b6332df5a68e0e819ecfde900ca8' ARCHIVE_BASE_PERPETUAL_5_SIZE='1212' ARCHIVE_BASE_PERPETUAL_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_PERPETUAL_4_NAME='cultist_simulator_perpetual_edition_content_2023_5_p_12_67501.sh' ARCHIVE_BASE_PERPETUAL_4_MD5='2a725b7b09eb2990bf5452b904575e0f' ARCHIVE_BASE_PERPETUAL_4_SIZE='1212' ARCHIVE_BASE_PERPETUAL_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_PERPETUAL_3_NAME='cultist_simulator_perpetual_edition_content_2023_4_o_4_64959.sh' ARCHIVE_BASE_PERPETUAL_3_MD5='4e753614162be0092276c2f79c6fa536' ARCHIVE_BASE_PERPETUAL_3_SIZE='1300' ARCHIVE_BASE_PERPETUAL_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_PERPETUAL_2_NAME='cultist_simulator_perpetual_edition_content_2022_12_n_2_61763.sh' ARCHIVE_BASE_PERPETUAL_2_MD5='d075fca6120b358a13349e0df210c80c' ARCHIVE_BASE_PERPETUAL_2_SIZE='1300' ARCHIVE_BASE_PERPETUAL_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_PERPETUAL_1_NAME='cultist_simulator_perpetual_edition_content_2022_3_p_1_54545.sh' ARCHIVE_BASE_PERPETUAL_1_MD5='b6523031eb075dab51ab73aaeefd8b8a' ARCHIVE_BASE_PERPETUAL_1_SIZE='1300' ARCHIVE_BASE_PERPETUAL_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_PERPETUAL_0_NAME='cultist_simulator_perpetual_edition_content_2022_3_n_1_54418.sh' ARCHIVE_BASE_PERPETUAL_0_MD5='76dd2895edb86c9e5086ff073b86bd41' ARCHIVE_BASE_PERPETUAL_0_SIZE='1300' ARCHIVE_BASE_PERPETUAL_0_VERSION='2022.03.n.1-gog54418' ## The Dancer ARCHIVE_BASE_DANCER_9_NAME='cultist_simulator_the_dancer_2024_7_b_3_77913.sh' ARCHIVE_BASE_DANCER_9_MD5='f9304991269fb79b8fa80a0d8ca55baa' ARCHIVE_BASE_DANCER_9_SIZE='1178' ARCHIVE_BASE_DANCER_9_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_DANCER_9_URL='https://www.gog.com/game/cultist_simulator_the_dancer' ARCHIVE_BASE_DANCER_8_NAME='cultist_simulator_the_dancer_2024_5_a_3_74582.sh' ARCHIVE_BASE_DANCER_8_MD5='033bb0945379a41d711ab7d8b23c9230' ARCHIVE_BASE_DANCER_8_SIZE='1178' ARCHIVE_BASE_DANCER_8_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_DANCER_7_NAME='cultist_simulator_the_dancer_2023_12_s_5_71509.sh' ARCHIVE_BASE_DANCER_7_MD5='7411914a034e8f059f2f78b1476101d2' ARCHIVE_BASE_DANCER_7_SIZE='1178' ARCHIVE_BASE_DANCER_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_DANCER_6_NAME='cultist_simulator_the_dancer_2023_12_s_4_71175.sh' ARCHIVE_BASE_DANCER_6_MD5='5a33ee82ccc822bc5a249288093e315a' ARCHIVE_BASE_DANCER_6_SIZE='1178' ARCHIVE_BASE_DANCER_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_DANCER_5_NAME='cultist_simulator_the_dancer_2023_10_r_10_68985.sh' ARCHIVE_BASE_DANCER_5_MD5='3202862234290566863abf42afe2e0eb' ARCHIVE_BASE_DANCER_5_SIZE='1580' ARCHIVE_BASE_DANCER_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_DANCER_4_NAME='cultist_simulator_the_dancer_2023_5_p_12_67501.sh' ARCHIVE_BASE_DANCER_4_MD5='1735b3ba59f8d72f04fac14fc0c7c58b' ARCHIVE_BASE_DANCER_4_SIZE='1580' ARCHIVE_BASE_DANCER_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_DANCER_3_NAME='cultist_simulator_the_dancer_2023_4_o_4_64959.sh' ARCHIVE_BASE_DANCER_3_MD5='3174e4feddd8c11acc39aa0cac8696de' ARCHIVE_BASE_DANCER_3_SIZE='1600' ARCHIVE_BASE_DANCER_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_DANCER_2_NAME='cultist_simulator_the_dancer_2022_12_n_2_61763.sh' ARCHIVE_BASE_DANCER_2_MD5='36fbfe3d25d28f0a465a72dc394eb6b7' ARCHIVE_BASE_DANCER_2_SIZE='1600' ARCHIVE_BASE_DANCER_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_DANCER_1_NAME='cultist_simulator_the_dancer_2022_3_p_1_54545.sh' ARCHIVE_BASE_DANCER_1_MD5='e8b5d104fd30e6e7566bc24fbca5d718' ARCHIVE_BASE_DANCER_1_SIZE='1600' ARCHIVE_BASE_DANCER_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_DANCER_0_NAME='cultist_simulator_the_dancer_2022_3_n_1_54418.sh' ARCHIVE_BASE_DANCER_0_MD5='8dbbb7e6121b9d62661837191f053405' ARCHIVE_BASE_DANCER_0_SIZE='1600' ARCHIVE_BASE_DANCER_0_VERSION='2022.03.n.1-gog54418' ## The Ghoul ARCHIVE_BASE_GHOUL_9_NAME='cultist_simulator_the_ghoul_2024_7_b_3_77913.sh' ARCHIVE_BASE_GHOUL_9_MD5='51397b535a1a70d49eb63019d7a385ff' ARCHIVE_BASE_GHOUL_9_SIZE='1163' ARCHIVE_BASE_GHOUL_9_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_GHOUL_9_URL='https://www.gog.com/game/cultist_simulator_the_ghoul' ARCHIVE_BASE_GHOUL_8_NAME='cultist_simulator_the_ghoul_2024_5_a_3_74582.sh' ARCHIVE_BASE_GHOUL_8_MD5='c142d2c03bba7cfb84dd54742a1c02ee' ARCHIVE_BASE_GHOUL_8_SIZE='1163' ARCHIVE_BASE_GHOUL_8_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_GHOUL_7_NAME='cultist_simulator_the_ghoul_2023_12_s_5_71509.sh' ARCHIVE_BASE_GHOUL_7_MD5='8185ddbb6681d90a233078d959188c2e' ARCHIVE_BASE_GHOUL_7_SIZE='1163' ARCHIVE_BASE_GHOUL_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_GHOUL_6_NAME='cultist_simulator_the_ghoul_2023_12_s_4_71175.sh' ARCHIVE_BASE_GHOUL_6_MD5='ff6fdc10d98aea9e260522521112d176' ARCHIVE_BASE_GHOUL_6_SIZE='1163' ARCHIVE_BASE_GHOUL_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_GHOUL_5_NAME='cultist_simulator_the_ghoul_2023_10_r_10_68985.sh' ARCHIVE_BASE_GHOUL_5_MD5='7ee4993ad1e507cd48c705a6cbc0fe90' ARCHIVE_BASE_GHOUL_5_SIZE='1592' ARCHIVE_BASE_GHOUL_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_GHOUL_4_NAME='cultist_simulator_the_ghoul_2023_5_p_12_67501.sh' ARCHIVE_BASE_GHOUL_4_MD5='06c81c342ee8bcc81e298d5dd519d2e7' ARCHIVE_BASE_GHOUL_4_SIZE='1592' ARCHIVE_BASE_GHOUL_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_GHOUL_3_NAME='cultist_simulator_the_ghoul_2023_4_o_4_64959.sh' ARCHIVE_BASE_GHOUL_3_MD5='246f3518914281bca5d0647170e1c12f' ARCHIVE_BASE_GHOUL_3_SIZE='1600' ARCHIVE_BASE_GHOUL_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_GHOUL_2_NAME='cultist_simulator_the_ghoul_2022_12_n_2_61763.sh' ARCHIVE_BASE_GHOUL_2_MD5='53674742e8cb5a7570a6f5318a998261' ARCHIVE_BASE_GHOUL_2_SIZE='1600' ARCHIVE_BASE_GHOUL_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_GHOUL_1_NAME='cultist_simulator_the_ghoul_2022_3_p_1_54545.sh' ARCHIVE_BASE_GHOUL_1_MD5='c04cd53c229a5cb2d243a6c00e4e6847' ARCHIVE_BASE_GHOUL_1_SIZE='1600' ARCHIVE_BASE_GHOUL_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_GHOUL_0_NAME='cultist_simulator_the_ghoul_2022_3_n_1_54418.sh' ARCHIVE_BASE_GHOUL_0_MD5='d1b72e87563e87df340570dd91ec44a2' ARCHIVE_BASE_GHOUL_0_SIZE='1600' ARCHIVE_BASE_GHOUL_0_VERSION='2022.03.n.1-gog54418' ## The Priest ARCHIVE_BASE_PRIEST_9_NAME='cultist_simulator_the_priest_2024_7_b_3_77913.sh' ARCHIVE_BASE_PRIEST_9_MD5='4e5b1868e6f14fbb31ccfda6c3e14667' ARCHIVE_BASE_PRIEST_9_SIZE='1238' ARCHIVE_BASE_PRIEST_9_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_PRIEST_9_URL='https://www.gog.com/game/cultist_simulator_the_priest' ARCHIVE_BASE_PRIEST_8_NAME='cultist_simulator_the_priest_2024_5_a_3_74582.sh' ARCHIVE_BASE_PRIEST_8_MD5='efa3f7d478e0083e51f83db79c787efa' ARCHIVE_BASE_PRIEST_8_SIZE='1238' ARCHIVE_BASE_PRIEST_8_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_PRIEST_7_NAME='cultist_simulator_the_priest_2023_12_s_5_71509.sh' ARCHIVE_BASE_PRIEST_7_MD5='0b5d5436b8853cfc3a100404070779c8' ARCHIVE_BASE_PRIEST_7_SIZE='1238' ARCHIVE_BASE_PRIEST_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_PRIEST_6_NAME='cultist_simulator_the_priest_2023_12_s_4_71175.sh' ARCHIVE_BASE_PRIEST_6_MD5='84f26baca8a0219e3b11f6f91fca3bb9' ARCHIVE_BASE_PRIEST_6_SIZE='1238' ARCHIVE_BASE_PRIEST_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_PRIEST_5_NAME='cultist_simulator_the_priest_2023_10_r_10_68985.sh' ARCHIVE_BASE_PRIEST_5_MD5='98051cfd374e9165e59377fbac3a3c35' ARCHIVE_BASE_PRIEST_5_SIZE='1668' ARCHIVE_BASE_PRIEST_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_PRIEST_4_NAME='cultist_simulator_the_priest_2023_5_p_12_67501.sh' ARCHIVE_BASE_PRIEST_4_MD5='c6e17f6d95cf866bcd91fff881216ca8' ARCHIVE_BASE_PRIEST_4_SIZE='1668' ARCHIVE_BASE_PRIEST_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_PRIEST_3_NAME='cultist_simulator_the_priest_2023_4_o_4_64959.sh' ARCHIVE_BASE_PRIEST_3_MD5='fd1b784c35b7d1acadeebb5f6da8ea68' ARCHIVE_BASE_PRIEST_3_SIZE='1700' ARCHIVE_BASE_PRIEST_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_PRIEST_2_NAME='cultist_simulator_the_priest_2022_12_n_2_61763.sh' ARCHIVE_BASE_PRIEST_2_MD5='1f12513a9b61863ced08ebe7ff3f2001' ARCHIVE_BASE_PRIEST_2_SIZE='1700' ARCHIVE_BASE_PRIEST_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_PRIEST_1_NAME='cultist_simulator_the_priest_2022_3_p_1_54545.sh' ARCHIVE_BASE_PRIEST_1_MD5='e56271d1fd1e2eca197d4bef956965c9' ARCHIVE_BASE_PRIEST_1_SIZE='1700' ARCHIVE_BASE_PRIEST_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_PRIEST_0_NAME='cultist_simulator_the_priest_2022_3_n_1_54418.sh' ARCHIVE_BASE_PRIEST_0_MD5='26516af73ab47d8aa161a6e2ad99eb5f' ARCHIVE_BASE_PRIEST_0_SIZE='1700' ARCHIVE_BASE_PRIEST_0_VERSION='2022.03.n.1-gog54418' ## The Exile ARCHIVE_BASE_EXILE_9_NAME='cultist_simulator_the_exile_2024_7_b_3_77913.sh' ARCHIVE_BASE_EXILE_9_MD5='dda93215acba7d7aeeedb9f356830ffb' ARCHIVE_BASE_EXILE_9_SIZE='5482' ARCHIVE_BASE_EXILE_9_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_EXILE_9_URL='https://www.gog.com/game/cultist_simulator_the_exile' ARCHIVE_BASE_EXILE_8_NAME='cultist_simulator_the_exile_2024_5_a_3_74582.sh' ARCHIVE_BASE_EXILE_8_MD5='0617fc6bb9dc85982e33ef203bce039a' ARCHIVE_BASE_EXILE_8_SIZE='5482' ARCHIVE_BASE_EXILE_8_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_EXILE_7_NAME='cultist_simulator_the_exile_2023_12_s_5_71509.sh' ARCHIVE_BASE_EXILE_7_MD5='b8ec4b2021be5b82b4d1bea8f85e2275' ARCHIVE_BASE_EXILE_7_SIZE='5482' ARCHIVE_BASE_EXILE_7_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_EXILE_6_NAME='cultist_simulator_the_exile_2023_12_s_4_71175.sh' ARCHIVE_BASE_EXILE_6_MD5='4848d25ba494b3ce05199c14b3fb7cdb' ARCHIVE_BASE_EXILE_6_SIZE='5482' ARCHIVE_BASE_EXILE_6_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_EXILE_5_NAME='cultist_simulator_the_exile_2023_10_r_10_68985.sh' ARCHIVE_BASE_EXILE_5_MD5='127f09acc54cce367ce7e167468ed229' ARCHIVE_BASE_EXILE_5_SIZE='6088' ARCHIVE_BASE_EXILE_5_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_EXILE_4_NAME='cultist_simulator_the_exile_2023_5_p_12_67501.sh' ARCHIVE_BASE_EXILE_4_MD5='0ed4869ccb55e3e7b5afa9ade6a654a9' ARCHIVE_BASE_EXILE_4_SIZE='6088' ARCHIVE_BASE_EXILE_4_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_EXILE_3_NAME='cultist_simulator_the_exile_2023_4_o_4_64959.sh' ARCHIVE_BASE_EXILE_3_MD5='c25a0b322398181606826e8e91946ed8' ARCHIVE_BASE_EXILE_3_SIZE='6100' ARCHIVE_BASE_EXILE_3_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_EXILE_2_NAME='cultist_simulator_the_exile_2022_12_n_2_61763.sh' ARCHIVE_BASE_EXILE_2_MD5='97f7192f414ebc9c456f14485bcfdc9c' ARCHIVE_BASE_EXILE_2_SIZE='6100' ARCHIVE_BASE_EXILE_2_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_EXILE_1_NAME='cultist_simulator_the_exile_2022_3_p_1_54545.sh' ARCHIVE_BASE_EXILE_1_MD5='ad7232336e7aefd959a57fd2c3c7243b' ARCHIVE_BASE_EXILE_1_SIZE='6100' ARCHIVE_BASE_EXILE_1_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_EXILE_0_NAME='cultist_simulator_the_exile_2022_3_n_1_54418.sh' ARCHIVE_BASE_EXILE_0_MD5='3bf084c13791a61820aaf49650dd2a32' ARCHIVE_BASE_EXILE_0_SIZE='6100' ARCHIVE_BASE_EXILE_0_VERSION='2022.03.n.1-gog54418' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' CS_Data' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-cultist-simulator.sh0000755000000000000000000001306714471751340015673 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Cultist Simulator ### script_version=20241123.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='cultist-simulator' GAME_NAME='Cultist Simulator' ARCHIVE_BASE_19_NAME='cultist_simulator_2024_7_b_3_77913.sh' ARCHIVE_BASE_19_MD5='7dec8c03b9f2ec9136ead667cfd4fb73' ARCHIVE_BASE_19_SIZE='707969' ARCHIVE_BASE_19_VERSION='2024.07.b.3-gog77913' ARCHIVE_BASE_19_URL='https://www.gog.com/game/cultist_simulator' ARCHIVE_BASE_18_NAME='cultist_simulator_2024_5_a_3_74582.sh' ARCHIVE_BASE_18_MD5='4a6d4118f5545f95119a0f6fedcf1e16' ARCHIVE_BASE_18_SIZE='707816' ARCHIVE_BASE_18_VERSION='2024.05.a.3-gog74582' ARCHIVE_BASE_17_NAME='cultist_simulator_2023_12_s_5_71509.sh' ARCHIVE_BASE_17_MD5='7e5fd05666c22c1b44401525e2fd24f1' ARCHIVE_BASE_17_SIZE='707815' ARCHIVE_BASE_17_VERSION='2023.12.s.5-gog71509' ARCHIVE_BASE_16_NAME='cultist_simulator_2023_12_s_4_71175.sh' ARCHIVE_BASE_16_MD5='b34cef2cea237aff1b4ff33fe6acdece' ARCHIVE_BASE_16_SIZE='707816' ARCHIVE_BASE_16_VERSION='2023.12.s.4-gog71175' ARCHIVE_BASE_15_NAME='cultist_simulator_2023_10_r_10_68985.sh' ARCHIVE_BASE_15_MD5='4c9a58da5701edb9af42b44dedff55d6' ARCHIVE_BASE_15_SIZE='711252' ARCHIVE_BASE_15_VERSION='2023.10.r.10-gog68985' ARCHIVE_BASE_14_NAME='cultist_simulator_2023_5_p_12_67501.sh' ARCHIVE_BASE_14_MD5='9b849e52ae2c13a0911f2ff78b474264' ARCHIVE_BASE_14_SIZE='709880' ARCHIVE_BASE_14_VERSION='2023.05.p.12-gog67501' ARCHIVE_BASE_13_NAME='cultist_simulator_2023_4_o_4_64959.sh' ARCHIVE_BASE_13_MD5='4f3a1b1fa787e3b72fd22538051bc064' ARCHIVE_BASE_13_SIZE='710000' ARCHIVE_BASE_13_VERSION='2023.04.o.4-gog64959' ARCHIVE_BASE_12_NAME='cultist_simulator_2022_12_n_2_61763.sh' ARCHIVE_BASE_12_MD5='852b96c2da6b07d15fa533b3dbb0f316' ARCHIVE_BASE_12_SIZE='780000' ARCHIVE_BASE_12_VERSION='2022.12.n.2-gog61763' ARCHIVE_BASE_11_NAME='cultist_simulator_2022_3_p_1_54545.sh' ARCHIVE_BASE_11_MD5='6009cfa53c5be9da1e02380d5bcaf712' ARCHIVE_BASE_11_SIZE='750000' ARCHIVE_BASE_11_VERSION='2022.03.p.1-gog54545' ARCHIVE_BASE_10_NAME='cultist_simulator_2022_3_n_1_54418.sh' ARCHIVE_BASE_10_MD5='0c8e9dedb7b2e5112f7172c9a9095c18' ARCHIVE_BASE_10_SIZE='750000' ARCHIVE_BASE_10_VERSION='2022.03.n.1-gog54418' ARCHIVE_BASE_9_NAME='cultist_simulator_2021_1_b_2_44604.sh' ARCHIVE_BASE_9_MD5='cbe92b1dee271416ffa4ad29ef4b9123' ARCHIVE_BASE_9_SIZE='540000' ARCHIVE_BASE_9_VERSION='2021.01.b.2-gog44604' ARCHIVE_BASE_8_NAME='cultist_simulator_2020_11_a_1_42424.sh' ARCHIVE_BASE_8_MD5='76781c87835954da4a97ec7e0efccfe2' ARCHIVE_BASE_8_SIZE='540000' ARCHIVE_BASE_8_VERSION='2020.11.a.1-gog42424' ARCHIVE_BASE_7_NAME='cultist_simulator_2020_10_e_2_42258.sh' ARCHIVE_BASE_7_MD5='a2a2de8222b9993fc0ae5ef0eaed2b66' ARCHIVE_BASE_7_SIZE='540000' ARCHIVE_BASE_7_VERSION='2020.10.e.2-gog42258' ARCHIVE_BASE_6_NAME='cultist_simulator_2020_10_e_1_42177.sh' ARCHIVE_BASE_6_MD5='1a16264b6ce868c0f741b6614d84d684' ARCHIVE_BASE_6_SIZE='540000' ARCHIVE_BASE_6_VERSION='2020.10.e.1-gog42177' ARCHIVE_BASE_5_NAME='cultist_simulator_2020_10_b_1_42011.sh' ARCHIVE_BASE_5_MD5='672409328bd154b4430826c09b58dd74' ARCHIVE_BASE_5_SIZE='530000' ARCHIVE_BASE_5_VERSION='2020.10.b.1-gog42011' ARCHIVE_BASE_4_NAME='cultist_simulator_2020_9_p_1_bis_41797.sh' ARCHIVE_BASE_4_MD5='9683f0726cba2b116db4134aec863382' ARCHIVE_BASE_4_SIZE='520000' ARCHIVE_BASE_4_VERSION='2020.09.p.1-gog41797' ARCHIVE_BASE_3_NAME='cultist_simulator_2020_9_n_5_41650.sh' ARCHIVE_BASE_3_MD5='251b5e2d58faaea7132b57ad97495057' ARCHIVE_BASE_3_SIZE='510000' ARCHIVE_BASE_3_VERSION='2020.09.n.5-gog41650' ARCHIVE_BASE_2_NAME='cultist_simulator_2020_6_b_1_38747.sh' ARCHIVE_BASE_2_MD5='22980acaa3f825d0712621624277d4ed' ARCHIVE_BASE_2_SIZE='500000' ARCHIVE_BASE_2_VERSION='2020.06.b.1-gog38747' ARCHIVE_BASE_1_NAME='cultist_simulator_2020_6_a_1_38655.sh' ARCHIVE_BASE_1_MD5='099e8a6ed1ae7a9bd654ba63ab89c4a7' ARCHIVE_BASE_1_SIZE='500000' ARCHIVE_BASE_1_VERSION='2020.06.a.1-gog38655' ARCHIVE_BASE_0_NAME='cultist_simulator_2020_3_b_1_37119.sh' ARCHIVE_BASE_0_MD5='4390c258dcce415d61f96eac66a728ca' ARCHIVE_BASE_0_SIZE='470000' ARCHIVE_BASE_0_VERSION='2020.03.b.1-gog37119' UNITY3D_NAME='CS' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_DATA_FILES=' version.txt' CONTENT_DOC_DATA_FILES=' README' ## Write access to some game files is required. USER_PERSISTENT_DIRECTORIES=" ${UNITY3D_NAME}_Data/StreamingAssets/content/core/cultures" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-dark-reign-2.sh0000755000000000000000000000655714471751340014357 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Dark Reign 2 ### script_version=20241021.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='dark-reign-2' GAME_NAME='Dark Reign 2' ARCHIVE_BASE_1_NAME='setup_dark_reign_2_1.3_(56283).exe' ARCHIVE_BASE_1_MD5='23b441f1a8ffd5302e7cde3c1099cb73' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_VERSION='1.3.882-gog56283' ARCHIVE_BASE_1_SIZE='572562' ARCHIVE_BASE_1_URL='https://www.gog.com/game/dark_reign_2' ARCHIVE_BASE_0_NAME='setup_dark_reign2_2.0.0.11.exe' ARCHIVE_BASE_0_MD5='9a3d10825507b73c4db178f9caea2406' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_VERSION='1.3.882-gog2.0.0.11' ARCHIVE_BASE_0_SIZE='450000' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' library settings.cfg _inmm.dll binkw32.dll ddraw.dll getinfo.dll libogg.dll libvorbis.dll libvorbisfile.dll mss32.dll msvcp90.dll msvcr90.dll dr2.exe dxcfg.exe anet.inf dxcfg.ini' ## On first launch, register the game CD-key. ## This file is generated later in this script. CONTENT_GAME0_BIN_FILES=' cdkey' ## launcher.exe is only provided with the 2.0.0.11 GOG build. CONTENT_GAME1_BIN_FILES_0=' launcher.exe' CONTENT_GAME_DATA_FILES=' missions mods music packs sides worlds' CONTENT_DOC_DATA_FILES=' customer_support.htm manual.pdf readme.rtf license.txt' USER_PERSISTENT_DIRECTORIES=' mods users' USER_PERSISTENT_FILES=' settings.cfg' WINE_VIRTUAL_DESKTOP='auto' WINE_WINETRICKS_VERBS='win98' APP_MAIN_EXE='dr2.exe' APP_MAIN_EXE_0='launcher.exe' APP_MAIN_ICON='dr2.exe' ## On first launch, register the game CD-key. APP_MAIN_PRERUN=' # On first launch, register the game CD-key if [ ! -e .cdkey-registered ]; then cdkey=$(cat cdkey) $(wine_command) reg add "HKLM\\Software\\WON\\CDKeys" /v "DarkReign2" /t REG_BINARY /d "$cdkey" /f touch .cdkey-registered fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # On first launch, register the game CD-key REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} base64 xxd" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## On first launch, register the game CD-key. ## The source is a base64-encoded string, that must be converted to an hexadecimal representation. sed --silent '71s/.*"valueData": "\(.*\)",/\1/p' goggame-1207658911.script | \ base64 --decode | \ xxd -plain \ > 'cdkey' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-darkest-dungeon-expansions.sh0000755000000000000000000001740614471751340017447 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=20241021.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-darkest-dungeon.sh0000755000000000000000000001152714471751340015260 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Darkest Dungeon ### script_version=20241103.3 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='darkest-dungeon' GAME_NAME='Darkest Dungeon' ARCHIVE_BASE_7_NAME='darkest_dungeon_24839_28859.sh' ARCHIVE_BASE_7_MD5='2a04beb04b3129b4bd68b4dd9023e82d' ARCHIVE_BASE_7_SIZE='2300000' ARCHIVE_BASE_7_VERSION='24839-gog28859' ARCHIVE_BASE_7_URL='https://www.gog.com/game/darkest_dungeon' ARCHIVE_BASE_6_NAME='darkest_dungeon_24788_26004.sh' ARCHIVE_BASE_6_MD5='be838bdc8e7c971e4d412f833fd348ac' ARCHIVE_BASE_6_SIZE='2300000' ARCHIVE_BASE_6_VERSION='24788-gog26004' ARCHIVE_BASE_5_NAME='darkest_dungeon_en_24358_23005.sh' ARCHIVE_BASE_5_MD5='3d7dc739665003d48589cdbe6cc472ef' ARCHIVE_BASE_5_SIZE='2300000' ARCHIVE_BASE_5_VERSION='24358-gog23005' ARCHIVE_BASE_4_NAME='darkest_dungeon_en_24154_22522.sh' ARCHIVE_BASE_4_MD5='361d3e7b117725e8ce3982d183d4810a' ARCHIVE_BASE_4_SIZE='2300000' ARCHIVE_BASE_4_VERSION='24154-gog22522' ARCHIVE_BASE_3_NAME='darkest_dungeon_en_23904_21681.sh' ARCHIVE_BASE_3_MD5='9ddb131060d0995c4ceb56dd9c846b8f' ARCHIVE_BASE_3_SIZE='2300000' ARCHIVE_BASE_3_VERSION='23904-gog21681' ARCHIVE_BASE_2_NAME='darkest_dungeon_en_23885_21662.sh' ARCHIVE_BASE_2_MD5='ff449de9cfcdf97fa1a27d1073139463' ARCHIVE_BASE_2_SIZE='2300000' ARCHIVE_BASE_2_VERSION='23885-gog21662' ARCHIVE_BASE_1_NAME='darkest_dungeon_en_21142_16140.sh' ARCHIVE_BASE_1_MD5='4b43065624dbab74d794c56809170588' ARCHIVE_BASE_1_SIZE='2200000' ARCHIVE_BASE_1_VERSION='21142-gog16140' ARCHIVE_BASE_0_NAME='darkest_dungeon_en_21096_16066.sh' ARCHIVE_BASE_0_MD5='435905fe6edd911a8645d4feaf94ec34' ARCHIVE_BASE_0_SIZE='2200000' ARCHIVE_BASE_0_VERSION='21096-gog16066' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libfmod.so.9 libfmodstudio.so.9' CONTENT_LIBS_BIN64_PATH="${CONTENT_PATH_DEFAULT}/lib64" CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_LIBS_BIN32_PATH="${CONTENT_PATH_DEFAULT}/lib" CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_GAME_BIN64_FILES=' darkest.bin.x86_64' CONTENT_GAME_BIN32_FILES=' darkest.bin.x86' CONTENT_GAME_DATA_FILES=' audio video Icon.bmp pin svn_revision.txt activity_log campaign colours curios cursors dungeons effects fe_flow fonts fx game_over heroes inventory loading_screen loot maps modes mods monsters overlays panels props raid raid_results scripts scrolls shaders shared trinkets upgrades user_information localization/*.bat localization/*.csv localization/*.loc localization/*.txt localization/*.xml localization/pc' CONTENT_DOC_DATA_FILES=' README.linux' APP_MAIN_EXE_BIN32='darkest.bin.x86' APP_MAIN_EXE_BIN64='darkest.bin.x86_64' APP_MAIN_ICON='Icon.bmp' ## Prevent a game crash when using the Wayland video backend of SDL APP_MAIN_PRERUN=' # Prevent a game crash when using the Wayland video backend of SDL if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Fix icon background transparency REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} convert" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Fix icon background transparency icon_path=$(icon_path 'APP_MAIN_ICON') convert "$icon_path" \ -transparent "#008080" \ -transparent "#006e6e" \ "${icon_path%.bmp}_fixed.bmp" mv "${icon_path%.bmp}_fixed.bmp" "$icon_path" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-day-of-the-tentacle.sh0000755000000000000000000000440214471751340015712 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=20250227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='day-of-the-tentacle' GAME_NAME='Day of the Tentacle' ARCHIVE_BASE_0_NAME='gog_day_of_the_tentacle_remastered_2.1.0.2.sh' ARCHIVE_BASE_0_MD5='612c59c5cbdbf4d73322b46527a2d502' ARCHIVE_BASE_0_SIZE='2677592' ARCHIVE_BASE_0_VERSION='1.4.1-gog2.1.0.2' ARCHIVE_BASE_0_URL='https://www.gog.com/game/day_of_the_tentacle_remastered' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_RELATIVE_PATH='lib' CONTENT_LIBS_BIN_FILES=' libfmod.so.8' CONTENT_GAME_BIN_FILES=' Dott controllerdef.txt' CONTENT_GAME_DATA_FILES=' tenta.cle' CONTENT_DOC_DATA_FILES=' readme.txt' APP_MAIN_EXE='Dott' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 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 # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Force the use of system-provided SDL APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-democratic-socialism-simulator.sh0000755000000000000000000000353014471751340020271 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=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='democratic-socialism-simulator' GAME_NAME='Democratic Socialism Simulator' ARCHIVE_BASE_0_NAME='DemSocSim - Linux.zip' ARCHIVE_BASE_0_MD5='0650cf369b46ac0315b5fc6331b606d1' ARCHIVE_BASE_0_SIZE='570000' ARCHIVE_BASE_0_VERSION='1.0-itch.2020.02.21' ARCHIVE_BASE_0_URL='https://molleindustria.itch.io/democratic-socialism-simulator' UNITY3D_NAME='DemSocSim' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-desperados-1.sh0000755000000000000000000000440714471751340014454 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Desperados: Wanted Dead or Alive ### script_version=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='desperados-1' GAME_NAME='Desperados: Wanted Dead or Alive' ARCHIVE_BASE_1_NAME='desperados_wanted_dead_or_alive_en_1_0_2_thqn_22430.sh' ARCHIVE_BASE_1_MD5='c4338cd7526dc01eef347408368f6bf4' ARCHIVE_BASE_1_SIZE='1938955' ARCHIVE_BASE_1_VERSION='1.0.2-gog22430' ARCHIVE_BASE_1_URL='https://www.gog.com/game/desperados_wanted_dead_or_alive' ARCHIVE_BASE_0_NAME='desperados_wanted_dead_or_alive_en_gog_1_22137.sh' ARCHIVE_BASE_0_MD5='72e623355b7ca5ccdef0c549d0a77192' ARCHIVE_BASE_0_SIZE='2000000' ARCHIVE_BASE_0_VERSION='1.0-gog22137' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' desperados32' CONTENT_GAME_DATA_FILES=' bootmenu data demo localisation localisation_demo shaders' CONTENT_DOC_DATA_FILES=' readme.txt' APP_MAIN_EXE='desperados32' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-desperados-3.sh0000755000000000000000000001151514471751340014454 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Desperados 3 ### script_version=20241226.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='desperados-3' GAME_NAME='Desperados Ⅲ' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='setup_desperados_3_1.7_(43311).exe' ARCHIVE_BASE_0_MD5='27d07bcafb7b0a0c5bd0af5a0b91edb8' ## Do not convert file paths to lowercase ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_PART1_NAME='setup_desperados_3_1.7_(43311)-1.bin' ARCHIVE_BASE_0_PART1_MD5='5554579fd67870ad94347b70df2743f6' ARCHIVE_BASE_0_PART2_NAME='setup_desperados_3_1.7_(43311)-2.bin' ARCHIVE_BASE_0_PART2_MD5='f7f43119dda91362ec45b122e4ea641d' ARCHIVE_BASE_0_PART3_NAME='setup_desperados_3_1.7_(43311)-3.bin' ARCHIVE_BASE_0_PART3_MD5='51948b7e8d6a9e45638b49988f86c5f9' ARCHIVE_BASE_0_SIZE='24000000' ARCHIVE_BASE_0_VERSION='1.5.8-gog43311' ARCHIVE_BASE_0_URL='https://www.gog.com/game/desperados_iii' ARCHIVE_BASE_DEMO_0_NAME='setup_desperados_3_demo_1.0b_(38752).exe' ARCHIVE_BASE_DEMO_0_MD5='2a856f6a70fb57b7095d829fe90f0e61' ## Do not convert file paths to lowercase ARCHIVE_BASE_DEMO_0_EXTRACTOR='innoextract' ARCHIVE_BASE_DEMO_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_DEMO_0_PART1_NAME='setup_desperados_3_demo_1.0b_(38752)-1.bin' ARCHIVE_BASE_DEMO_0_PART1_MD5='fa829f953b1183dd8a41c12599c992fe' ARCHIVE_BASE_DEMO_0_PART2_NAME='setup_desperados_3_demo_1.0b_(38752)-2.bin' ARCHIVE_BASE_DEMO_0_PART2_MD5='77e764c9d83158abf31b7e98006cc5c9' ARCHIVE_BASE_DEMO_0_SIZE='7537932' ARCHIVE_BASE_DEMO_0_VERSION='1.0b-gog38752' ARCHIVE_BASE_DEMO_0_URL='https://www.gog.com/game/desperados_iii_demo' UNITY3D_NAME='Desperados III' CONTENT_PATH_DEFAULT='.' ## The game fails to start if "THQNOnline" and "thqnocfg.dat" are not included. CONTENT_GAME0_BIN_FILES=' THQNOnline MiVersion thqnocfg.dat' ## The game fails to start if the Steam library is not included. CONTENT_GAME1_BIN_FILES=' steam_api64.dll' CONTENT_GAME_DATA_GI_FILES=" ${UNITY3D_NAME}_Data/GI" CONTENT_GAME_DATA_STREAMINGASSETS_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets" CONTENT_GAME_DATA_LEVELS_FILES_DEMO=" ${UNITY3D_NAME}_Data/level*" CONTENT_GAME_DATA_LEVELS_1_FILES=" ${UNITY3D_NAME}_Data/level? ${UNITY3D_NAME}_Data/level?.resS ${UNITY3D_NAME}_Data/level?? ${UNITY3D_NAME}_Data/level??.resS" CONTENT_GAME_DATA_LEVELS_2_FILES=" ${UNITY3D_NAME}_Data/level??? ${UNITY3D_NAME}_Data/level???.resS" WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/Desperados III' PACKAGES_LIST=' PKG_BIN PKG_DATA_GI PKG_DATA_STREAMINGASSETS PKG_DATA_LEVELS_1 PKG_DATA_LEVELS_2 PKG_DATA' PACKAGES_LIST_DEMO=' PKG_BIN PKG_DATA_GI PKG_DATA_STREAMINGASSETS PKG_DATA_LEVELS PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_GI PKG_DATA_STREAMINGASSETS PKG_DATA_LEVELS_1 PKG_DATA_LEVELS_2' PKG_DATA_DEPENDENCIES_SIBLINGS_DEMO=' PKG_DATA_GI PKG_DATA_STREAMINGASSETS PKG_DATA_LEVELS' PKG_DATA_GI_ID="${PKG_DATA_ID}-gi" PKG_DATA_GI_ID_DEMO="${PKG_DATA_ID_DEMO}-gi" PKG_DATA_GI_DESCRIPTION="$PKG_DATA_DESCRIPTION - gi" PKG_DATA_STREAMINGASSETS_ID="${PKG_DATA_ID}-streamingassets" PKG_DATA_STREAMINGASSETS_ID_DEMO="${PKG_DATA_ID_DEMO}-streamingassets" PKG_DATA_STREAMINGASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - streamingassets" PKG_DATA_LEVELS_ID="${PKG_DATA_ID}-levels" PKG_DATA_LEVELS_ID_DEMO="${PKG_DATA_ID_DEMO}-levels" PKG_DATA_LEVELS_1_ID="${PKG_DATA_LEVELS_ID}-1" PKG_DATA_LEVELS_2_ID="${PKG_DATA_LEVELS_ID}-2" PKG_DATA_LEVELS_DESCRIPTION="$PKG_DATA_DESCRIPTION - levels" PKG_DATA_LEVELS_1_DESCRIPTION="$PKG_DATA_LEVELS_DESCRIPTION - 1" PKG_DATA_LEVELS_2_DESCRIPTION="$PKG_DATA_LEVELS_DESCRIPTION - 2" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-deus-ex.sh0000755000000000000000000001445214471751340013540 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=20241021.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='deus-ex' GAME_NAME='Deus Ex' ARCHIVE_BASE_7_NAME='setup_deus_ex_goty_1.112fm(revision_1.6.3.0)_(51757).exe' ARCHIVE_BASE_7_MD5='9dd2b837300bfa19c6b5b8fde5d38df6' ARCHIVE_BASE_7_TYPE='innosetup' ARCHIVE_BASE_7_SIZE='870816' ARCHIVE_BASE_7_VERSION='1.112fm-gog51757' ARCHIVE_BASE_7_URL='https://www.gog.com/game/deus_ex' ARCHIVE_BASE_6_NAME='setup_deus_ex_goty_1.112fm(revision_1.6.1.0)_(45326).exe' ARCHIVE_BASE_6_MD5='688495ac0f2e6f05f1b47bdc40cee198' ARCHIVE_BASE_6_TYPE='innosetup' ARCHIVE_BASE_6_SIZE='880000' ARCHIVE_BASE_6_VERSION='1.112fm-gog45326' ARCHIVE_BASE_5_NAME='setup_deus_ex_goty_1.112fm(revision_1.6.0.0)_(42784).exe' ARCHIVE_BASE_5_MD5='0ff01014f9364c3487a5193f9ac30dc1' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_SIZE='880000' ARCHIVE_BASE_5_VERSION='1.112fm-gog42784' ARCHIVE_BASE_4_NAME='setup_deus_ex_goty_1.112fm(revision_1.5.0.0)_(35268).exe' ARCHIVE_BASE_4_MD5='3c5693ff82d754d4fe0d6be14e5337dd' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_SIZE='880000' ARCHIVE_BASE_4_VERSION='1.112fm-gog35268' ARCHIVE_BASE_3_NAME='setup_deus_ex_goty_1.112fm_(revision_1.4.0.2)_nglide_fix_(34088).exe' ARCHIVE_BASE_3_MD5='085d7ea792d002236999dfd3697b85de' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_SIZE='760000' ARCHIVE_BASE_3_VERSION='1.112fm-gog34088' ARCHIVE_BASE_2_NAME='setup_deus_ex_goty_1.112fm(revision_1.4.0.2)_(26650).exe' ARCHIVE_BASE_2_MD5='ab165b74b26623ccee5bfd7b6f65f734' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='760000' ARCHIVE_BASE_2_VERSION='1.112fm-gog26650' ARCHIVE_BASE_1_NAME='setup_deus_ex_goty_1.112fm(revision_1.4.0.1.5)_(24946).exe' ARCHIVE_BASE_1_MD5='daa330f1e7a427af64b952cd138cfc59' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='760000' ARCHIVE_BASE_1_VERSION='1.112fm-gog24946' ARCHIVE_BASE_0_NAME='setup_deus_ex_goty_1.112fm(revision_1.4)_(21273).exe' ARCHIVE_BASE_0_MD5='9ec295ecad72e96fb7b9f0109dd90324' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='750000' ARCHIVE_BASE_0_VERSION='1.112fm-gog21273' ARCHIVE_BASE_OLDTEMPLATE_3_NAME='setup_deus_ex_goty_1.112fm(revision_1.3.1)_(17719).exe' ARCHIVE_BASE_OLDTEMPLATE_3_MD5='92e9e6a33642f9e6c41cb24055df9b3c' ARCHIVE_BASE_OLDTEMPLATE_3_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_3_SIZE='750000' ARCHIVE_BASE_OLDTEMPLATE_3_VERSION='1.112fm-gog17719' ARCHIVE_BASE_OLDTEMPLATE_2_NAME='setup_deus_ex_goty_1.112fm(revision_1.3.0.1)_(16231).exe' ARCHIVE_BASE_OLDTEMPLATE_2_MD5='eaaf7c7c3052fbf71f5226e2d4495268' ARCHIVE_BASE_OLDTEMPLATE_2_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_2_SIZE='750000' ARCHIVE_BASE_OLDTEMPLATE_2_VERSION='1.112fm-gog16231' ARCHIVE_BASE_OLDTEMPLATE_1_NAME='setup_deus_ex_goty_1.112fm(revision_1.2.2)_(15442).exe' ARCHIVE_BASE_OLDTEMPLATE_1_MD5='573582142424ba1b5aba1f6727276450' ARCHIVE_BASE_OLDTEMPLATE_1_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_1_SIZE='750000' ARCHIVE_BASE_OLDTEMPLATE_1_VERSION='1.112fm-gog15442' ARCHIVE_BASE_OLDTEMPLATE_0_NAME='setup_deus_ex_2.1.0.12.exe' ARCHIVE_BASE_OLDTEMPLATE_0_MD5='cc2c6e43b2e8e67c7586bbab5ef492ee' ARCHIVE_BASE_OLDTEMPLATE_0_TYPE='innosetup' ARCHIVE_BASE_OLDTEMPLATE_0_SIZE='750000' ARCHIVE_BASE_OLDTEMPLATE_0_VERSION='1.112fm-gog2.1.0.12' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_OLDTEMPLATE='app' CONTENT_GAME_BIN_FILES=' system/*.dll system/*.exe system/*.ini system/*.int' CONTENT_GAME_DATA_FILES=' help maps music sounds textures system/*.u' CONTENT_DOC_DATA_FILES=' manual.pdf system/*.txt' USER_PERSISTENT_FILES=' system/*.ini system/*.log' USER_PERSISTENT_DIRECTORIES=' save' ## TODO: Check if the virtual desktop prevents the game from messing with the desktop gamma value on X.org. WINE_VIRTUAL_DESKTOP='auto' ## Disable csmt, as it would cause performance issues with single CPU affinity. WINE_WINETRICKS_VERBS='csmt=off' APP_MAIN_EXE='system/deusex.exe' ## Run the game binary from its parent directory. APP_MAIN_PRERUN=' # Run the game binary from its parent directory cd "$(dirname "$APP_EXE")" APP_EXE=$(basename "$APP_EXE") ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Set OpenGL as the default rendering engine REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} 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 # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Set OpenGL as the default rendering engine. ini_file='system/deusex.ini' ini_field='GameRenderDevice' ini_value='OpenGLDrv.OpenGLRenderDevice' sed_expression="s/^${ini_field}=.*$/${ini_field}=${ini_value}/" ini_field='FirstRun' ini_value='1100' sed_expression="${sed_expression};s/^${ini_field}=.*$/${ini_field}=${ini_value}/" dos2unix --quiet "$ini_file" sed --in-place --expression="$sed_expression" "$ini_file" unix2dos --quiet "$ini_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Set the CPU affinity to a single core, to work around a random crash on launch. ## cf. https://www.gamingonlinux.com/2020/02/the-sad-case-of-unreal-engine-1-on-mesa-and-linux-in-2020/page=2#r174041 game_exec_line() { cat <<- 'EOF' # Set the CPU affinity to a single core, to work around a random crash on launch # cf. https://www.gamingonlinux.com/2020/02/the-sad-case-of-unreal-engine-1-on-mesa-and-linux-in-2020/page=2#r174041 taskset --cpu-list 0 $(wine_command) "$APP_EXE" "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-diablo-1.sh0000755000000000000000000001204214471751340013547 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Diablo 1 ### script_version=20250211.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='diablo-1' GAME_NAME='Diablo' # Archives ## Diablo 1 (game data) ARCHIVE_BASE_8_NAME='setup_diablo_1.09_hellfire_v4_(78466).exe' ARCHIVE_BASE_8_MD5='c4d36192c35eb5f34faa1d97aae34455' ARCHIVE_BASE_8_TYPE='innosetup' ARCHIVE_BASE_8_SIZE='845401' ARCHIVE_BASE_8_VERSION='1.09-gog78466' ARCHIVE_BASE_8_URL='https://www.gog.com/game/diablo' ARCHIVE_BASE_7_NAME='setup_diablo_1.09_hellfire_v3_(78106).exe' ARCHIVE_BASE_7_MD5='b8d5a38fd4b21311853f19559c2ebfee' ARCHIVE_BASE_7_TYPE='innosetup' ARCHIVE_BASE_7_SIZE='845020' ARCHIVE_BASE_7_VERSION='1.09-gog78106' ARCHIVE_BASE_6_NAME='setup_diablo_1.09_hellfire_v2_(30037).exe' ARCHIVE_BASE_6_MD5='2b8f0eafc528a56452b0008dde4151a8' ARCHIVE_BASE_6_TYPE='innosetup' ARCHIVE_BASE_6_SIZE='843414' ARCHIVE_BASE_6_VERSION='1.09-gog30037' 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_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 ARCHIVE_REQUIRED_DEVILUTIONX_1_NAME='devilutionx-x86_64-linux-gnu.tar.xz' ARCHIVE_REQUIRED_DEVILUTIONX_1_MD5='f5b953adfbc9ea206a7fb393d6a45299' ARCHIVE_REQUIRED_DEVILUTIONX_1_SIZE='39601' ARCHIVE_REQUIRED_DEVILUTIONX_1_VERSION='1.5.4' ARCHIVE_REQUIRED_DEVILUTIONX_1_URL='https://github.com/diasurgical/devilutionX/releases/tag/1.5.4' ARCHIVE_REQUIRED_DEVILUTIONX_0_NAME='devilutionx-linux-x86_64.tar.xz' ARCHIVE_REQUIRED_DEVILUTIONX_0_MD5='36dce8b296aabcefac2dcd3e7bd2a5c7' ARCHIVE_REQUIRED_DEVILUTIONX_0_SIZE='39208' ARCHIVE_REQUIRED_DEVILUTIONX_0_VERSION='1.5.3' ARCHIVE_REQUIRED_DEVILUTIONX_0_URL='https://github.com/diasurgical/devilutionX/releases/tag/1.5.3' 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_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libSDL2_image-2.0.so.0 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Check for the presence of the archive providing the game engine archive_initialize_required \ 'ARCHIVE_DEVILUTIONX' \ 'ARCHIVE_REQUIRED_DEVILUTIONX_1' \ 'ARCHIVE_REQUIRED_DEVILUTIONX_0' ## TODO: Update the version string based on the engine build ## cf. https://forge.dotslashplay.it/play.it/play.it/-/issues/550 # Extract game data archive_extraction_default archive_extraction 'ARCHIVE_DEVILUTIONX' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete unwanted files rm --force --recursive \ 'dx' \ 'hellfire' \ 'tmp' # Rename documentation files mv 'license.txt' 'license.diablo-1.txt' mv 'readme.txt' 'readme.diablo-1.txt' mv 'README.txt' 'readme.devilutionx.txt' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-disco-elysium.sh0000755000000000000000000001700714471751340014753 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Disco Elysium ### script_version=20241209.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='disco-elysium' GAME_NAME='Disco Elysium' ARCHIVE_BASE_7_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f0_(77603).exe' ARCHIVE_BASE_7_MD5='8dad100dd4462ac2cbb01f9f11dd0be1' ARCHIVE_BASE_7_TYPE='innosetup' ARCHIVE_BASE_7_PART1_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f0_(77603)-1.bin' ARCHIVE_BASE_7_PART1_MD5='9743142f176fe8f61617d87d8518aef3' ARCHIVE_BASE_7_PART2_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f0_(77603)-2.bin' ARCHIVE_BASE_7_PART2_MD5='cf4a3e7c58b00a9b90dbd722075350f6' ARCHIVE_BASE_7_PART3_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f0_(77603)-3.bin' ARCHIVE_BASE_7_PART3_MD5='9aa0fdaec98a1b97a9e2059e2db7cfca' ARCHIVE_BASE_7_SIZE='10092905' ARCHIVE_BASE_7_VERSION='1.0.a0a062f0-gog77603' ARCHIVE_BASE_7_URL='https://www.gog.com/game/disco_elysium' ARCHIVE_BASE_6_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f7_(75177).exe' ARCHIVE_BASE_6_MD5='6cced47952e91f7acbaaf718f457ca29' ARCHIVE_BASE_6_TYPE='innosetup' ARCHIVE_BASE_6_PART1_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f7_(75177)-1.bin' ARCHIVE_BASE_6_PART1_MD5='fa7646cb5754722dcc40dd4631f22587' ARCHIVE_BASE_6_PART2_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f7_(75177)-2.bin' ARCHIVE_BASE_6_PART2_MD5='2255e435c92bd2507822469d851fcf79' ARCHIVE_BASE_6_PART3_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f7_(75177)-3.bin' ARCHIVE_BASE_6_PART3_MD5='33bf8ad6a9421f58c5418103f3a95bd6' ARCHIVE_BASE_6_SIZE='10074505' ARCHIVE_BASE_6_VERSION='1.0.a0a062f7-gog75177' ARCHIVE_BASE_5_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f3_(74350).exe' ARCHIVE_BASE_5_MD5='52a20a526a898a173d98b800f331616c' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_PART1_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f3_(74350)-1.bin' ARCHIVE_BASE_5_PART1_MD5='29cac3aca83c0c3ef1b0c5923b7a8f22' ARCHIVE_BASE_5_PART2_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f3_(74350)-2.bin' ARCHIVE_BASE_5_PART2_MD5='82fe3cd0526d89342f41df1f58dfec01' ARCHIVE_BASE_5_PART3_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f3_(74350)-3.bin' ARCHIVE_BASE_5_PART3_MD5='4cbf7779c69ca856d689cad0bc568ef3' ARCHIVE_BASE_5_SIZE='10074442' ARCHIVE_BASE_5_VERSION='1.0.a0a062f3-gog74350' ARCHIVE_BASE_4_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f1_(73330).exe' ARCHIVE_BASE_4_MD5='fa1ab8b1023dbdd96464e48426f724de' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_PART1_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f1_(73330)-1.bin' ARCHIVE_BASE_4_PART1_MD5='fa2edf58880e63def21f2565ac14c73f' ARCHIVE_BASE_4_PART2_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f1_(73330)-2.bin' ARCHIVE_BASE_4_PART2_MD5='b4d7b67b7633f29688380c6fd83a426b' ARCHIVE_BASE_4_PART3_NAME='setup_disco_elysium_-_the_final_cut_wina0a062f1_(73330)-3.bin' ARCHIVE_BASE_4_PART3_MD5='2dff22e62041509591e11d91d5567ee0' ARCHIVE_BASE_4_SIZE='10076178' ARCHIVE_BASE_4_VERSION='1.0.a0a062f1-gog73330' ARCHIVE_BASE_3_NAME='setup_disco_elysium_-_the_final_cut_wina0a062ed_(72872).exe' ARCHIVE_BASE_3_MD5='8f2bc041892c5edea9fbcf5340ad05c1' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_PART1_NAME='setup_disco_elysium_-_the_final_cut_wina0a062ed_(72872)-1.bin' ARCHIVE_BASE_3_PART1_MD5='f150ff79eabe46ac6440ac85f1ed63a9' ARCHIVE_BASE_3_PART2_NAME='setup_disco_elysium_-_the_final_cut_wina0a062ed_(72872)-2.bin' ARCHIVE_BASE_3_PART2_MD5='798ce91c5204e3d0bf810033734700bd' ARCHIVE_BASE_3_PART3_NAME='setup_disco_elysium_-_the_final_cut_wina0a062ed_(72872)-3.bin' ARCHIVE_BASE_3_PART3_MD5='3fccee3836168ab2d76b5759258d8363' ARCHIVE_BASE_3_SIZE='10078050' ARCHIVE_BASE_3_VERSION='1.0.a0a062ed-gog72872' ARCHIVE_BASE_2_NAME='setup_disco_elysium_a0a062e7_(64bit)_(63158).exe' ARCHIVE_BASE_2_MD5='1d9cab4e4952a588a5a8af30ac7dd7aa' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_disco_elysium_a0a062e7_(64bit)_(63158)-1.bin' ARCHIVE_BASE_2_PART1_MD5='fbe7a581843d47681ba0f2aa1696a58c' ARCHIVE_BASE_2_PART2_NAME='setup_disco_elysium_a0a062e7_(64bit)_(63158)-2.bin' ARCHIVE_BASE_2_PART2_MD5='8925592fc18c4565e262fd4e3008e9fc' ARCHIVE_BASE_2_PART3_NAME='setup_disco_elysium_a0a062e7_(64bit)_(63158)-3.bin' ARCHIVE_BASE_2_PART3_MD5='ddbda58eb8c570662689721246b4f081' ARCHIVE_BASE_2_SIZE='10000000' ARCHIVE_BASE_2_VERSION='1.0.a0a062e7-gog63158' ARCHIVE_BASE_1_NAME='setup_disco_elysium_3c54ad81_(64bit)_(60250).exe' ARCHIVE_BASE_1_MD5='c915229dfa223b16f4399475589ff346' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_disco_elysium_3c54ad81_(64bit)_(60250)-1.bin' ARCHIVE_BASE_1_PART1_MD5='a6d13f109f26f17a2f1a9d06f519ba1f' ARCHIVE_BASE_1_PART2_NAME='setup_disco_elysium_3c54ad81_(64bit)_(60250)-2.bin' ARCHIVE_BASE_1_PART2_MD5='816a2fed25591f9f26b094f9ead7a1af' ARCHIVE_BASE_1_PART3_NAME='setup_disco_elysium_3c54ad81_(64bit)_(60250)-3.bin' ARCHIVE_BASE_1_PART3_MD5='a12113e41085154d94209cd076ce5057' ARCHIVE_BASE_1_SIZE='10000000' ARCHIVE_BASE_1_VERSION='1.0.3c54ad81-gog60250' ARCHIVE_BASE_0_NAME='setup_disco_elysium_ee8d3b39_(64bit)_(58288).exe' ARCHIVE_BASE_0_MD5='6b196bb79102de695bbc45904342b8ad' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_disco_elysium_ee8d3b39_(64bit)_(58288)-1.bin' ARCHIVE_BASE_0_PART1_MD5='120e95e8fef4537283705b5510af6d86' ARCHIVE_BASE_0_PART2_NAME='setup_disco_elysium_ee8d3b39_(64bit)_(58288)-2.bin' ARCHIVE_BASE_0_PART2_MD5='82c73e068dc3b18893e11a45bf74242e' ARCHIVE_BASE_0_PART3_NAME='setup_disco_elysium_ee8d3b39_(64bit)_(58288)-3.bin' ARCHIVE_BASE_0_PART3_MD5='20d337ae2de345628b5e4a6b9a2f55c7' ARCHIVE_BASE_0_SIZE='10000000' ARCHIVE_BASE_0_VERSION='1.0.ee8d3b39-gog58288' UNITY3D_NAME='disco' UNITY3D_NAME_2='disco elysium' UNITY3D_NAME_1='disco elysium' UNITY3D_NAME_0='disco elysium' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_STREAMINGASSETS_FILES=" ${UNITY3D_NAME}_data/streamingassets" CONTENT_GAME_DATA_STREAMINGASSETS_FILES_2=" ${UNITY3D_NAME_2}_data/streamingassets" CONTENT_GAME_DATA_STREAMINGASSETS_FILES_1=" ${UNITY3D_NAME_1}_data/streamingassets" CONTENT_GAME_DATA_STREAMINGASSETS_FILES_0=" ${UNITY3D_NAME_0}_data/streamingassets" WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/ZAUM Studio/Disco Elysium' PACKAGES_LIST=' PKG_BIN PKG_DATA_STREAMINGASSETS PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_STREAMINGASSETS' PKG_DATA_STREAMINGASSETS_ID="${PKG_DATA_ID}-streamingassets" PKG_DATA_STREAMINGASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - streamingassets" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-distance.sh0000755000000000000000000000577514471751340013770 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Distance ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-dungeon-keeper-1.sh0000755000000000000000000001474714471751340015243 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Dungeon Keeper 1 ### script_version=20241123.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='dungeon-keeper-1' GAME_NAME='Dungeon Keeper' ARCHIVE_BASE_2_NAME='setup_dungeon_keeper_gold_1.01_fix_(76190).exe' ARCHIVE_BASE_2_MD5='bb51a55e868c7b22c505cbf6bfaa3789' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='393045' ARCHIVE_BASE_2_VERSION='1.01-gog76190' ARCHIVE_BASE_2_URL='https://www.gog.com/game/dungeon_keeper' ARCHIVE_BASE_1_NAME='setup_dungeon_keeper_gold_10.1_(28184).exe' ARCHIVE_BASE_1_MD5='5d9c6f723c0375590cd77f79bed44eff' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='370026' ARCHIVE_BASE_1_VERSION='1.01-gog28184' 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='1.01-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 dpatch.1 wpatch.1 deeper.exe dos4gw.exe keeper.exe patch1.exe keeper.pat keeper.pti *.ogg' ## In the 2.1.0.7 GOG installer, the disk image table of contents is named "game.inst" instead of "game.ins" CONTENT_GAME0_MAIN_FILES=' game.inst' CONTENT_GAME1_MAIN_PATH='__support/save' CONTENT_GAME1_MAIN_PATH_0='app' CONTENT_GAME1_MAIN_FILES=' keeper.cfg sound/dig.ini' CONTENT_DOC_MAIN_FILES=' readme.txt *.pdf' ## Localizations CONTENT_L10N_TXT_PATH='keeper/data' CONTENT_L10N_VOICES_SPEECH_PATH='keeper/sound/speech' CONTENT_L10N_VOICES_ATLAS_PATH='keeper/sound/atlas' ### English CONTENT_L10N_TXT_EN_PATH="${CONTENT_L10N_TXT_PATH}/english" CONTENT_L10N_TXT_EN_FILES=' dd1text.dat text.dat' CONTENT_L10N_VOICES_SPEECH_EN_PATH="${CONTENT_L10N_VOICES_SPEECH_PATH}/english" CONTENT_L10N_VOICES_SPEECH_EN_FILES=' speech.dat' CONTENT_L10N_VOICES_ATLAS_EN_PATH="${CONTENT_L10N_VOICES_ATLAS_PATH}/english" CONTENT_L10N_VOICES_ATLAS_EN_FILES=' bad??.wav good??.wav' ### French CONTENT_L10N_TXT_FR_PATH="${CONTENT_L10N_TXT_PATH}/french" CONTENT_L10N_TXT_FR_FILES=' dd1text.dat text.dat' CONTENT_L10N_VOICES_SPEECH_FR_PATH="${CONTENT_L10N_VOICES_SPEECH_PATH}/french" CONTENT_L10N_VOICES_SPEECH_FR_FILES=' speech.dat' CONTENT_L10N_VOICES_ATLAS_FR_PATH="${CONTENT_L10N_VOICES_ATLAS_PATH}/french" CONTENT_L10N_VOICES_ATLAS_FR_FILES=' bad??.wav good??.wav' GAME_IMAGE='game.ins' GAME_IMAGE_TYPE='iso' USER_PERSISTENT_DIRECTORIES=' save' USER_PERSISTENT_FILES=' *.cfg data/HISCORES.DAT' APP_MAIN_EXE='keeper.exe' APP_MAIN_ICON='goggame-1207658934.ico' APP_ADDON_ID="${GAME_ID}-deeper-dungeons" APP_ADDON_NAME="$GAME_NAME - Deeper Dungeons" APP_ADDON_EXE='deeper.exe' APP_ADDON_ICON='gfw_high_addon.ico' PACKAGES_LIST=' PKG_L10N_TXT_EN PKG_L10N_TXT_FR PKG_L10N_VOICES_EN PKG_L10N_VOICES_FR PKG_MAIN' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_TXT PKG_L10N_VOICES' PKG_L10N_TXT_ID="${GAME_ID}-l10n-txt" PKG_L10N_TXT_EN_ID="${PKG_L10N_TXT_ID}-en" PKG_L10N_TXT_FR_ID="${PKG_L10N_TXT_ID}-fr" PKG_L10N_TXT_PROVIDES=" $PKG_L10N_TXT_ID" PKG_L10N_TXT_EN_PROVIDES="$PKG_L10N_TXT_PROVIDES" PKG_L10N_TXT_FR_PROVIDES="$PKG_L10N_TXT_PROVIDES" PKG_L10N_TXT_EN_DESCRIPTION='English text' PKG_L10N_TXT_FR_DESCRIPTION='French text' PKG_L10N_VOICES_ID="${GAME_ID}-l10n-voices" PKG_L10N_VOICES_EN_ID="${PKG_L10N_VOICES_ID}-en" PKG_L10N_VOICES_FR_ID="${PKG_L10N_VOICES_ID}-fr" PKG_L10N_VOICES_PROVIDES=" $PKG_L10N_VOICES_ID" PKG_L10N_VOICES_EN_PROVIDES="$PKG_L10N_VOICES_PROVIDES" PKG_L10N_VOICES_FR_PROVIDES="$PKG_L10N_VOICES_PROVIDES" PKG_L10N_VOICES_EN_DESCRIPTION='English voices' PKG_L10N_VOICES_FR_DESCRIPTION='French voices' # unar is used to extract the contents of the disk image REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} 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 # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Delete 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. ## TODO: This would not be required if the DISK_IMAGE variable was context-sensitive ## cf. https://forge.dotslashplay.it/play.it/play.it/-/issues/549 if [ -e 'game.inst' ]; then mv 'game.inst' "$GAME_IMAGE" fi ) # Extract localization content from the disk image ARCHIVE_L10N_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/game.gog" ARCHIVE_L10N_EXTRACTOR='unar' archive_extraction 'ARCHIVE_L10N' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Convert all file paths to lowercase. tolower . ) # Include game data content_inclusion_icons 'PKG_MAIN' content_inclusion 'L10N_TXT_EN' 'PKG_L10N_TXT_EN' "$(path_game_data)/data" content_inclusion 'L10N_TXT_FR' 'PKG_L10N_TXT_FR' "$(path_game_data)/data" content_inclusion 'L10N_VOICES_SPEECH_EN' 'PKG_L10N_VOICES_EN' "$(path_game_data)/sound" content_inclusion 'L10N_VOICES_SPEECH_FR' 'PKG_L10N_VOICES_FR' "$(path_game_data)/sound" content_inclusion 'L10N_VOICES_ATLAS_EN' 'PKG_L10N_VOICES_EN' "$(path_game_data)/sound/atlas" content_inclusion 'L10N_VOICES_ATLAS_FR' 'PKG_L10N_VOICES_FR' "$(path_game_data)/sound/atlas" content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation case "$(messages_language)" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_L10N_TXT_EN' 'PKG_L10N_VOICES_EN' 'PKG_MAIN' printf "$lang_string" "$lang_fr" print_instructions 'PKG_L10N_TXT_FR' 'PKG_L10N_VOICES_FR' 'PKG_MAIN' # Clean up working_directory_cleanup exit 0 games/play-dungeon-keeper-2.sh0000755000000000000000000000743214471751340015235 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Dungeon Keeper 2 ### script_version=20241123.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='dungeon-keeper-2' GAME_NAME='Dungeon Keeper Ⅱ' ARCHIVE_BASE_EN_2_NAME='setup_dungeon_keepertm_2_1.7_alttab_hotfix_(77775).exe' ARCHIVE_BASE_EN_2_MD5='250ba86776e434e2fc65534a97e68e41' ARCHIVE_BASE_EN_2_TYPE='innosetup' ARCHIVE_BASE_EN_2_PART1_NAME='setup_dungeon_keepertm_2_1.7_alttab_hotfix_(77775)-1.bin' ARCHIVE_BASE_EN_2_PART1_MD5='4cf9a2db8dfba58d6e869e2b124edbe0' ARCHIVE_BASE_EN_2_SIZE='514101' ARCHIVE_BASE_EN_2_VERSION='1.7-gog77775' ARCHIVE_BASE_EN_2_URL='https://www.gog.com/game/dungeon_keeper_2' ARCHIVE_BASE_FR_2_NAME='setup_dungeon_keepertm_2_1.7_alttab_hotfix_(french)_(77775).exe' ARCHIVE_BASE_FR_2_MD5='1ce059082cddb831ea25e571c571eaef' ARCHIVE_BASE_FR_2_TYPE='innosetup' ARCHIVE_BASE_FR_2_PART1_NAME='setup_dungeon_keepertm_2_1.7_alttab_hotfix_(french)_(77775)-1.bin' ARCHIVE_BASE_FR_2_PART1_MD5='5cd909d382a35f22ad93470e5281fa2e' ARCHIVE_BASE_FR_2_SIZE='512981' ARCHIVE_BASE_FR_2_VERSION='1.7-gog77775' ARCHIVE_BASE_FR_2_URL='https://www.gog.com/game/dungeon_keeper_2' ARCHIVE_BASE_EN_1_NAME='setup_dungeon_keeper_2_1.7_(22280).exe' ARCHIVE_BASE_EN_1_MD5='eeb2229ee49518504884a9ac65f611ad' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_SIZE='500537' ARCHIVE_BASE_EN_1_VERSION='1.7-gog22280' ARCHIVE_BASE_EN_0_NAME='setup_dungeon_keeper2_2.0.0.32.exe' ARCHIVE_BASE_EN_0_MD5='92d04f84dd870d9624cd18449d3622a5' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='510000' ARCHIVE_BASE_EN_0_VERSION='1.7-gog2.0.0.32' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' aweman32.dll patch.dll qmixer.dll sfman32.dll weanetr.dll dkii.exe dkii-dx.exe' CONTENT_GAME_L10N_FILES=' data/sound/sfx/speech_* data/text/default' CONTENT_GAME_DATA_FILES=' data dk2texturecache' CONTENT_DOC_L10N_FILES=' eamseula.txt readme.txt' CONTENT_DOC_DATA_FILES=' manual.pdf reference_card.pdf' USER_PERSISTENT_DIRECTORIES=' data/settings data/save' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Bullfrog Productions Ltd\Dungeon Keeper II' WINE_VIRTUAL_DESKTOP='auto' ## Work around poor performances using hardware rendering with Intel+Mesa. WINE_WINETRICKS_VERBS='csmt=off' APP_MAIN_EXE='dkii-dx.exe' APP_MAIN_ICON='dkii.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_PROVIDES_EN="$PKG_L10N_PROVIDES" PKG_L10N_PROVIDES_FR="$PKG_L10N_PROVIDES" PKG_L10N_DESCRIPTION_EN='English localisation' PKG_L10N_DESCRIPTION_FR='French localisation' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-factorio.sh0000755000000000000000000002277714471751340014005 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=20241121.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='factorio' GAME_NAME='Factorio' GAME_NAME_SPACEAGE="${GAME_NAME}: Space Age" GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" # Archives ## Factorio (full game) ARCHIVE_BASE_0_NAME='factorio_linux_2.0.7.tar.xz' ARCHIVE_BASE_0_MD5='016efe181a57ebb649260b68b0696b3a' ARCHIVE_BASE_0_SIZE='1973608' ARCHIVE_BASE_0_VERSION='2.0.7-1' ARCHIVE_BASE_0_URL='https://www.factorio.com/' ARCHIVE_BASE_PRE2_15_NAME='factorio_alpha_x64_1.1.107.tar.xz' ARCHIVE_BASE_PRE2_15_MD5='5c3294a7b2bd3b93a7cd9f8a7e785885' ARCHIVE_BASE_PRE2_15_SIZE='1783701' ARCHIVE_BASE_PRE2_15_VERSION='1.1.107-1' ARCHIVE_BASE_PRE2_14_NAME='factorio_alpha_x64_1.1.91.tar.xz' ARCHIVE_BASE_PRE2_14_MD5='3d906d237f44c5a3d7cd019f5733c53c' ARCHIVE_BASE_PRE2_14_SIZE='1894576' ARCHIVE_BASE_PRE2_14_VERSION='1.1.91-1' ARCHIVE_BASE_PRE2_13_NAME='factorio_alpha_x64_1.1.87.tar.xz' ARCHIVE_BASE_PRE2_13_MD5='d7972ea941172301e18ebb64694a10b6' ARCHIVE_BASE_PRE2_13_SIZE='1750584' ARCHIVE_BASE_PRE2_13_VERSION='1.1.87-1' ARCHIVE_BASE_PRE2_12_NAME='factorio_alpha_x64_1.1.80.tar.xz' ARCHIVE_BASE_PRE2_12_MD5='fc2e68ed66beedb82ad4a25023ac32aa' ARCHIVE_BASE_PRE2_12_SIZE='1800000' ARCHIVE_BASE_PRE2_12_VERSION='1.1.80-1' ARCHIVE_BASE_PRE2_11_NAME='factorio_alpha_x64_1.1.77.tar.xz' ARCHIVE_BASE_PRE2_11_MD5='ea6a481b694d73a956e45ea3ebe17a43' ARCHIVE_BASE_PRE2_11_SIZE='1800000' ARCHIVE_BASE_PRE2_11_VERSION='1.1.77-1' ARCHIVE_BASE_PRE2_10_NAME='factorio_alpha_x64_1.1.76.tar.xz' ARCHIVE_BASE_PRE2_10_MD5='c2a2302f2c1819a453a023789b3b8558' ARCHIVE_BASE_PRE2_10_SIZE='1800000' ARCHIVE_BASE_PRE2_10_VERSION='1.1.76-1' ARCHIVE_BASE_PRE2_9_NAME='factorio_alpha_x64_1.1.61.tar.xz' ARCHIVE_BASE_PRE2_9_MD5='d829704d00f92bef8d72ba3f36910529' ARCHIVE_BASE_PRE2_9_SIZE='1800000' ARCHIVE_BASE_PRE2_9_VERSION='1.1.61-1' ARCHIVE_BASE_PRE2_8_NAME='factorio_alpha_x64_1.1.59.tar.xz' ARCHIVE_BASE_PRE2_8_MD5='568328112d5b6e57c9e7a13237c85500' ARCHIVE_BASE_PRE2_8_SIZE='1800000' ARCHIVE_BASE_PRE2_8_VERSION='1.1.59-1' ARCHIVE_BASE_PRE2_7_NAME='factorio_alpha_x64_1.1.57.tar.xz' ARCHIVE_BASE_PRE2_7_MD5='c1e5392a9c7d2ead37de90c1ce4732ff' ARCHIVE_BASE_PRE2_7_SIZE='1800000' ARCHIVE_BASE_PRE2_7_VERSION='1.1.57-1' ARCHIVE_BASE_PRE2_6_NAME='factorio_alpha_x64_1.1.53.tar.xz' ARCHIVE_BASE_PRE2_6_MD5='3197e3b0de006f3c14027604ba39a244' ARCHIVE_BASE_PRE2_6_SIZE='1800000' ARCHIVE_BASE_PRE2_6_VERSION='1.1.53-1' ARCHIVE_BASE_PRE2_5_NAME='factorio_alpha_x64_1.1.41.tar.xz' ARCHIVE_BASE_PRE2_5_MD5='9dbe3f0b17a2f217f62b1d6b756897dc' ARCHIVE_BASE_PRE2_5_SIZE='1800000' ARCHIVE_BASE_PRE2_5_VERSION='1.1.41-1' ARCHIVE_BASE_PRE2_4_NAME='factorio_alpha_x64_1.1.39.tar.xz' ARCHIVE_BASE_PRE2_4_MD5='92dae2519513f87cc9b25c26930a21a9' ARCHIVE_BASE_PRE2_4_SIZE='1800000' ARCHIVE_BASE_PRE2_4_VERSION='1.1.39-1' ARCHIVE_BASE_PRE2_3_NAME='factorio_alpha_x64_1.1.30.tar.xz' ARCHIVE_BASE_PRE2_3_MD5='b039e25fef976f2ebe77bf5d9bca3c90' ARCHIVE_BASE_PRE2_3_SIZE='1800000' ARCHIVE_BASE_PRE2_3_VERSION='1.1.30-1' ARCHIVE_BASE_PRE2_2_NAME='factorio_alpha_x64_1.1.27.tar.xz' ARCHIVE_BASE_PRE2_2_MD5='71c370e0363c40e95f0a9af56b8f4a9b' ARCHIVE_BASE_PRE2_2_SIZE='1800000' ARCHIVE_BASE_PRE2_2_VERSION='1.1.27-1' ARCHIVE_BASE_PRE2_1_NAME='factorio_alpha_x64_1.1.19.tar.xz' ARCHIVE_BASE_PRE2_1_MD5='ffe7310259e6176d20fc4add10d8a3d3' ARCHIVE_BASE_PRE2_1_SIZE='1800000' ARCHIVE_BASE_PRE2_1_VERSION='1.1.19-1' ARCHIVE_BASE_PRE2_0_NAME='factorio_alpha_x64_1.0.0.tar.xz' ARCHIVE_BASE_PRE2_0_MD5='001910cafbfa8f4ac61b2897f91fe77e' ARCHIVE_BASE_PRE2_0_SIZE='1700000' ARCHIVE_BASE_PRE2_0_VERSION='1.0.0-1' ## Factorio including Space Age expansion ARCHIVE_BASE_SPACEAGE_0_NAME='factorio-space-age_linux_2.0.7.tar.xz' ARCHIVE_BASE_SPACEAGE_0_MD5='56559ce107be62443b8743dc8696f65e' ARCHIVE_BASE_SPACEAGE_0_SIZE='4741087' ARCHIVE_BASE_SPACEAGE_0_VERSION='2.0.7-1' ARCHIVE_BASE_SPACEAGE_0_URL='https://www.factorio.com/' ## Factorio (demo) ARCHIVE_BASE_DEMO_13_NAME='factorio_demo_x64_1.1.107.tar.xz' ARCHIVE_BASE_DEMO_13_MD5='e59b6e296f2080d1f80df3090f3b40d4' ARCHIVE_BASE_DEMO_13_SIZE='1645945' ARCHIVE_BASE_DEMO_13_VERSION='1.1.107-1' ARCHIVE_BASE_DEMO_13_URL='https://www.factorio.com/download' ARCHIVE_BASE_DEMO_12_NAME='factorio_demo_x64_1.1.91.tar.xz' ARCHIVE_BASE_DEMO_12_MD5='b4c599f44952033e5830f3fee78cb41f' ARCHIVE_BASE_DEMO_12_SIZE='1687672' ARCHIVE_BASE_DEMO_12_VERSION='1.1.91-1' ARCHIVE_BASE_DEMO_11_NAME='factorio_demo_x64_1.1.87.tar.xz' ARCHIVE_BASE_DEMO_11_MD5='7968cbd443ad7d562c6bbbb5a5f99d0d' ARCHIVE_BASE_DEMO_11_SIZE='1687456' ARCHIVE_BASE_DEMO_11_VERSION='1.1.87-1' ARCHIVE_BASE_DEMO_10_NAME='factorio_demo_x64_1.1.76.tar.xz' ARCHIVE_BASE_DEMO_10_MD5='bf5eb5cf72137a87ea1055cf9b39967a' ARCHIVE_BASE_DEMO_10_SIZE='1700000' ARCHIVE_BASE_DEMO_10_VERSION='1.1.76-1' ARCHIVE_BASE_DEMO_9_NAME='factorio_demo_x64_1.1.59.tar.xz' ARCHIVE_BASE_DEMO_9_MD5='c40c223284a8a373800bf777d364f5b2' ARCHIVE_BASE_DEMO_9_SIZE='1700000' ARCHIVE_BASE_DEMO_9_VERSION='1.1.59-1' ARCHIVE_BASE_DEMO_8_NAME='factorio_demo_x64_1.1.53.tar.xz' ARCHIVE_BASE_DEMO_8_MD5='79bafca740b1ea6fb13ab94b79845601' ARCHIVE_BASE_DEMO_8_SIZE='1700000' ARCHIVE_BASE_DEMO_8_VERSION='1.1.53-1' ARCHIVE_BASE_DEMO_7_NAME='factorio_demo_x64_1.1.41.tar.xz' ARCHIVE_BASE_DEMO_7_MD5='df020fa5c98690d8aedf8cb23b80bce3' ARCHIVE_BASE_DEMO_7_VERSION='1.1.41-1' ARCHIVE_BASE_DEMO_7_SIZE='1700000' ARCHIVE_BASE_DEMO_6_NAME='factorio_demo_x64_1.1.39.tar.xz' ARCHIVE_BASE_DEMO_6_MD5='cabef150f9b7af9b1480d2590b7799ec' ARCHIVE_BASE_DEMO_6_VERSION='1.1.39-1' ARCHIVE_BASE_DEMO_6_SIZE='1700000' ARCHIVE_BASE_DEMO_5_NAME='factorio_demo_x64_1.1.33.tar.xz' ARCHIVE_BASE_DEMO_5_MD5='82cc1137048cf98121cd6943e51ae597' ARCHIVE_BASE_DEMO_5_VERSION='1.1.33-1' ARCHIVE_BASE_DEMO_5_SIZE='1700000' ARCHIVE_BASE_DEMO_4_NAME='factorio_demo_x64_1.1.32.tar.xz' ARCHIVE_BASE_DEMO_4_MD5='275b63133ac56e59ccb73e98f5bebed2' ARCHIVE_BASE_DEMO_4_VERSION='1.1.32-1' ARCHIVE_BASE_DEMO_4_SIZE='1700000' ARCHIVE_BASE_DEMO_3_NAME='factorio_demo_x64_1.1.30.tar.xz' ARCHIVE_BASE_DEMO_3_MD5='36186abcbe560591bd8e4c207291409f' ARCHIVE_BASE_DEMO_3_VERSION='1.1.30-1' ARCHIVE_BASE_DEMO_3_SIZE='1700000' ARCHIVE_BASE_DEMO_2_NAME='factorio_demo_x64_1.1.27.tar.xz' ARCHIVE_BASE_DEMO_2_MD5='cdb61b4b98a704e9c6a1090938dfabee' ARCHIVE_BASE_DEMO_2_VERSION='1.1.27-1' ARCHIVE_BASE_DEMO_2_SIZE='1700000' ARCHIVE_BASE_DEMO_1_NAME='factorio_demo_x64_1.0.0.tar.xz' ARCHIVE_BASE_DEMO_1_MD5='3995194f9c4b4368ecf27ffa9234008e' ARCHIVE_BASE_DEMO_1_VERSION='1.0.0-1' ARCHIVE_BASE_DEMO_1_SIZE='1400000' ARCHIVE_BASE_DEMO_0_NAME='factorio_demo_x64_0.16.51.tar.xz' ARCHIVE_BASE_DEMO_0_MD5='130267c91df0be6c2034b64fb05d389b' ARCHIVE_BASE_DEMO_0_VERSION='0.16.51-1' ARCHIVE_BASE_DEMO_0_SIZE='680000' CONTENT_PATH_DEFAULT='factorio' CONTENT_GAME_BIN_FILES=' bin/x64/factorio' CONTENT_GAME_DATA_SPACEAGE_FILES=' data/elevated-rails data/quality data/space-age' 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' ## Work around the engine poor support for symbolic links APP_MAIN_PRERUN=' # Work around the engine poor support for symbolic links for mod in core base elevated-rails quality space-age; do if [ ! -h "data/${mod}" ] && [ -e "${PATH_GAME_DATA}/data/${mod}" ]; then rm --force --recursive "data/${mod}" ln --symbolic "${PATH_GAME_DATA}/data/${mod}" "data/${mod}" fi done ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PACKAGES_LIST_SPACEAGE=' PKG_BIN PKG_DATA_SPACEAGE PKG_DATA' PKG_BIN_ID_SPACEAGE="${GAME_ID}-space-age" PKG_BIN_ID_DEMO="$GAME_ID_DEMO" PKG_BIN_PROVIDES_SPACEAGE=" $GAME_ID" PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_SIBLINGS_SPACEAGE=' PKG_DATA PKG_DATA_SPACEAGE' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libm.so.6 libpthread.so.0 libresolv.so.2 librt.so.1' PKG_BIN_DEPENDENCIES_LIBRARIES_PRE2=' libasound.so.2 libc.so.6 libdl.so.2 libGL.so.1 libm.so.6 libpthread.so.0 libpulse-simple.so.0 libpulse.so.0 libresolv.so.2 librt.so.1 libX11.so.6 libXcursor.so.1 libXext.so.6 libXinerama.so.1 libXrandr.so.2' PKG_BIN_DEPENDENCIES_LIBRARIES_DEMO="$PKG_BIN_DEPENDENCIES_LIBRARIES_PRE2" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_SPACEAGE_ID="${PKG_DATA_ID}-space-age" PKG_DATA_SPACEAGE_DESCRIPTION="$PKG_DATA_DESCRIPTION - Space Age" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-faster-than-light.sh0000755000000000000000000001123614471751340015504 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=20241027.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='faster-than-light' GAME_NAME='FTL: Faster Than Light' # Archives ## Installers sold from gog.com ARCHIVE_BASE_GOG_6_NAME='ftl_advanced_edition_1_6_12_2_35269.sh' ARCHIVE_BASE_GOG_6_MD5='fc012e9ac7515f0b7b119a73ccfd7190' ARCHIVE_BASE_GOG_6_SIZE='401336' ARCHIVE_BASE_GOG_6_VERSION='1.6.12.2-gog35269' ARCHIVE_BASE_GOG_6_URL='https://www.gog.com/game/faster_than_light' ARCHIVE_BASE_GOG_5_NAME='ftl_advanced_edition_1_6_12_2_34795.sh' ARCHIVE_BASE_GOG_5_MD5='d62355fc9339cd901242fc1828e8c248' ARCHIVE_BASE_GOG_5_SIZE='410000' ARCHIVE_BASE_GOG_5_VERSION='1.6.12.2-gog34795' ARCHIVE_BASE_GOG_4_NAME='ftl_advanced_edition_1_6_9_25330.sh' ARCHIVE_BASE_GOG_4_MD5='c3598ab0c07d1f038eb1642da066b6a5' ARCHIVE_BASE_GOG_4_SIZE='230000' ARCHIVE_BASE_GOG_4_VERSION='1.6.9-gog25330' ARCHIVE_BASE_GOG_3_NAME='ftl_advanced_edition_1_6_8_24110.sh' ARCHIVE_BASE_GOG_3_MD5='4d654aeca32de557c109fa5c642ff455' ARCHIVE_BASE_GOG_3_SIZE='230000' ARCHIVE_BASE_GOG_3_VERSION='1.6.8-gog24110' ARCHIVE_BASE_GOG_2_NAME='ftl_advanced_edition_1_6_7_24012.sh' ARCHIVE_BASE_GOG_2_MD5='43392da0d11548b1c16f1263fc5fad65' ARCHIVE_BASE_GOG_2_SIZE='230000' ARCHIVE_BASE_GOG_2_VERSION='1.6.8-gog24012' ARCHIVE_BASE_GOG_1_NAME='ftl_advanced_edition_en_1_6_7_18662.sh' ARCHIVE_BASE_GOG_1_MD5='2c5254547639b7718dac7a06dabd1d82' ARCHIVE_BASE_GOG_1_SIZE='210000' ARCHIVE_BASE_GOG_1_VERSION='1.6.7-gog18662' ARCHIVE_BASE_GOG_0_NAME='ftl_advanced_edition_en_1_6_3_17917.sh' ARCHIVE_BASE_GOG_0_MD5='b64692d5302a1ab60d912c5eb5fbc5e4' ARCHIVE_BASE_GOG_0_SIZE='210000' ARCHIVE_BASE_GOG_0_VERSION='1.6.3-gog17917' # Installers sold from humblebundle.com ARCHIVE_BASE_HUMBLE_2_NAME='FTL.1.6.12.Linux.zip' ARCHIVE_BASE_HUMBLE_2_MD5='4ee7ea561d7753c8a003570364e15311' ARCHIVE_BASE_HUMBLE_2_SIZE='400104' ARCHIVE_BASE_HUMBLE_2_VERSION='1.6.12-humble191220' ARCHIVE_BASE_HUMBLE_2_URL='https://www.humblebundle.com/store/ftl-faster-than-light' ARCHIVE_BASE_HUMBLE_1_NAME='FTL.1.6.9.tar.gz' ARCHIVE_BASE_HUMBLE_1_MD5='c70d9cbc55217a5f83e0d51189240ec2' ARCHIVE_BASE_HUMBLE_1_SIZE='230000' ARCHIVE_BASE_HUMBLE_1_VERSION='1.6.9-humble181120' ARCHIVE_BASE_HUMBLE_0_NAME='FTL-linux-1.6.8.tar.gz' ARCHIVE_BASE_HUMBLE_0_MD5='5898d476dae289dae20d93ecfc1b8390' ARCHIVE_BASE_HUMBLE_0_SIZE='230000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.6.8-humble180928' CONTENT_PATH_DEFAULT_GOG='data/noarch/game/data' CONTENT_PATH_DEFAULT_HUMBLE='FTL-linux/data' CONTENT_PATH_DEFAULT_HUMBLE_2='FTL.1.6.12.Linux/data' CONTENT_GAME_BIN64_FILES=' FTL.amd64' CONTENT_GAME_BIN32_FILES=' FTL.x86' CONTENT_GAME_DATA_FILES=' exe_icon.bmp ftl.dat' CONTENT_DOC_DATA_FILES=' licenses' CONTENT_DOC0_DATA_RELATIVE_PATH='..' CONTENT_DOC0_DATA_FILES=' FTL_README.html' APP_MAIN_EXE_BIN64='FTL.amd64' APP_MAIN_EXE_BIN32='FTL.x86' APP_MAIN_ICON='exe_icon.bmp' ## Work around problems with non-US locales. APP_MAIN_PRERUN=' # Work around problems with non-US locales export LANG=C ' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libasound.so.2 libc.so.6 libdl.so.2 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libX11.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-freelancer.sh0000755000000000000000000001060114471751340014264 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Freelancer ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='freelancer' GAME_NAME='Freelancer' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_DEMO_EN_0_NAME='freelancer_demo.exe' ARCHIVE_BASE_DEMO_EN_0_MD5='1af0a4cc730a64de9f6a6ecde30edc11' ARCHIVE_BASE_DEMO_EN_0_TYPE='cabinet' ARCHIVE_BASE_DEMO_EN_0_VERSION='1.0-archiveorg1' ARCHIVE_BASE_DEMO_EN_0_SIZE='450000' ARCHIVE_BASE_DEMO_EN_0_URL='https://archive.org/details/freelancer_demo' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_RELATIVE_PATH='game' CONTENT_GAME_BIN_FILES=' exe/freelancer.exe' CONTENT_GAME0_BIN_PATH='cab1' CONTENT_GAME0_BIN_FILES=' dlls exe/1033 exe/alchemy.dll exe/common.dll exe/dacom.dll exe/dalib.dll exe/debuglib.dll exe/deformable2.dll exe/ebueula.dll exe/engbase.dll exe/flmaterials.dll exe/gundll.dll exe/imeui.dll exe/luaprofile.dll exe/movie.dll exe/msxml3a.dll exe/msxml3.dll exe/msxml3r.dll exe/readfile.dll exe/remoteclient.dll exe/remoteserver.dll exe/rendcomp.dll exe/rp8.dll exe/rpclocal.dll exe/server.dll exe/shading.dll exe/soundmanager.dll exe/soundstreamer.dll exe/system.dll exe/thorn.dll exe/unicows.dll exe/x86math.dll exe/ximage.dll exe/zlib.dll exe/*.bmp exe/*.exe exe/*.fl exe/*.hta exe/*.ini exe/*.txt' CONTENT_GAME_L10N_PATH='cab1' CONTENT_GAME_L10N_FILES=' data/audio/dialogue data/audio/mixes data/audio/sounds/ui/news_vendor_open.wav data/audio/*.ini data/audio/*.utf exe/equipresources.dll exe/infocards.dll exe/misctext.dll exe/misctextinfo2.dll exe/nameresources.dll exe/offerbriberesources.dll exe/resources.dll exe/serverresources.dll' CONTENT_GAME0_L10N_PATH='cab2' CONTENT_GAME0_L10N_FILES=' data/audio/dialogue data/audio/mixes data/audio/sounds/ui/news_vendor_open.wav data/audio/*.ini data/audio/*.utf' CONTENT_FONTS_DATA_PATH='fonts' CONTENT_FONTS_DATA_FILES=' agencyb.ttf agencyr.ttf arialuni.ttf' CONTENT_GAME_DATA_FILES=' fl.ico' CONTENT_GAME0_DATA_PATH='cab1' CONTENT_GAME0_DATA_FILES=' data' CONTENT_GAME1_DATA_PATH='cab2' CONTENT_GAME1_DATA_FILES=' data' CONTENT_DOC_DATA_FILES=' eula.rtf readme.rtf' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Freelancer Trial' APP_MAIN_EXE='exe/freelancer.exe' APP_MAIN_ICON='fl.ico' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' deinterlace video/x-ms-asf' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_BASE_ID_DEMO="${GAME_ID_DEMO}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_DEMO_EN="${PKG_L10N_BASE_ID_DEMO}-en" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_PROVIDES_DEMO=" $PKG_L10N_BASE_ID_DEMO" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_DEMO_EN='English localization' ## TODO: Prevent the game from messing up with the desktop gamma values. # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ARCHIVE_INNER1_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/cab1.cab" archive_extraction 'ARCHIVE_INNER1' rm "$(archive_path 'ARCHIVE_INNER1')" ARCHIVE_INNER2_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/cab2.cab" archive_extraction 'ARCHIVE_INNER2' rm "$(archive_path 'ARCHIVE_INNER2')" ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN')" ## Rename files with truncated names. mv 'exe/freela_1.exe' 'exe/freelancer.exe' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-frostpunk-expansions.sh0000755000000000000000000000506114471751340016402 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=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='frostpunk' GAME_NAME='Frostpunk' EXPANSION_ID_RIFTS='the-rifts' EXPANSION_NAME_RIFTS='The Rifts' EXPANSION_ID_AUTUMN='the-last-autumn' EXPANSION_NAME_AUTUMN='The Last Autumn' EXPANSION_ID_EDGE='on-the-edge' EXPANSION_NAME_EDGE='On The Edge' # Archives ## The Rifts ARCHIVE_BASE_RIFTS_0_NAME='setup_frostpunk_-_szczeliny_1.6.1_51852_59618_(51757).exe' ARCHIVE_BASE_RIFTS_0_MD5='28b7855428687f3e819e141e78f0efce' ARCHIVE_BASE_RIFTS_0_TYPE='innosetup' ARCHIVE_BASE_RIFTS_0_SIZE='7457' ARCHIVE_BASE_RIFTS_0_VERSION='1.6.1-gog51757' ARCHIVE_BASE_RIFTS_0_URL='https://www.gog.com/game/frostpunk_the_rifts' ## The Last Autumn ARCHIVE_BASE_AUTUMN_0_NAME='setup_frostpunk_the_last_autumn_1.6.1_51852_59618_(51757).exe' ARCHIVE_BASE_AUTUMN_0_MD5='caf40e3e2fc0354b4a4ac130abba1f9e' ARCHIVE_BASE_AUTUMN_0_TYPE='innosetup' ARCHIVE_BASE_AUTUMN_0_SIZE='7132' ARCHIVE_BASE_AUTUMN_0_VERSION='1.6.1-gog51757' ARCHIVE_BASE_AUTUMN_0_URL='https://www.gog.com/game/frostpunk_the_last_autumn' ## On The Edge ARCHIVE_BASE_EDGE_0_NAME='setup_frostpunk_on_the_edge_1.6.1_51852_59618_(51757).exe' ARCHIVE_BASE_EDGE_0_MD5='ac91f06f1e421f0ae8061eefaaf42859' ARCHIVE_BASE_EDGE_0_TYPE='innosetup' ARCHIVE_BASE_EDGE_0_SIZE='7926' ARCHIVE_BASE_EDGE_0_VERSION='1.6.1-gog51757' ARCHIVE_BASE_EDGE_0_URL='https://www.gog.com/game/frostpunk_on_the_edge' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' goggame-*.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-frostpunk.sh0000755000000000000000000002000314471751340014206 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Frostpunk ### script_version=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='frostpunk' GAME_NAME='Frostpunk' ARCHIVE_BASE_8_NAME='setup_frostpunk_1.6.1_51852_59618_(51757).exe' ARCHIVE_BASE_8_MD5='6d1f0d7c81821c949c5a7eb9c7f26133' ARCHIVE_BASE_8_TYPE='innosetup' ARCHIVE_BASE_8_PART1_NAME='setup_frostpunk_1.6.1_51852_59618_(51757)-1.bin' ARCHIVE_BASE_8_PART1_MD5='43f6adbfdc53299d4591a2abb1c84457' ARCHIVE_BASE_8_PART2_NAME='setup_frostpunk_1.6.1_51852_59618_(51757)-2.bin' ARCHIVE_BASE_8_PART2_MD5='6689f6a289b899ddcd69af920f4ecdc4' ARCHIVE_BASE_8_PART3_NAME='setup_frostpunk_1.6.1_51852_59618_(51757)-3.bin' ARCHIVE_BASE_8_PART3_MD5='a72c123ddeef82cdebeed57792b02e4c' ARCHIVE_BASE_8_SIZE='9593582' ARCHIVE_BASE_8_VERSION='1.6.1-gog51757' ARCHIVE_BASE_8_URL='https://www.gog.com/game/frostpunk' ARCHIVE_BASE_7_NAME='setup_frostpunk_1.6.1_51795_59550_(42925).exe' ARCHIVE_BASE_7_MD5='77bc92a7242dea010d766cf83bbace36' ARCHIVE_BASE_7_TYPE='innosetup' ARCHIVE_BASE_7_PART1_NAME='setup_frostpunk_1.6.1_51795_59550_(42925)-1.bin' ARCHIVE_BASE_7_PART1_MD5='cfdfccd316e3e1b82e285f9a54f3307a' ARCHIVE_BASE_7_PART2_NAME='setup_frostpunk_1.6.1_51795_59550_(42925)-2.bin' ARCHIVE_BASE_7_PART2_MD5='ff9cc388079e949bd1ac0f888315282b' ARCHIVE_BASE_7_PART3_NAME='setup_frostpunk_1.6.1_51795_59550_(42925)-3.bin' ARCHIVE_BASE_7_PART3_MD5='966cf1daaa31538c2dfa3b2125f86c34' ARCHIVE_BASE_7_SIZE='9500000' ARCHIVE_BASE_7_VERSION='1.6.1-gog42925' ARCHIVE_BASE_6_NAME='setup_frostpunk_1.6.1_51791_59537_(42472).exe' ARCHIVE_BASE_6_MD5='ec9795eb841cde30cb62d9983517aa68' ARCHIVE_BASE_6_TYPE='innosetup' ARCHIVE_BASE_6_PART1_NAME='setup_frostpunk_1.6.1_51791_59537_(42472)-1.bin' ARCHIVE_BASE_6_PART1_MD5='cb3996ecfa56f3ee102317d21392c034' ARCHIVE_BASE_6_PART2_NAME='setup_frostpunk_1.6.1_51791_59537_(42472)-2.bin' ARCHIVE_BASE_6_PART2_MD5='80af46c57e1e2d0fdb4fd97e4ba685f2' ARCHIVE_BASE_6_PART3_NAME='setup_frostpunk_1.6.1_51791_59537_(42472)-3.bin' ARCHIVE_BASE_6_PART3_MD5='652fb81dda4ca761d6fa08eba603c268' ARCHIVE_BASE_6_SIZE='9600000' ARCHIVE_BASE_6_VERSION='1.6.1-gog42472' ARCHIVE_BASE_5_NAME='setup_frostpunk_1.6.0_hotfix_candidate_3_(40765).exe' ARCHIVE_BASE_5_MD5='103d278de0b32670596d48fa0a3e1e7a' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_PART1_NAME='setup_frostpunk_1.6.0_hotfix_candidate_3_(40765)-1.bin' ARCHIVE_BASE_5_PART1_MD5='fc12ac7dc545219d54c0d547f30f77be' ARCHIVE_BASE_5_PART2_NAME='setup_frostpunk_1.6.0_hotfix_candidate_3_(40765)-2.bin' ARCHIVE_BASE_5_PART2_MD5='8393d7ff2b240fa894ad0523f6ffd3a0' ARCHIVE_BASE_5_PART3_NAME='setup_frostpunk_1.6.0_hotfix_candidate_3_(40765)-3.bin' ARCHIVE_BASE_5_PART3_MD5='77e9e8c6cfa3953a33d82b5fa822f226' ARCHIVE_BASE_5_SIZE='9800000' ARCHIVE_BASE_5_VERSION='1.6.0-gog40765' ARCHIVE_BASE_4_NAME='setup_frostpunk_1.6.0_(40599).exe' ARCHIVE_BASE_4_MD5='da7acf8c314c798743645d218567960d' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_PART1_NAME='setup_frostpunk_1.6.0_(40599)-1.bin' ARCHIVE_BASE_4_PART1_MD5='9ad1b9c0fe5ca877bbda422b465f81fc' ARCHIVE_BASE_4_PART2_NAME='setup_frostpunk_1.6.0_(40599)-2.bin' ARCHIVE_BASE_4_PART2_MD5='0aaed0691be9193110e8179e0468cd1c' ARCHIVE_BASE_4_PART3_NAME='setup_frostpunk_1.6.0_(40599)-3.bin' ARCHIVE_BASE_4_PART3_MD5='097ab0962232b97bb568350208e84dae' ARCHIVE_BASE_4_SIZE='9800000' ARCHIVE_BASE_4_VERSION='1.6.0-gog40599' ARCHIVE_BASE_3_NAME='setup_frostpunk_1.5.0.51146.56648_(2020-02-14_17-22)_(36204).exe' ARCHIVE_BASE_3_MD5='cc9bd3aba061dacd4f83e79e6a13d4e8' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_PART1_NAME='setup_frostpunk_1.5.0.51146.56648_(2020-02-14_17-22)_(36204)-1.bin' ARCHIVE_BASE_3_PART1_MD5='ba31654b9f3b1d24b22df3999e5ff78e' ARCHIVE_BASE_3_PART2_NAME='setup_frostpunk_1.5.0.51146.56648_(2020-02-14_17-22)_(36204)-2.bin' ARCHIVE_BASE_3_PART2_MD5='fc560cb127691e6fdcd9e1a82f0e7b26' ARCHIVE_BASE_3_PART3_NAME='setup_frostpunk_1.5.0.51146.56648_(2020-02-14_17-22)_(36204)-3.bin' ARCHIVE_BASE_3_PART3_MD5='b82e3dc7bd981c8a30b8da51813acbf6' ARCHIVE_BASE_3_SIZE='8700000' ARCHIVE_BASE_3_VERSION='1.5.0-gog36204' ARCHIVE_BASE_2_NAME='setup_frostpunk_1.5.0.51029.56354_(2020-01-21_1545)_(35558).exe' ARCHIVE_BASE_2_MD5='c31ecb7aa2497bc12bf83324d52b413f' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_frostpunk_1.5.0.51029.56354_(2020-01-21_1545)_(35558)-1.bin' ARCHIVE_BASE_2_PART1_MD5='92cc54cc6c91f8435c3e7bc80fb22a20' ARCHIVE_BASE_2_PART2_NAME='setup_frostpunk_1.5.0.51029.56354_(2020-01-21_1545)_(35558)-2.bin' ARCHIVE_BASE_2_PART2_MD5='22489f0c14736cd5c473a3e091dfed51' ARCHIVE_BASE_2_PART3_NAME='setup_frostpunk_1.5.0.51029.56354_(2020-01-21_1545)_(35558)-3.bin' ARCHIVE_BASE_2_PART3_MD5='24013bb92bf78991e110463579685461' ARCHIVE_BASE_2_SIZE='8700000' ARCHIVE_BASE_2_VERSION='1.5.0-gog35558' ARCHIVE_BASE_1_NAME='setup_frostpunk_1.4.1.50110.53938_(2019-11-05_1825)_(33713).exe' ARCHIVE_BASE_1_MD5='99b71af138d5fdcb67418392b0a14d62' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_frostpunk_1.4.1.50110.53938_(2019-11-05_1825)_(33713)-1.bin' ARCHIVE_BASE_1_PART1_MD5='3fbe880a3c3acaf00ede07c998b13c92' ARCHIVE_BASE_1_PART2_NAME='setup_frostpunk_1.4.1.50110.53938_(2019-11-05_1825)_(33713)-2.bin' ARCHIVE_BASE_1_PART2_MD5='86267bb5dc870db828c50ccaa45d6091' ARCHIVE_BASE_1_SIZE='6500000' ARCHIVE_BASE_1_VERSION='1.4.1-gog33713' ARCHIVE_BASE_0_NAME='setup_frostpunk_1.4.0.48534.51933_(2019-08-30_1543)_(32102).exe' ARCHIVE_BASE_0_MD5='08e52207d9385bd5d3d66755facad69a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_frostpunk_1.4.0.48534.51933_(2019-08-30_1543)_(32102)-1.bin' ARCHIVE_BASE_0_PART1_MD5='60245c2ede7e99f526fa5cb87a660ebe' ARCHIVE_BASE_0_PART2_NAME='setup_frostpunk_1.4.0.48534.51933_(2019-08-30_1543)_(32102)-2.bin' ARCHIVE_BASE_0_PART2_MD5='48dcdc8acb8bfd93b5eab09b8695854e' ARCHIVE_BASE_0_SIZE='6500000' ARCHIVE_BASE_0_VERSION='1.4.0-gog32102' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' anselsdk64.dll libcurl.dll libeay32.dll libssh2.dll pctouchhelper.dll ssleay32.dll frostpunk.exe gfxconfig.ini' ## TODO: Check if the GOG Galaxy library is required CONTENT_GAME0_BIN_FILES=' galaxy64.dll' CONTENT_GAME_TEXTURES_FILES=' textures-s3.dat textures-s3.idx' CONTENT_GAME_DATA_PATH='app' CONTENT_GAME_DATA_FILES=' custom_localizations.dat voices.dat' CONTENT_GAME0_DATA_FILES=' *.dat *.idx *.str' CONTENT_DOC_DATA_FILES=' openfontlicense.txt' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/11bitstudios/Frostpunk' USER_PERSISTENT_FILES=' gfxconfig.ini' APP_MAIN_EXE='frostpunk.exe' APP_MAIN_ICON='frostpunk.exe' ## The game crashes on launch with some SDL settings. APP_MAIN_PRERUN=' # The game crashes on launch with some SDL settings if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi if [ "${SDL_AUDIODRIVER:-}" = "alsa" ]; then unset SDL_AUDIODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_TEXTURES PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_TEXTURES' PKG_TEXTURES_ID="${GAME_ID}-textures" PKG_TEXTURES_DESCRIPTION='textures' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-gamedec.sh0000755000000000000000000000627014471751340013552 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Gamedec ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='gamedec' GAME_NAME='Gamedec' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562).exe' ARCHIVE_BASE_0_MD5='81ce6923488911399dbd209cc574334a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562)-1.bin' ARCHIVE_BASE_0_PART1_MD5='e069d6764e368cd141d98ba93d286b50' ARCHIVE_BASE_0_PART2_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562)-2.bin' ARCHIVE_BASE_0_PART2_MD5='2e4507b72e2e47a9ccd658365fc8347e' ARCHIVE_BASE_0_PART3_NAME='setup_gamedec_-_definitive_edition_20221128_1.7.1.r70100_shipping_(64bit)_(60562)-3.bin' ARCHIVE_BASE_0_PART3_MD5='feee3d36bb8198f2d4e86eddaf0efd6e' ARCHIVE_BASE_0_SIZE='16408534' ARCHIVE_BASE_0_VERSION='1.7.1-gog60562' ARCHIVE_BASE_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_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-ghost-master.sh0000755000000000000000000000520314471751340014575 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Ghost Master ### script_version=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='ghost-master' GAME_NAME='Ghost Master' ARCHIVE_BASE_1_NAME='setup_ghost_master_20171020_(15806).exe' ARCHIVE_BASE_1_MD5='bbc7b8d6ed9b08c54cba6f2b1048a0fd' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='658670' ARCHIVE_BASE_1_VERSION='1.1-gog15806' ARCHIVE_BASE_1_URL='https://www.gog.com/game/ghost_master' ARCHIVE_BASE_0_NAME='setup_ghost_master_2.0.0.3.exe' ARCHIVE_BASE_0_MD5='f581e0e08d7d9dfc89838c3ac892611a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='650000' ARCHIVE_BASE_0_VERSION='1.1-gog2.0.0.3' CONTENT_PATH_DEFAULT='app/ghostdata' CONTENT_GAME_BIN_FILES=' spdrv.cfg ogg.dll vorbis.dll vorbisfile.dll ghost.exe' CONTENT_GAME_DATA_FILES=' characters cursors fonts icons levels movies music new_animations otherobjects psparams pstextures scenarios screenshots scripts sound text ui voice lsize.txt' CONTENT_DOC_DATA_PATH='app' CONTENT_DOC_DATA_FILES=' manual.pdf readme.txt' WINE_PERSISTENT_DIRECTORIES=' users/Public/Documents/Ghost Master/SaveGames' USER_PERSISTENT_DIRECTORIES=' screenshots' USER_PERSISTENT_FILES=' *.cfg' APP_MAIN_EXE='ghost.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' ## Even with all the required decoders available, ## the introduction movie only shows still frames. ## cf. https://bugs.winehq.org/show_bug.cgi?id=53734 PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' deinterlace video/x-ms-asf audio/x-wma, wmaversion=(int)1 video/x-wmv, wmvversion=(int)1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-gibbous-a-cthulhu-adventure.sh0000755000000000000000000000416414471751340017502 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=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='gibbous-a-cthulhu-adventure' GAME_NAME='Gibbous - A Cthulhu Adventure' ARCHIVE_BASE_0_NAME='gibbous_a_cthulhu_adventure_x86_64_1_8_35773.sh' ARCHIVE_BASE_0_MD5='c92315690df34ee8affa24f184486ccb' ARCHIVE_BASE_0_SIZE='9478807' ARCHIVE_BASE_0_VERSION='1.8-gog35773' ARCHIVE_BASE_0_URL='https://www.gog.com/game/gibbous_a_cthulhu_adventure' UNITY3D_NAME='Gibbous - A Cthulhu Adventure' UNITY3D_PLUGINS=' ScreenSelector.so' ## If libsteam_api.so is not included, ## the game crashes after the new game opening video. UNITY3D_PLUGINS="${UNITY3D_PLUGINS:-}"' libsteam_api.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-goblins-5.sh0000755000000000000000000001174214471751340013764 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Gobliiins 5: L'invasion des Morglotons ### script_version=20250103.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='goblins-5' GAME_ID_PART1="${GAME_ID}-part-1" GAME_ID_PART2="${GAME_ID}-part-2" GAME_ID_PART3="${GAME_ID}-part-3" GAME_ID_PART4="${GAME_ID}-part-4" GAME_NAME='Gobliiins 5: L’invasion des Morglotons' GAME_NAME_PART1="$GAME_NAME - Part 1" GAME_NAME_PART2="$GAME_NAME - Part 2" GAME_NAME_PART3="$GAME_NAME - Part 3" GAME_NAME_PART4="$GAME_NAME - Part 4" ARCHIVE_BASE_0_NAME='Gobliiins5.zip' ARCHIVE_BASE_0_MD5='9ec74c3b393736b3e7ea3b345355d537' ARCHIVE_BASE_0_SIZE='939801' ARCHIVE_BASE_0_VERSION='1.0-itch.2023.11.17' ARCHIVE_BASE_0_URL='https://pierre-gilhodes.itch.io/gobliiins5' ARCHIVE_BASE_DEMO_0_NAME='Gobliiins5-Part1.zip' ARCHIVE_BASE_DEMO_0_MD5='814a2e01fbf5a253fa56dd51c2e4d206' ARCHIVE_BASE_DEMO_0_SIZE='182592' ARCHIVE_BASE_DEMO_0_VERSION='1.0-itch.2023.11.17' ARCHIVE_BASE_DEMO_0_URL='https://pierre-gilhodes.itch.io/gobliiins5' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_COMMON_FILES=' acsetup.cfg English.tra audio.vox' CONTENT_GAME_PART1_FILES=" $CONTENT_GAME_COMMON_FILES Gobliiins5-Part1.ags" CONTENT_GAME_PART2_FILES=" $CONTENT_GAME_COMMON_FILES Gobliiins5-Part2.ags" CONTENT_GAME_PART3_FILES=" $CONTENT_GAME_COMMON_FILES Gobliiins5-Part3.ags" CONTENT_GAME_PART4_FILES=" $CONTENT_GAME_COMMON_FILES Gobliiins5-Part4.ags" APP_MAIN_SCUMMID_PART1='ags:gobliiins5-1' APP_MAIN_SCUMMID_PART2='ags:gobliiins5-2' APP_MAIN_SCUMMID_PART3='ags:gobliiins5-3' APP_MAIN_SCUMMID_PART4='ags:gobliiins5-4' APP_MAIN_ICON_PART1='Gobliiins5-Part1.exe' APP_MAIN_ICON_PART2='Gobliiins5-Part2.exe' APP_MAIN_ICON_PART3='Gobliiins5-Part3.exe' APP_MAIN_ICON_PART4='Gobliiins5-Part4.exe' PACKAGES_LIST=' PKG_PART1 PKG_PART2 PKG_PART3 PKG_PART4' PACKAGES_LIST_DEMO=' PKG_PART1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract and include data archive_extraction_default ## Each game part is handled one at a time to prevent unwanted file overwrites. case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) ## The game demo only includes the first part of the game. content_inclusion_icons 'PKG_PART1' content_inclusion 'GAME_PART1' 'PKG_PART1' "$( set_current_package 'PKG_PART1' path_game_data )" ;; (*) ## Allow the content inclusion message to be shown multiple times information_content_inclusion() { local messages_language message messages_language=$(messages_language) case "$messages_language" in ('fr') message='Inclusion des fichiers du jeu…\n' ;; ('en'|*) message='Including game files…\n' ;; esac print_message 'info' "$message" } ARCHIVE_PART1_PATH="${PLAYIT_WORKDIR}/gamedata/Gobliiins5-Part1.zip" archive_extraction 'ARCHIVE_PART1' content_inclusion_icons 'PKG_PART1' content_inclusion 'GAME_PART1' 'PKG_PART1' "$( set_current_package 'PKG_PART1' path_game_data )" rm "$ARCHIVE_PART1_PATH" ARCHIVE_PART2_PATH="${PLAYIT_WORKDIR}/gamedata/Gobliiins5-Part2.zip" archive_extraction 'ARCHIVE_PART2' content_inclusion_icons 'PKG_PART2' content_inclusion 'GAME_PART2' 'PKG_PART2' "$( set_current_package 'PKG_PART2' path_game_data )" rm "$ARCHIVE_PART2_PATH" ARCHIVE_PART3_PATH="${PLAYIT_WORKDIR}/gamedata/Gobliiins5-Part3.zip" archive_extraction 'ARCHIVE_PART3' content_inclusion_icons 'PKG_PART3' content_inclusion 'GAME_PART3' 'PKG_PART3' "$( set_current_package 'PKG_PART3' path_game_data )" rm "$ARCHIVE_PART3_PATH" ARCHIVE_PART4_PATH="${PLAYIT_WORKDIR}/gamedata/Gobliiins5-Part4.zip" archive_extraction 'ARCHIVE_PART4' content_inclusion_icons 'PKG_PART4' content_inclusion 'GAME_PART4' 'PKG_PART4' "$( set_current_package 'PKG_PART4' path_game_data )" rm "$ARCHIVE_PART4_PATH" ;; esac rm --force --recursive "${PLAYIT_WORKDIR}/gamedata" # Write launchers case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) ## The game demo only includes the first part of the game. launchers_generation 'PKG_PART1' ;; (*) launchers_generation 'PKG_PART1' launchers_generation 'PKG_PART2' launchers_generation 'PKG_PART3' launchers_generation 'PKG_PART4' ;; esac # Build packages packages_generation ## Ensure that the generic game name is shown, not a package-specific one. unset GAME_NAME_PART1 print_instructions # Clean up working_directory_cleanup exit 0 games/play-goblins-trilogy.sh0000755000000000000000000001306514471751340015311 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=20241123.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_RELATIVE_PATH='fdd' CONTENT_GAME_FLOPPY_FILES=' *.stk' CONTENT_GAME_CDROM_FILES=' *.itk *.lic *.stk *.mp3' CONTENT_DOC_COMMON_FILES=' *.pdf' # Applications ## Goblins 1 APP_MAIN_SCUMMID_GOB1='gob:gob1' APP_MAIN_ICON_GOB1='goggame-1207662273.ico' ## Goblins 2 APP_MAIN_SCUMMID_GOB2='gob:gob2' APP_MAIN_ICON_GOB2='goggame-1207662293.ico' ## Goblins 3 APP_MAIN_SCUMMID_GOB3='gob:gob3' APP_MAIN_ICON_GOB3='goggame-1207662313.ico' # Packages ## Common PACKAGES_LIST=' PKG_COMMON PKG_FLOPPY PKG_CDROM' PKG_FLOPPY_DEPENDENCIES_SIBLINGS=' PKG_COMMON' PKG_CDROM_DEPENDENCIES_SIBLINGS=' PKG_COMMON' ## Goblins 1 PKG_COMMON_ID_GOB1="${GAME_ID_GOB1}-common" PKG_MAIN_ID_GOB1="$GAME_ID_GOB1" PKG_FLOPPY_ID_GOB1="${PKG_MAIN_ID_GOB1}-floppy" PKG_FLOPPY_PROVIDES_GOB1=" $PKG_MAIN_ID_GOB1" PKG_CDROM_ID_GOB1="${PKG_MAIN_ID_GOB1}-cdrom" PKG_CDROM_PROVIDES_GOB1=" $PKG_MAIN_ID_GOB1" ## Goblins 2 PKG_COMMON_ID_GOB2="${GAME_ID_GOB2}-common" PKG_MAIN_ID_GOB2="$GAME_ID_GOB2" PKG_FLOPPY_ID_GOB2="${PKG_MAIN_ID_GOB2}-floppy" PKG_FLOPPY_PROVIDES_GOB2=" $PKG_MAIN_ID_GOB2" PKG_CDROM_ID_GOB2="${PKG_MAIN_ID_GOB2}-cdrom" PKG_CDROM_PROVIDES_GOB2=" $PKG_MAIN_ID_GOB2" ## Goblins 3 PACKAGES_LIST_GOB3=" PKG_L10N $PACKAGES_LIST" PKG_COMMON_ID_GOB3="${GAME_ID_GOB3}-common" PKG_L10N_BASE_ID="${GAME_ID_GOB3}-l10n" PKG_L10N_ID_GOB3_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_GOB3_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES_GOB3=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_GOB3_EN='English localization' PKG_L10N_DESCRIPTION_GOB3_FR='French localization' PKG_MAIN_ID_GOB3="$GAME_ID_GOB3" PKG_FLOPPY_ID_GOB3="${PKG_MAIN_ID_GOB3}-floppy" PKG_FLOPPY_PROVIDES_GOB3=" $PKG_MAIN_ID_GOB3" PKG_CDROM_ID_GOB3="${PKG_MAIN_ID_GOB3}-cdrom" PKG_CDROM_PROVIDES_GOB3=" $PKG_MAIN_ID_GOB3" PKG_CDROM_DEPENDENCIES_SIBLINGS_GOB3=' PKG_COMMON PKG_L10N_BASE' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Incude game data content_inclusion_icons 'PKG_COMMON' content_inclusion_default # Write launchers launchers_generation 'PKG_FLOPPY' ## Goblins 3 - Set game language based on the available localization. case "$(current_archive)" in ('ARCHIVE_BASE_GOB3_'*) game_exec_line() { cat <<- 'EOF' if [ -e "${PATH_GAME_DATA}/frgob3.itk" ]; then scummvm --language=fr --path="$PATH_GAME_DATA" "$@" "$SCUMMVM_ID" elif [ -e "${PATH_GAME_DATA}/usgob3.itk" ]; then scummvm --language=us --path="$PATH_GAME_DATA" "$@" "$SCUMMVM_ID" fi EOF } ;; esac launchers_generation 'PKG_CDROM' # Build packages packages_generation case "$(messages_language)" 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 'PKG_FLOPPY' 'PKG_COMMON' printf "$version_string" "$version_cdrom" case "$(current_archive)" in ('ARCHIVE_BASE_GOB3_'*) print_instructions 'PKG_CDROM' 'PKG_L10N' 'PKG_COMMON' ;; (*) print_instructions 'PKG_CDROM' 'PKG_COMMON' ;; esac # Clean up working_directory_cleanup exit 0 games/play-grim-dawn-expansions.sh0000755000000000000000000002412614471751340016237 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=20250211.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' 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_9_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.1.5a_(79771).exe' ARCHIVE_BASE_ASHES_9_MD5='978c79a533de6d7553044534d6085bdc' ARCHIVE_BASE_ASHES_9_TYPE='innosetup' ARCHIVE_BASE_ASHES_9_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.1.5a_(79771)-1.bin' ARCHIVE_BASE_ASHES_9_PART1_MD5='d4f7ef400d31a460d0c671b6d0fdd9fe' ARCHIVE_BASE_ASHES_9_SIZE='2511022' ARCHIVE_BASE_ASHES_9_VERSION='1.2.1.5a-gog79771' ARCHIVE_BASE_ASHES_9_URL='https://www.gog.com/game/grim_dawn_ashes_of_malmouth' ARCHIVE_BASE_ASHES_8_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.1.4_hotfix_1_(78646).exe' ARCHIVE_BASE_ASHES_8_MD5='e4b981d5a960f465fedd6c25e47434a5' ARCHIVE_BASE_ASHES_8_TYPE='innosetup' ARCHIVE_BASE_ASHES_8_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.1.4_hotfix_1_(78646)-1.bin' ARCHIVE_BASE_ASHES_8_PART1_MD5='8f0261ab3eabece7ef4a6667964ba1d0' ARCHIVE_BASE_ASHES_8_SIZE='2510794' ARCHIVE_BASE_ASHES_8_VERSION='1.2.1.4-gog78646' ARCHIVE_BASE_ASHES_7_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.1.2_(74537).exe' ARCHIVE_BASE_ASHES_7_MD5='24e439773a3b6935e766110b0ec80fff' ARCHIVE_BASE_ASHES_7_TYPE='innosetup' ARCHIVE_BASE_ASHES_7_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.1.2_(74537)-1.bin' ARCHIVE_BASE_ASHES_7_PART1_MD5='164321d7ecee354a62dc77b57a9088a0' ARCHIVE_BASE_ASHES_7_SIZE='2510434' ARCHIVE_BASE_ASHES_7_VERSION='1.2.1.2-gog74537' ARCHIVE_BASE_ASHES_6_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.1.1_(74365).exe' ARCHIVE_BASE_ASHES_6_MD5='01617f6a1fae6a2d8cd68061a4b7ed71' ARCHIVE_BASE_ASHES_6_TYPE='innosetup' ARCHIVE_BASE_ASHES_6_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.1.1_(74365)-1.bin' ARCHIVE_BASE_ASHES_6_PART1_MD5='d687516b6ab638161aa0f8bd47416b66' ARCHIVE_BASE_ASHES_6_SIZE='2508370' ARCHIVE_BASE_ASHES_6_VERSION='1.2.1.1-gog74365' ARCHIVE_BASE_ASHES_5_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.5a_(71558).exe' ARCHIVE_BASE_ASHES_5_MD5='459923324f4f32779885fe03f192fe3a' ARCHIVE_BASE_ASHES_5_TYPE='innosetup' ARCHIVE_BASE_ASHES_5_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.5a_(71558)-1.bin' ARCHIVE_BASE_ASHES_5_PART1_MD5='11d3e5371bb3b9ecceb0a72b99671a24' ARCHIVE_BASE_ASHES_5_SIZE='2508049' ARCHIVE_BASE_ASHES_5_VERSION='1.2.0.5a-gog71558' ARCHIVE_BASE_ASHES_4_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.5_(71516).exe' ARCHIVE_BASE_ASHES_4_MD5='c692033a7f8a57cfc83fe0caecf763e9' ARCHIVE_BASE_ASHES_4_TYPE='innosetup' ARCHIVE_BASE_ASHES_4_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.5_(71516)-1.bin' ARCHIVE_BASE_ASHES_4_PART1_MD5='270e20c090ddf4a172b3e4c7a869222b' ARCHIVE_BASE_ASHES_4_SIZE='2508622' ARCHIVE_BASE_ASHES_4_VERSION='1.2.0.5-gog71516' ARCHIVE_BASE_ASHES_3_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.3_hotfix_3_(69499).exe' ARCHIVE_BASE_ASHES_3_MD5='921796d60998467c4c753d80f99a6584' ARCHIVE_BASE_ASHES_3_TYPE='innosetup' ARCHIVE_BASE_ASHES_3_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.3_hotfix_3_(69499)-1.bin' ARCHIVE_BASE_ASHES_3_PART1_MD5='618cfba9ba745a2d3fd6e5b9ae744cb2' ARCHIVE_BASE_ASHES_3_SIZE='2510332' ARCHIVE_BASE_ASHES_3_VERSION='1.2.0.3-gog69499' ARCHIVE_BASE_ASHES_2_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.2_hotfix_2_(69134).exe' ARCHIVE_BASE_ASHES_2_MD5='49194993f6649141ac9f118d61eb8f90' ARCHIVE_BASE_ASHES_2_TYPE='innosetup' ARCHIVE_BASE_ASHES_2_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.2_hotfix_2_(69134)-1.bin' ARCHIVE_BASE_ASHES_2_PART1_MD5='798f63fd270edfdac9938fd77d73752c' ARCHIVE_BASE_ASHES_2_SIZE='2509140' ARCHIVE_BASE_ASHES_2_VERSION='1.2.0.2-gog69134' ARCHIVE_BASE_ASHES_1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.1_hotfix_1_(69098).exe' ARCHIVE_BASE_ASHES_1_MD5='f8935c6d6ca9c354a9336d51efd823f9' ARCHIVE_BASE_ASHES_1_TYPE='innosetup' ARCHIVE_BASE_ASHES_1_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.2.0.1_hotfix_1_(69098)-1.bin' ARCHIVE_BASE_ASHES_1_PART1_MD5='c2e7bd56299023afa261d43fb89a43f7' ARCHIVE_BASE_ASHES_1_SIZE='2507692' ARCHIVE_BASE_ASHES_1_VERSION='1.2.0.1-gog69098' ARCHIVE_BASE_ASHES_0_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.1.9.8_(65199).exe' ARCHIVE_BASE_ASHES_0_MD5='0754f567005ecc7d758d905992e5d7f7' ARCHIVE_BASE_ASHES_0_TYPE='innosetup' ARCHIVE_BASE_ASHES_0_PART1_NAME='setup_grim_dawn_-_ashes_of_malmouth_1.1.9.8_(65199)-1.bin' ARCHIVE_BASE_ASHES_0_PART1_MD5='49bc0c617d4ab9415298994ba4a085b8' ARCHIVE_BASE_ASHES_0_SIZE='2506744' ARCHIVE_BASE_ASHES_0_VERSION='1.1.9.8-gog65199' ## Forgotten Gods ARCHIVE_BASE_GODS_9_NAME='setup_grim_dawn_-_forgotten_gods_1.2.1.5a_(79771).exe' ARCHIVE_BASE_GODS_9_MD5='e8850233a15d8e898c53e393f6de3226' ARCHIVE_BASE_GODS_9_TYPE='innosetup' ARCHIVE_BASE_GODS_9_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.1.5a_(79771)-1.bin' ARCHIVE_BASE_GODS_9_PART1_MD5='6f5c139cd8416882627d1536e83c1ac8' ARCHIVE_BASE_GODS_9_SIZE='3223745' ARCHIVE_BASE_GODS_9_VERSION='1.2.1.5a-gog79771' ARCHIVE_BASE_GODS_9_URL='https://www.gog.com/game/grim_dawn_forgotten_gods' ARCHIVE_BASE_GODS_8_NAME='setup_grim_dawn_-_forgotten_gods_1.2.1.4_hotfix_1_(78646).exe' ARCHIVE_BASE_GODS_8_MD5='e1718e47e7e3efb5b7e30720237d7ca0' ARCHIVE_BASE_GODS_8_TYPE='innosetup' ARCHIVE_BASE_GODS_8_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.1.4_hotfix_1_(78646)-1.bin' ARCHIVE_BASE_GODS_8_PART1_MD5='e2d2f437f6cabf93953d280443a37fed' ARCHIVE_BASE_GODS_8_SIZE='3222704' ARCHIVE_BASE_GODS_8_VERSION='1.2.1.4-gog78646' ARCHIVE_BASE_GODS_7_NAME='setup_grim_dawn_-_forgotten_gods_1.2.1.2_(74537).exe' ARCHIVE_BASE_GODS_7_MD5='2d71e98f2aafdd7096b7f1b30279a7d5' ARCHIVE_BASE_GODS_7_TYPE='innosetup' ARCHIVE_BASE_GODS_7_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.1.2_(74537)-1.bin' ARCHIVE_BASE_GODS_7_PART1_MD5='430063cc53a07cd77ac491bb22c85e3b' ARCHIVE_BASE_GODS_7_SIZE='3220867' ARCHIVE_BASE_GODS_7_VERSION='1.2.1.2-gog74537' ARCHIVE_BASE_GODS_6_NAME='setup_grim_dawn_-_forgotten_gods_1.2.1.1_(74365).exe' ARCHIVE_BASE_GODS_6_MD5='45e52392fb4f503b2078ddf6af6a3411' ARCHIVE_BASE_GODS_6_TYPE='innosetup' ARCHIVE_BASE_GODS_6_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.1.1_(74365)-1.bin' ARCHIVE_BASE_GODS_6_PART1_MD5='195f5f735715d9ae59080774d0a98bd0' ARCHIVE_BASE_GODS_6_SIZE='3221131' ARCHIVE_BASE_GODS_6_VERSION='1.2.1.1-gog74365' ARCHIVE_BASE_GODS_5_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.5a_(71558).exe' ARCHIVE_BASE_GODS_5_MD5='f4e80fca2102e244a47a218171c0f336' ARCHIVE_BASE_GODS_5_TYPE='innosetup' ARCHIVE_BASE_GODS_5_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.5a_(71558)-1.bin' ARCHIVE_BASE_GODS_5_PART1_MD5='3199f7442939194091a2d534553b8007' ARCHIVE_BASE_GODS_5_SIZE='3220483' ARCHIVE_BASE_GODS_5_VERSION='1.2.0.5a-gog71558' ARCHIVE_BASE_GODS_4_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.5_(71516).exe' ARCHIVE_BASE_GODS_4_MD5='cef5d93af87d3a4690bca2f78eb6e172' ARCHIVE_BASE_GODS_4_TYPE='innosetup' ARCHIVE_BASE_GODS_4_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.5_(71516)-1.bin' ARCHIVE_BASE_GODS_4_PART1_MD5='8079bd9c7dfbf5234355bd9ecb56d524' ARCHIVE_BASE_GODS_4_SIZE='3220210' ARCHIVE_BASE_GODS_4_VERSION='1.2.0.5-gog71516' ARCHIVE_BASE_GODS_3_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.3_hotfix_3_(69499).exe' ARCHIVE_BASE_GODS_3_MD5='75b0ed8db6996ae3b5fb4df2177b8507' ARCHIVE_BASE_GODS_3_TYPE='innosetup' ARCHIVE_BASE_GODS_3_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.3_hotfix_3_(69499)-1.bin' ARCHIVE_BASE_GODS_3_PART1_MD5='a0c5c5a18b150c8349d247c593fb71d5' ARCHIVE_BASE_GODS_3_SIZE='3220424' ARCHIVE_BASE_GODS_3_VERSION='1.2.0.3-gog69499' ARCHIVE_BASE_GODS_2_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.2_hotfix_2_(69134).exe' ARCHIVE_BASE_GODS_2_MD5='3506b7cfcbb6b475b8c182024932d332' ARCHIVE_BASE_GODS_2_TYPE='innosetup' ARCHIVE_BASE_GODS_2_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.2_hotfix_2_(69134)-1.bin' ARCHIVE_BASE_GODS_2_PART1_MD5='40b9f598aa048680c9f7dc4651b99d71' ARCHIVE_BASE_GODS_2_SIZE='3220892' ARCHIVE_BASE_GODS_2_VERSION='1.2.0.2-gog691341' ARCHIVE_BASE_GODS_1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.1_hotfix_1_(69098).exe' ARCHIVE_BASE_GODS_1_MD5='f0809d0007e3e3634b24dcdbf2bf25fd' ARCHIVE_BASE_GODS_1_TYPE='innosetup' ARCHIVE_BASE_GODS_1_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.2.0.1_hotfix_1_(69098)-1.bin' ARCHIVE_BASE_GODS_1_PART1_MD5='82c069ab14fcec774fb075706fa3cce1' ARCHIVE_BASE_GODS_1_SIZE='3218872' ARCHIVE_BASE_GODS_1_VERSION='1.2.0.1-gog69098' ARCHIVE_BASE_GODS_0_NAME='setup_grim_dawn_-_forgotten_gods_1.1.9.8_(65199).exe' ARCHIVE_BASE_GODS_0_MD5='6615eb32a355092c4d0173457f701e31' ARCHIVE_BASE_GODS_0_TYPE='innosetup' ARCHIVE_BASE_GODS_0_PART1_NAME='setup_grim_dawn_-_forgotten_gods_1.1.9.8_(65199)-1.bin' ARCHIVE_BASE_GODS_0_PART1_MD5='55ac480dee30aa6cfa6a8b466f521406' ARCHIVE_BASE_GODS_0_SIZE='3220672' ARCHIVE_BASE_GODS_0_VERSION='1.1.9.8-gog65199' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' gdx? survivalmode?' PKG_PARENT_ID="$GAME_ID" PKG_ASH_ID="${GAME_ID}-${EXPANSION_ID_ASHES}" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' PKG_MAIN_DEPENDENCIES_SIBLINGS_GODS="$PKG_MAIN_DEPENDENCIES_SIBLINGS PKG_ASH" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-grim-dawn.sh0000755000000000000000000001500514471751340014046 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Grim Dawn ### script_version=20250211.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='grim-dawn' GAME_NAME='Grim Dawn' ARCHIVE_BASE_9_NAME='setup_grim_dawn_1.2.1.5a_(64bit)_(79771).exe' ARCHIVE_BASE_9_MD5='298b7115cb10d141474e3deada484cfa' ARCHIVE_BASE_9_TYPE='innosetup' ARCHIVE_BASE_9_PART1_NAME='setup_grim_dawn_1.2.1.5a_(64bit)_(79771)-1.bin' ARCHIVE_BASE_9_PART1_MD5='f3fd27887478cf9e4b91a9ccec978a5e' ARCHIVE_BASE_9_PART2_NAME='setup_grim_dawn_1.2.1.5a_(64bit)_(79771)-2.bin' ARCHIVE_BASE_9_PART2_MD5='8da34220573b78a73028f4aa8945f660' ARCHIVE_BASE_9_SIZE='4837497' ARCHIVE_BASE_9_VERSION='1.2.1.5a-gog79771' ARCHIVE_BASE_9_URL='https://www.gog.com/game/grim_dawn' ARCHIVE_BASE_8_NAME='setup_grim_dawn_1.2.1.4_hotfix_1_(64bit)_(78646).exe' ARCHIVE_BASE_8_MD5='f8578ada2efb2b5a8a2342c18b15d9eb' ARCHIVE_BASE_8_TYPE='innosetup' ARCHIVE_BASE_8_PART1_NAME='setup_grim_dawn_1.2.1.4_hotfix_1_(64bit)_(78646)-1.bin' ARCHIVE_BASE_8_PART1_MD5='b43dcb38aafbb74c841a568f58adb44a' ARCHIVE_BASE_8_PART2_NAME='setup_grim_dawn_1.2.1.4_hotfix_1_(64bit)_(78646)-2.bin' ARCHIVE_BASE_8_PART2_MD5='b3cfefce65e64effc0d2a3e00a204fec' ARCHIVE_BASE_8_SIZE='4820603' ARCHIVE_BASE_8_VERSION='1.2.1.4-gog78646' ARCHIVE_BASE_7_NAME='setup_grim_dawn_1.2.1.2_(64bit)_(74537).exe' ARCHIVE_BASE_7_MD5='defc9ce6611401d67b04c3c86252ca9b' ARCHIVE_BASE_7_TYPE='innosetup' ARCHIVE_BASE_7_PART1_NAME='setup_grim_dawn_1.2.1.2_(64bit)_(74537)-1.bin' ARCHIVE_BASE_7_PART1_MD5='46d0391d8757224f8157792839424dcd' ARCHIVE_BASE_7_SIZE='4782087' ARCHIVE_BASE_7_VERSION='1.2.1.2-gog74537' ARCHIVE_BASE_6_NAME='setup_grim_dawn_1.2.1.1_(64bit)_(74365).exe' ARCHIVE_BASE_6_MD5='419c765ff7d14cc19142774ae44c3eb9' ARCHIVE_BASE_6_TYPE='innosetup' ARCHIVE_BASE_6_PART1_NAME='setup_grim_dawn_1.2.1.1_(64bit)_(74365)-1.bin' ARCHIVE_BASE_6_PART1_MD5='e3f6f66a0aa88c6f7a47e9c6a07c208b' ARCHIVE_BASE_6_SIZE='4787490' ARCHIVE_BASE_6_VERSION='1.2.1.1-gog74365' ARCHIVE_BASE_5_NAME='setup_grim_dawn_1.2.0.5a_(64bit)_(71558).exe' ARCHIVE_BASE_5_MD5='f232c25a9c69a5776dd4ce65b40df6df' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_PART1_NAME='setup_grim_dawn_1.2.0.5a_(64bit)_(71558)-1.bin' ARCHIVE_BASE_5_PART1_MD5='c78a59aa61b124030e6d96cabaaabd2d' ARCHIVE_BASE_5_SIZE='4768460' ARCHIVE_BASE_5_VERSION='1.2.0.5a-gog71558' ARCHIVE_BASE_4_NAME='setup_grim_dawn_1.2.0.5_(64bit)_(71516).exe' ARCHIVE_BASE_4_MD5='0ec082fed3fa62b70979fcf9fd5ed919' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_PART1_NAME='setup_grim_dawn_1.2.0.5_(64bit)_(71516)-1.bin' ARCHIVE_BASE_4_PART1_MD5='8f7dd61efc9962fddd88dc19da4a8efe' ARCHIVE_BASE_4_SIZE='4767825' ARCHIVE_BASE_4_VERSION='1.2.0.5-gog71516' ARCHIVE_BASE_3_NAME='setup_grim_dawn_1.2.0.3_hotfix_3_(64bit)_(69499).exe' ARCHIVE_BASE_3_MD5='d407d7f0c13b2e9a09c9d507a6dd9406' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_PART1_NAME='setup_grim_dawn_1.2.0.3_hotfix_3_(64bit)_(69499)-1.bin' ARCHIVE_BASE_3_PART1_MD5='cb0b21ec562a0023650928cabd3f2aac' ARCHIVE_BASE_3_SIZE='4716376' ARCHIVE_BASE_3_VERSION='1.2.0.3-gog69499' ARCHIVE_BASE_2_NAME='setup_grim_dawn_1.2.0.2_hotfix_2_(64bit)_(69134).exe' ARCHIVE_BASE_2_MD5='a86614183a27085a644642e73c89dc31' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_grim_dawn_1.2.0.2_hotfix_2_(64bit)_(69134)-1.bin' ARCHIVE_BASE_2_PART1_MD5='d4088f8591111a2aa1c5af081179ec38' ARCHIVE_BASE_2_SIZE='4414600' ARCHIVE_BASE_2_VERSION='1.2.0.2-gog69134' ARCHIVE_BASE_1_NAME='setup_grim_dawn_1.2.0.1_hotfix_1_(64bit)_(69098).exe' ARCHIVE_BASE_1_MD5='0b4edacfee791cc6d83af7a2c36cb11c' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_grim_dawn_1.2.0.1_hotfix_1_(64bit)_(69098)-1.bin' ARCHIVE_BASE_1_PART1_MD5='9450bc1b82d609709356e7b3bb76570f' ARCHIVE_BASE_1_SIZE='4411128' ARCHIVE_BASE_1_VERSION='1.2.0.1-gog69098' ARCHIVE_BASE_0_NAME='setup_grim_dawn_1.1.9.8_(64bit)_(65199).exe' ARCHIVE_BASE_0_MD5='c0fb173132b21833052d1496f6ab832e' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_grim_dawn_1.1.9.8_(64bit)_(65199)-1.bin' ARCHIVE_BASE_0_PART1_MD5='d97de2b8cd7ae7aa723e720ec2fa21f5' ARCHIVE_BASE_0_SIZE='4332472' ARCHIVE_BASE_0_VERSION='1.1.9.8-gog65199' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' x64 crashreport.dll d3d9.dll devil.dll dinput8.dll direct3d.dll direct3d11.dll directinput.dll ds8sound.dll dxgi.dll engine.dll freeimage.dll game.dll libogg.dll libvorbis.dll libvorbisfile.dll lua51.dll sourcecontrol.dll statreport.dll ucrtbase.dll widget.dll xinput1_3.dll zlibwapi.dll api-ms-win-*.dll aifeditor.exe animationcompiler.exe archivetool.exe assetmanager.exe bitmapcreator.exe conversationeditor.exe crashreporter.exe dbreditor.exe editor.exe fontcompiler.exe grim dawn.exe mapcompiler.exe modelcompiler.exe pseditor.exe questeditor.exe repair.exe shadercompiler.exe sourceserver.exe texturecompiler.exe texviewer.exe viewer.exe *.dlo' ## TODO: Check if the Galaxy library are required CONTENT_GAME0_BIN_FILES=' galaxy.dll goggalaxyhooks.dll' 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' ## The following winetricks verb prevents a rendering failure with WINE 9.0, ## with the following error repeated many times if WINE debug is enabled: ## 019c:fixme:d3dcompiler:skip_u32_unknown WINE_WINETRICKS_VERBS='d3dcompiler_43' APP_MAIN_EXE='x64/grim dawn.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-heroes-of-might-and-magic-4.sh0000755000000000000000000001524514471751340017143 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=20241121.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='heroes-of-might-and-magic-4' GAME_NAME='Heroes of Might and Magic Ⅳ' ARCHIVE_BASE_EN_4_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_win11_gog_0.2_(76223).exe' ARCHIVE_BASE_EN_4_MD5='7737a4617848cb701f6577128b17fdc4' ARCHIVE_BASE_EN_4_TYPE='innosetup' ARCHIVE_BASE_EN_4_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_win11_gog_0.2_(76223)-1.bin' ARCHIVE_BASE_EN_4_PART1_MD5='fb953df444f1716b856db53d4c08520a' ARCHIVE_BASE_EN_4_SIZE='1126546' ARCHIVE_BASE_EN_4_VERSION='3.0-gog76223' ARCHIVE_BASE_EN_4_URL='https://www.gog.com/game/heroes_of_might_and_magic_4_complete' ARCHIVE_BASE_FR_4_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_win11_gog_0.2_(french)_(76223).exe' ARCHIVE_BASE_FR_4_MD5='d87e74674382d446332cf257ef6cbf74' ARCHIVE_BASE_FR_4_TYPE='innosetup' ARCHIVE_BASE_FR_4_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_win11_gog_0.2_(french)_(76223)-1.bin' ARCHIVE_BASE_FR_4_PART1_MD5='00c24ec39905f65ed033d8dc2a77e7b3' ARCHIVE_BASE_FR_4_SIZE='1173753' ARCHIVE_BASE_FR_4_VERSION='3.0-gog76223' ARCHIVE_BASE_FR_4_URL='https://www.gog.com/game/heroes_of_might_and_magic_4_complete' 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_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_EN_2_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(25023).exe' ARCHIVE_BASE_EN_2_MD5='2694dfef6827142866fb778588966d8e' ARCHIVE_BASE_EN_2_TYPE='innosetup' ARCHIVE_BASE_EN_2_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(25023)-1.bin' ARCHIVE_BASE_EN_2_PART1_MD5='54bfa42a4e23236729f8b0724216ee83' ARCHIVE_BASE_EN_2_SIZE='1100000' ARCHIVE_BASE_EN_2_VERSION='3.0-gog25023' ARCHIVE_BASE_FR_2_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(french)_(25023).exe' ARCHIVE_BASE_FR_2_MD5='4a90a92d637bc7d1af5354565ae5cd70' ARCHIVE_BASE_FR_2_TYPE='innosetup' ARCHIVE_BASE_FR_2_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(french)_(25023)-1.bin' ARCHIVE_BASE_FR_2_PART1_MD5='46d1239b8491d3adec647a7526f763b2' ARCHIVE_BASE_FR_2_SIZE='1100000' ARCHIVE_BASE_FR_2_VERSION='3.0-gog25023' ARCHIVE_BASE_EN_1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(22812).exe' ARCHIVE_BASE_EN_1_MD5='d5e0a55e2bba4f0ac643ec1fb2ba17cc' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(22812)-1.bin' ARCHIVE_BASE_EN_1_PART1_MD5='3457ead5c208a3d40498d6e1f08bf588' ARCHIVE_BASE_EN_1_SIZE='1100000' ARCHIVE_BASE_EN_1_VERSION='3.0-gog22812' ARCHIVE_BASE_FR_1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(french)_(22812).exe' ARCHIVE_BASE_FR_1_MD5='e15ec7a308ea442bfeeb3410314b39d7' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_PART1_NAME='setup_heroes_of_might_and_magic_4_complete_3.0_(french)_(22812)-1.bin' ARCHIVE_BASE_FR_1_PART1_MD5='7abff7182f6bed3199d2b71cdd60d926' ARCHIVE_BASE_FR_1_SIZE='1100000' ARCHIVE_BASE_FR_1_VERSION='3.0-gog22812' ARCHIVE_BASE_EN_0_NAME='setup_homm4_complete_2.0.0.12.exe' ARCHIVE_BASE_EN_0_MD5='74de66eb408bb2916dd0227781ba96dc' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='1100000' ARCHIVE_BASE_EN_0_VERSION='3.0-gog2.0.0.12' ARCHIVE_BASE_FR_0_NAME='setup_homm4_complete_french_2.1.0.14.exe' ARCHIVE_BASE_FR_0_MD5='2af96eb28226e563bbbcd62771f3a319' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_SIZE='1100000' ARCHIVE_BASE_FR_0_VERSION='3.0-gog2.1.0.14' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_EN_0='app' CONTENT_PATH_DEFAULT_FR_0='app' CONTENT_GAME_BIN_FILES=' mp3dec.asi binkw32.dll mss32.dll data/binkw32.dll data/mss32.dll campaign_editor.exe dxcfg.exe heroes4.exe' CONTENT_GAME_DATA_FILES=' data maps' CONTENT_DOC_DATA_FILES=' campaign_editor_help.chm h4gsmanual.pdf h4manual.pdf h4qref.pdf h4towntrees.pdf h4wwmanual.pdf multiplayer.txt readme.txt' USER_PERSISTENT_DIRECTORIES=' games' USER_PERSISTENT_FILES=' data/high_scores.dat' WINE_VIRTUAL_DESKTOP='1280x1024' APP_MAIN_EXE='heroes4.exe' APP_MAIN_ICON='heroes4.exe' APP_EDITOR_ID="${GAME_ID}-campaign-editor" APP_EDITOR_EXE='campaign_editor.exe' APP_EDITOR_ICON='campaign_editor.exe' APP_EDITOR_NAME="$GAME_NAME - campaign editor" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_BASE_ID="$GAME_ID" PKG_BIN_ID_EN="${PKG_BIN_BASE_ID}-en" PKG_BIN_ID_FR="${PKG_BIN_BASE_ID}-fr" PKG_BIN_PROVIDES=" $PKG_BIN_BASE_ID" PKG_BIN_DESCRIPTION_EN='English version' PKG_BIN_DESCRIPTION_FR='French version' ## A dependency on the language-specific variant of the data package is set, ## not on the common name provided by both variants of this package. PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_BASE_ID="${GAME_ID}-data" PKG_DATA_ID_EN="${PKG_DATA_BASE_ID}-en" PKG_DATA_ID_FR="${PKG_DATA_BASE_ID}-fr" PKG_DATA_PROVIDES=" $PKG_DATA_BASE_ID" PKG_DATA_DESCRIPTION='data' PKG_DATA_DESCRIPTION_EN="${PKG_DATA_DESCRIPTION} - English version" PKG_DATA_DESCRIPTION_FR="${PKG_DATA_DESCRIPTION} - French version" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-heroes-of-might-and-magic-5.sh0000755000000000000000000001727714471751340017153 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=20250103.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' 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=' 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 data*/*sound.pak data*/*texts.pak' CONTENT_GAME_DATA_FILES=' customcontentdm duelpresets editor hwcursors music profiles video data* *.bmp' CONTENT_DOC_L10N_FILES=' editor documentation *.pdf *.txt' # Applications APPLICATIONS_LIST=' APP_MAIN APP_HOF' APPLICATIONS_LIST_TOTE=' APP_MAIN APP_DM APP_SKILLS' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Heroes of Might and Magic V' WINE_PERSISTENT_DIRECTORIES_TOTE=' users/${USER}/Documents/My Games/Heroes of Might and Magic V - Tribes of the East' APP_MAIN_EXE='bin/h5_game.exe' ## 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' ## 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' 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' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_BASE_ID_TOTE="${GAME_ID_TOTE}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_ID_TOTE_EN="${PKG_L10N_BASE_ID_TOTE}-en" PKG_L10N_ID_TOTE_FR="${PKG_L10N_BASE_ID_TOTE}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_PROVIDES_TOTE=" $PKG_L10N_BASE_ID_TOTE" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_L10N_DESCRIPTION_TOTE_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_TOTE_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_TOTE="${GAME_ID_TOTE}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { local application application="$1" local application_exe application_exe=$(application_exe "$application") cat <<- EOF cd "$(dirname "$application_exe")" \$(wine_command) "$(basename "$application_exe")" "\$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-human-resource-machine.sh0000755000000000000000000000646514471751340016532 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=20241027.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='human-resource-machine' GAME_NAME='Human Resource Machine' ARCHIVE_BASE_HUMBLE_0_NAME='HumanResourceMachine-Linux-2016-03-23.sh' ARCHIVE_BASE_HUMBLE_0_MD5='ac6013284194203c4732e713dcc0f543' ARCHIVE_BASE_HUMBLE_0_SIZE='73000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0.8262-humble.2016.03.23' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/human-resource-machine' ARCHIVE_BASE_GOG_1_NAME='gog_human_resource_machine_2.0.0.3.sh' ARCHIVE_BASE_GOG_1_MD5='4670105392afc503b880c78d56a2f1ad' ARCHIVE_BASE_GOG_1_SIZE='74000' ARCHIVE_BASE_GOG_1_VERSION='1.0.8262-gog2.0.0.3' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/human_resource_machine' ARCHIVE_BASE_GOG_0_NAME='gog_human_resource_machine_2.0.0.2.sh' ARCHIVE_BASE_GOG_0_MD5='35bc19839c73ddf4b503c58a0a887f98' ARCHIVE_BASE_GOG_0_SIZE='74000' ARCHIVE_BASE_GOG_0_VERSION='1.0.8262-gog2.0.0.2' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_GAME_BIN64_RELATIVE_PATH_HUMBLE='x86_64' CONTENT_GAME_BIN64_FILES=' HumanResourceMachine.bin.x86_64' CONTENT_GAME_BIN32_RELATIVE_PATH_HUMBLE='x86' CONTENT_GAME_BIN32_FILES=' HumanResourceMachine.bin.x86' CONTENT_GAME_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_GAME_DATA_FILES=' shaders resource.pak icon.png' CONTENT_DOC_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_DOC_DATA_FILES=' LICENSE.txt README.linux' APP_MAIN_EXE_BIN64='HumanResourceMachine.bin.x86_64' APP_MAIN_EXE_BIN32='HumanResourceMachine.bin.x86' APP_MAIN_ICON_HUMBLE='noarch/icon.png' APP_MAIN_ICON_GOG='icon.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-impression-games-city-builders.sh0000755000000000000000000000671514471751340020230 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=20241226.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_ZEUS='zeus-master-of-olympus' GAME_NAME_ZEUS='Zeus: Master of Olympus' GAME_ID_EMPEROR='emperor-rise-of-the-middle-kingdom' GAME_NAME_EMPEROR='Emperor: Rise of the Middle Kingdom' # Game archives ## Zeus ARCHIVE_BASE_ZEUS_0_NAME='setup_zeus_and_poseidon_2.1.0.10.exe' ARCHIVE_BASE_ZEUS_0_MD5='f26f9ed5ecaa4e58fca64acb88255107' ARCHIVE_BASE_ZEUS_0_TYPE='innosetup' ARCHIVE_BASE_ZEUS_0_SIZE='800000' ARCHIVE_BASE_ZEUS_0_VERSION='2.1-gog2.1.0.10' ARCHIVE_BASE_ZEUS_0_URL='https://www.gog.com/game/zeus_poseidon' ## Emperor ARCHIVE_BASE_EMPEROR_0_NAME='setup_emperor_rise_of_the_middle_kingdom_2.0.0.2.exe' ARCHIVE_BASE_EMPEROR_0_MD5='5e50e84c028a85eafe5dd5f2aa277fea' ARCHIVE_BASE_EMPEROR_0_TYPE='innosetup' ARCHIVE_BASE_EMPEROR_0_SIZE='820000' ARCHIVE_BASE_EMPEROR_0_VERSION='1.0.1.0-gog2.0.0.2' ARCHIVE_BASE_EMPEROR_0_URL='https://www.gog.com/game/emperor_rise_of_the_middle_kingdom' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' *.asi *.dll *.exe *.ini *.m3d' CONTENT_GAME_DATA_FILES=' adventures audio binks campaigns cities data model res dragon.ico poseidon.ico zeus.ico *.eng *.inf' CONTENT_DOC_DATA_FILES=' *.pdf *.txt' CONTENT_DOC_DATA_FILES=' *readme.txt *editor*.txt *.pdf' # Applications USER_PERSISTENT_DIRECTORIES=' save' USER_PERSISTENT_FILES=' *.ini' ## With the default OpenGL renderer, text boxes are not displayed (WINE 9.0). WINE_DIRECT3D_RENDERER='wined3d/gdi' ## The game window fails to render anything unless the game runs in a WINE virtual desktop (WINE 9.0). WINE_VIRTUAL_DESKTOP='auto' ## Disable CSMT to avoid degraded performances ## TODO: Check if it still required with current WINE builds 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="$APP_MAIN_ICON_EMPEROR" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID_ZEUS="${GAME_ID_ZEUS}-data" PKG_DATA_ID_EMPEROR="${GAME_ID_EMPEROR}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-infinity-engine-enhanced-edition-expansions.sh0000755000000000000000000000570014471751340022637 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=20241226.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_DRAGONSPEAR='baldurs-gate-1-enhanced-edition' GAME_NAME_DRAGONSPEAR='Baldurʼs Gate Enhanced Edition' GAME_ID_FACES='baldurs-gate-1-enhanced-edition' GAME_NAME_FACES='Baldurʼs Gate Enhanced Edition' EXPANSION_ID_DRAGONSPEAR='siege-of-dragonspear' EXPANSION_NAME_DRAGONSPEAR='Siege of Dragonspear' EXPANSION_ID_FACES='faces-of-good-and-evil' EXPANSION_NAME_FACES='Faces of Good and Evil' # Archives ## Baldur's Gate 1 Enhanced Edition - Siege of Dragonspear ARCHIVE_BASE_DRAGONSPEAR_1_NAME='baldur_s_gate_siege_of_dragonspear_2_6_6_0_47291.sh' ARCHIVE_BASE_DRAGONSPEAR_1_MD5='36d275f6822b3cd2946ca606c0ebdb67' ARCHIVE_BASE_DRAGONSPEAR_1_SIZE='1900000' ARCHIVE_BASE_DRAGONSPEAR_1_VERSION='2.6.6.0-gog47291' ARCHIVE_BASE_DRAGONSPEAR_1_URL='https://www.gog.com/game/baldurs_gate_siege_of_dragonspear' ARCHIVE_BASE_DRAGONSPEAR_0_NAME='baldur_s_gate_siege_of_dragonspear_2_6_5_0_46477.sh' ARCHIVE_BASE_DRAGONSPEAR_0_MD5='27970876d9252fcb3174df8201db3ca3' ARCHIVE_BASE_DRAGONSPEAR_0_SIZE='1900000' ARCHIVE_BASE_DRAGONSPEAR_0_VERSION='2.6.5.0-gog46477' ## Baldur's Gate 1 Enhanced Edition - Faces of Good and Evil ARCHIVE_BASE_FACES_1_NAME='baldur_s_gate_faces_of_good_and_evil_2_6_6_0_47291.sh' ARCHIVE_BASE_FACES_1_MD5='5bcc622e44bdf9b03af64f5fe0a83d38' ARCHIVE_BASE_FACES_1_SIZE='2500' ARCHIVE_BASE_FACES_1_VERSION='2.6.6.0-gog47291' ARCHIVE_BASE_FACES_1_URL='https://www.gog.com/game/baldurs_gate_faces_of_good_and_evil' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES_DRAGONSPEAR=' sod-dlc.zip' CONTENT_GAME_MAIN_FILES_FACES=' override/yanner2?.bmp override/M_YANN2.lua' PKG_PARENT_ID_DRAGONSPEAR="$GAME_ID_DRAGONSPEAR" PKG_PARENT_ID_FACES="$GAME_ID_FACES" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-infinity-engine-enhanced-edition-games.sh0000755000000000000000000002213214471751340021542 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=20250227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_BG1='baldurs-gate-1-enhanced-edition' GAME_NAME_BG1='Baldurʼs Gate Enhanced Edition' GAME_ID_BG2='baldurs-gate-2-enhanced-edition' GAME_NAME_BG2='Baldurʼs Gate Ⅱ Enhanced Edition' GAME_ID_IWD1='icewind-dale-1-enhanced-edition' GAME_NAME_IWD1='Icewind Dale Enhanced Edition' GAME_ID_PST='planescape-torment-enhanced-edition' GAME_NAME_PST='Planescape: Torment Enhanced Edition' # Game archives ## Baldur's Gate 1 Enhanced Edition ARCHIVE_BASE_BG1_1_NAME='baldur_s_gate_enhanced_edition_2_6_6_0_47291.sh' ARCHIVE_BASE_BG1_1_MD5='6f7be163ebb80a0fbc9d6331f9c6f09c' ARCHIVE_BASE_BG1_1_SIZE='3300000' ARCHIVE_BASE_BG1_1_VERSION='2.6.6.0-gog47291' ARCHIVE_BASE_BG1_1_URL='https://www.gog.com/game/baldurs_gate_enhanced_edition' ARCHIVE_BASE_BG1_0_NAME='baldur_s_gate_enhanced_edition_2_6_5_0_46477.sh' ARCHIVE_BASE_BG1_0_MD5='a87444f36602b5059e3c885ec2ff50e1' ARCHIVE_BASE_BG1_0_SIZE='3300000' ARCHIVE_BASE_BG1_0_VERSION='2.6.5.0-gog46477' ### Option icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BG1='baldurs-gate-1-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_BG1='58401cf80bc9f1a9e9a0896f5d74b02a' ARCHIVE_OPTIONAL_ICONS_URL_BG1='https://downloads.dotslashplay.it/resources/baldurs-gate-1-enhanced-edition/' CONTENT_ICONS_PATH_BG1='.' CONTENT_ICONS_FILES_BG1=' 16x16 24x42 32x32 48x48 64x64 256x256' ## Baldur's Gate 2 Enhanced Edition ARCHIVE_BASE_BG2_1_NAME='baldur_s_gate_ii_enhanced_edition_2_6_6_0_47292.sh' ARCHIVE_BASE_BG2_1_MD5='43b37a554ffb712176ea8709fc98ed84' ARCHIVE_BASE_BG2_1_SIZE='380000' ARCHIVE_BASE_BG2_1_VERSION='2.6.6.0-gog47292' ARCHIVE_BASE_BG2_1_URL='https://www.gog.com/game/baldurs_gate_2_enhanced_edition' ARCHIVE_BASE_BG2_0_NAME='baldur_s_gate_ii_enhanced_edition_2_6_5_0_46477.sh' ARCHIVE_BASE_BG2_0_MD5='aa62efd4b1c69f074a784e637234e7c4' ARCHIVE_BASE_BG2_0_SIZE='3800000' ARCHIVE_BASE_BG2_0_VERSION='2.6.5.0-gog46477' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_BG2='baldurs-gate-2-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_BG2='36055600f9461793995a318e74b133e8' ARCHIVE_OPTIONAL_ICONS_URL_BG2='https://downloads.dotslashplay.it/games/baldurs-gate-2-enhanced-edition/' CONTENT_ICONS_PATH_BG2='.' CONTENT_ICONS_FILES_BG2=' 16x16 32x32 48x48 64x64 128x128 256x256' ## Icewind Dale 1 Enhanced Edition ARCHIVE_BASE_IWD1_1_NAME='icewind_dale_enhanced_edition_2_6_6_0_47290.sh' ARCHIVE_BASE_IWD1_1_MD5='fd7721f10a6d39c545ef46c58d80e2cc' ARCHIVE_BASE_IWD1_1_SIZE='3000000' ARCHIVE_BASE_IWD1_1_VERSION='2.6.6.0-gog47290' ARCHIVE_BASE_IWD1_1_URL='https://www.gog.com/game/icewind_dale_enhanced_edition' ARCHIVE_BASE_IWD1_0_NAME='icewind_dale_enhanced_edition_2_6_5_0_46474.sh' ARCHIVE_BASE_IWD1_0_MD5='7fa481705b5d5b7f5d714a6a19c856e0' ARCHIVE_BASE_IWD1_0_SIZE='3000000' ARCHIVE_BASE_IWD1_0_VERSION='2.6.5.0-gog46474' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_IWD1='icewind-dale-1-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_IWD1='2e7db406aca79f9182c4efa93df80bf4' ARCHIVE_OPTIONAL_ICONS_URL_IWD1='https://downloads.dotslashplay.it/resources/icewind-dale-1-enhanced-edition/' CONTENT_ICONS_PATH_IWD1='.' CONTENT_ICONS_FILES_IWD1=' 16x16 32x32 48x48 64x64 128x128 256x256' ## Planescape: Torment ARCHIVE_BASE_PST_1_NAME='planescape_torment_enhanced_edition_3_1_4_26532.sh' ARCHIVE_BASE_PST_1_MD5='7d42ae99df8c0a4ff460235ae406f2d6' ARCHIVE_BASE_PST_1_SIZE='1800000' ARCHIVE_BASE_PST_1_VERSION='3.1.4-gog26532' ARCHIVE_BASE_PST_1_URL='https://www.gog.com/game/planescape_torment_enhanced_edition' ARCHIVE_BASE_PST_0_NAME='gog_planescape_torment_enhanced_edition_2.1.0.3.sh' ARCHIVE_BASE_PST_0_MD5='649c1bf9d7ccd81553c574ff1bec2cef' ARCHIVE_BASE_PST_0_SIZE='1800000' ARCHIVE_BASE_PST_0_VERSION='3.1.3-gog2.1.0.3' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_PST='planescape-torment-enhanced-edition_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_PST='ed1c9961e2ecfa401af825d75723fe9c' ARCHIVE_OPTIONAL_ICONS_URL_PST='https://downloads.dotslashplay.it/games/planescape-torment-enhanced-edition/' CONTENT_ICONS_PATH_PST='.' CONTENT_ICONS_FILES_PST=' 16x16 32x32 48x48 64x64 96x96 128x128 256x256' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES_BG1=' BaldursGate' CONTENT_GAME_BIN_FILES_BG2=' BaldursGateII' CONTENT_GAME_BIN_FILES_IWD1=' IcewindDale' CONTENT_GAME_BIN_FILES_PST=' Torment64' CONTENT_GAME_L10N_FR_FILES=' lang/fr_FR' CONTENT_GAME_DATA_FILES=' chitin.key engine.lua Manuals movies music scripts data' ## The English localization files are always included, ## so they can be used as a fallback for incomplete localizations. CONTENT_GAME0_DATA_FILES=' lang/en_US' CONTENT_DOC_DATA_RELATIVE_PATH='../docs' ## FIXME: An explicit list of files should be set. CONTENT_DOC_DATA_FILES=' *' APP_MAIN_EXE_BG1='BaldursGate' APP_MAIN_EXE_BG2='BaldursGateII' APP_MAIN_EXE_IWD1='IcewindDale' APP_MAIN_EXE_PST='Torment64' APP_MAIN_ICON='../support/icon.png' # Packages PACKAGES_LIST=' PKG_BIN PKG_L10N_FR PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libexpat.so.1 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libssl.so.1.0.0 libstdc++.so.6 libX11.so.6' PKG_L10N_FR_DESCRIPTION='French localization' PKG_L10N_DEPENDENCIES_SIBLINGS=' PKG_BIN' PKG_L10N_FR_DEPENDENCIES_SIBLINGS="$PKG_L10N_DEPENDENCIES_SIBLINGS" PKG_DATA_DESCRIPTION='data' ## Baldur's Gate 1 Enhanced Edition PKG_L10N_ID_BG1="${GAME_ID_BG1}-l10n" PKG_L10N_FR_ID_BG1="${PKG_L10N_ID_BG1}-fr" PKG_L10N_PROVIDES_BG1=" $PKG_L10N_ID_BG1" PKG_L10N_FR_PROVIDES_BG1="$PKG_L10N_PROVIDES_BG1" PKG_DATA_ID_BG1="${GAME_ID_BG1}-data" ## Ensure easy upgrades from packaged generated with pre-20250103.1 game scripts PKG_DATA_PROVIDES_BG1="${PKG_DATA_PROVIDES_BG1:-} baldurs-gate-1-enhanced-edition-l10n-en" ## Baldur's Gate 2 Enhanced Edition PKG_L10N_ID_BG2="${GAME_ID_BG2}-l10n" PKG_L10N_FR_ID_BG2="${PKG_L10N_ID_BG2}-fr" PKG_L10N_PROVIDES_BG2=" $PKG_L10N_ID_BG2" PKG_L10N_FR_PROVIDES_BG2="$PKG_L10N_PROVIDES_BG2" PKG_DATA_ID_BG2="${GAME_ID_BG2}-data" ## Ensure easy upgrades from packaged generated with pre-20250103.1 game scripts PKG_DATA_PROVIDES_BG2="${PKG_DATA_PROVIDES_BG2:-} baldurs-gate-2-enhanced-edition-l10n-en" ## Icewind Dale 1 Enhanced Edition PKG_L10N_ID_IWD1="${GAME_ID_IWD1}-l10n" PKG_L10N_FR_ID_IWD1="${PKG_L10N_ID_IWD1}-fr" PKG_L10N_PROVIDES_IWD1=" $PKG_L10N_ID_IWD1" PKG_L10N_FR_PROVIDES_IWD1="$PKG_L10N_PROVIDES_IWD1" PKG_DATA_ID_IWD1="${GAME_ID_IWD1}-data" ## Ensure easy upgrades from packaged generated with pre-20250103.1 game scripts PKG_DATA_PROVIDES_IWD1="${PKG_DATA_PROVIDES_IWD1:-} icewind-dale-1-enhanced-edition-l10n-en" ## Planescape: Torment Enhanced Edition PKG_L10N_ID_PST="${GAME_ID_PST}-l10n" PKG_L10N_FR_ID_PST="${PKG_L10N_ID_PST}-fr" PKG_L10N_PROVIDES_PST=" $PKG_L10N_ID_PST" PKG_L10N_FR_PROVIDES_PST="$PKG_L10N_PROVIDES_PST" PKG_DATA_ID_PST="${GAME_ID_PST}-data" ## Ensure easy upgrades from packaged generated with pre-20250103.1 game scripts PKG_DATA_PROVIDES_PST="${PKG_DATA_PROVIDES_PST:-} planescape-torment-enhanced-edition-l10n-en" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Force the use of system-provided SDL APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" ## 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="$(application_prerun 'APP_MAIN')"' # The game segfaults on launch when SDL_VIDEODRIVER is set to "wayland". if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' launchers_generation 'PKG_BIN' # Build packages packages_generation case "$(messages_language)" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_BIN' 'PKG_DATA' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN' 'PKG_DATA' 'PKG_L10N_FR' # Clean up working_directory_cleanup exit 0 games/play-infinity-engine-games.sh0000755000000000000000000004075314471751340016357 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=20241121.6 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_1_NAME='setup_icewind_dale_2_2.01_fixes_(77030).exe' ARCHIVE_BASE_IWD2_EN_1_MD5='7579f564757a6d9261a29b599a11f335' ARCHIVE_BASE_IWD2_EN_1_TYPE='innosetup' ARCHIVE_BASE_IWD2_EN_1_PART1_NAME='setup_icewind_dale_2_2.01_fixes_(77030)-1.bin' ARCHIVE_BASE_IWD2_EN_1_PART1_MD5='79a7e58ea11380bbbf7329a97d522e3f' ARCHIVE_BASE_IWD2_EN_1_SIZE='1555964' ARCHIVE_BASE_IWD2_EN_1_VERSION='2.01.101615-gog77030' ARCHIVE_BASE_IWD2_EN_1_URL='https://www.gog.com/game/icewind_dale_2' ARCHIVE_BASE_IWD2_FR_1_NAME='setup_icewind_dale_2_2.01_fixes_(french)_(77030).exe' ARCHIVE_BASE_IWD2_FR_1_MD5='8b25fcc3e12641efd79d6c2780f3cc03' ARCHIVE_BASE_IWD2_FR_1_TYPE='innosetup' ARCHIVE_BASE_IWD2_FR_1_PART1_NAME='setup_icewind_dale_2_2.01_fixes_(french)_(77030)-1.bin' ARCHIVE_BASE_IWD2_FR_1_PART1_MD5='0d25ffba9a37471185327d0beedd7aaf' ARCHIVE_BASE_IWD2_FR_1_SIZE='1552369' ARCHIVE_BASE_IWD2_FR_1_VERSION='2.01.101615-gog77030' ARCHIVE_BASE_IWD2_FR_1_URL='https://www.gog.com/game/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_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' ## 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='.' CONTENT_PATH_DEFAULT_IWD2_EN_0='app' CONTENT_PATH_DEFAULT_IWD2_FR_0='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)' ## TODO: Game-specific lists would be easier to review CONTENT_GAME_BIN_FILES=' script compiler luaauto.cfg lasnil32.dll 3dfx.dll binkw32.dll baldur.exe bgdxtest.exe bggltest.exe bcgonfig.exe bgmain.exe bgmain2.exe charview.exe config.exe glsetup.exe idmain.exe iwd2.exe mconvert.exe mplaynow.exe torment.exe autonote.ini beast.ini keymap.ini layout.ini quests.ini' CONTENT_GAME0_BIN_RELATIVE_PATH='__support/app' CONTENT_GAME0_BIN_FILES=' iwd2.exe keymap.ini' ## The following configuration files are generated by the current game script, ## the shipped versions are ignored. CONTENT_GAME1_BIN_FILES=' baldur.ini icewind.ini icewind2.ini torment.ini' 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_GAME0_L10N_RELATIVE_PATH='__support/app' CONTENT_GAME0_L10N_FILES=' party.ini' CONTENT_GAME_DATA_FILES=' baldur.ico var.var cd2 cd3 data music scripts *.bif *.mpi' CONTENT_DOC_L10N_FILES=' *.htm *.pdf *.txt' CONTENT_DOC0_L10N_PATH_BG1_EN='data/noarch/docs/english' CONTENT_DOC0_L10N_PATH_BG1_FR='data/noarch/docs/french' CONTENT_DOC0_L10N_PATH_BG1_PL='data/noarch/docs/polish' CONTENT_DOC0_L10N_PATH_BG1_EN_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_BG1_FR_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_BG2_EN='data/noarch/docs/english' CONTENT_DOC0_L10N_PATH_BG2_FR='data/noarch/docs/french' CONTENT_DOC0_L10N_PATH_BG2_EN_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_BG2_FR_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_PST_EN='data/noarch/docs/english' CONTENT_DOC0_L10N_PATH_PST_FR='data/noarch/docs/french' CONTENT_DOC0_L10N_PATH_PST_RU='data/noarch/docs/russian' CONTENT_DOC0_L10N_PATH_PST_EN_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_PST_FR_0='data/noarch/docs' CONTENT_DOC0_L10N_PATH_PST_RU_0='data/noarch/docs' ## FIXME: An explicit files list should be given. CONTENT_DOC0_L10N_FILES_BG1=' *' CONTENT_DOC0_L10N_FILES_BG2=' *' CONTENT_DOC0_L10N_FILES_PST=' *' # Applications USER_PERSISTENT_FILES=' *.ini' USER_PERSISTENT_DIRECTORIES=' characters mpsave save' ## Disable the multi-threaded command stream feature, as it has a very severe impact on performances. WINE_WINETRICKS_VERBS='csmt=off' APPLICATIONS_LIST='APP_MAIN APP_CONFIG' APPLICATIONS_LIST_PST='APP_MAIN' APP_CONFIG_CAT='Settings' ## Baldur's Gate 1 APP_MAIN_EXE_BG1='bgmain2.exe' APP_MAIN_ICON_BG1='baldur.exe' APP_CONFIG_ID_BG1="${GAME_ID_BG1}-config" APP_CONFIG_NAME_BG1="$GAME_NAME_BG1 - configuration" APP_CONFIG_EXE_BG1='config.exe' ## Baldur's Gate 2 APP_MAIN_EXE_BG2='bgmain.exe' APP_MAIN_ICON_BG2='baldur.exe' ## Merge "data" and "data/data". ## TODO: The symbolic link could probably be shipped in the package instead. APP_MAIN_PRERUN_BG2=' # Merge "data" and "data/data" ln --symbolic --force --no-target-directory . "data/data" ' APP_CONFIG_ID_BG2="${GAME_ID_BG2}-config" APP_CONFIG_NAME_BG2="$GAME_NAME_BG2 - configuration" APP_CONFIG_EXE_BG2='bgconfig.exe' ## Icewind Dale 1 APP_MAIN_EXE_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' ## Icewind Dale 2 APP_MAIN_EXE_IWD2='iwd2.exe' APP_MAIN_ICON_IWD2='__support/app/iwd2.exe' APP_MAIN_ICON_IWD2_EN_0='iwd2.exe' APP_MAIN_ICON_IWD2_FR_0='iwd2.exe' APP_CONFIG_ID_IWD2="${GAME_ID_IWD2}-config" APP_CONFIG_NAME_IWD2="$GAME_NAME_IWD2 - configuration" APP_CONFIG_EXE_IWD2='config.exe' ## Planescape: Torment APP_MAIN_EXE_PST='torment.exe' # Packages ## Common PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_L10N_DESCRIPTION_PL='Polish localization' PKG_L10N_DESCRIPTION_RU='Russian localization' PKG_DATA_DESCRIPTION='data' ## Baldur's Gate 1 PKG_L10N_BASE_ID_BG1="${GAME_ID_BG1}-l10n" PKG_L10N_ID_BG1_EN="${PKG_L10N_BASE_ID_BG1}-en" PKG_L10N_ID_BG1_FR="${PKG_L10N_BASE_ID_BG1}-fr" PKG_L10N_ID_BG1_PL="${PKG_L10N_BASE_ID_BG1}-pl" PKG_L10N_PROVIDES_BG1=" $PKG_L10N_BASE_ID_BG1" PKG_L10N_DESCRIPTION_BG1_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_BG1_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_BG1_PL="$PKG_L10N_DESCRIPTION_PL" PKG_DATA_ID_BG1="${GAME_ID_BG1}-data" ## Baldur's Gate 2 PKG_L10N_BASE_ID_BG2="${GAME_ID_BG2}-l10n" PKG_L10N_ID_BG2_EN="${PKG_L10N_BASE_ID_BG2}-en" PKG_L10N_ID_BG2_FR="${PKG_L10N_BASE_ID_BG2}-fr" PKG_L10N_PROVIDES_BG2=" $PKG_L10N_BASE_ID_BG2" PKG_L10N_DESCRIPTION_BG2_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_BG2_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_BG2="${GAME_ID_BG2}-data" ## Icewind Dale 1 PKG_L10N_BASE_ID_IWD1="${GAME_ID_IWD1}-l10n" PKG_L10N_ID_IWD1="${PKG_L10N_BASE_ID_IWD1}-en" PKG_L10N_PROVIDES_IWD1=" $PKG_L10N_BASE_ID_IWD1" PKG_L10N_DESCRIPTION_IWD1="$PKG_L10N_DESCRIPTION_EN" PKG_DATA_ID_IWD1="${GAME_ID_IWD1}-data" ## Icewind Dale 2 PKG_L10N_BASE_ID_IWD2="${GAME_ID_IWD2}-l10n" PKG_L10N_ID_IWD2_EN="${PKG_L10N_BASE_ID_IWD2}-en" PKG_L10N_ID_IWD2_FR="${PKG_L10N_BASE_ID_IWD2}-fr" PKG_L10N_PROVIDES_IWD2=" $PKG_L10N_BASE_ID_IWD2" PKG_L10N_DESCRIPTION_IWD2_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_IWD2_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_IWD2="${GAME_ID_IWD2}-data" ## Planescape: Torment PKG_L10N_BASE_ID_PST="${GAME_ID_PST}-l10n" PKG_L10N_ID_PST_EN="${PKG_L10N_BASE_ID_PST}-en" PKG_L10N_ID_PST_FR="${PKG_L10N_BASE_ID_PST}-fr" PKG_L10N_ID_PST_RU="${PKG_L10N_BASE_ID_PST}-ru" PKG_L10N_PROVIDES_PST=" $PKG_L10N_BASE_ID_PST" PKG_L10N_DESCRIPTION_PST_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_PST_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_PST_RU="$PKG_L10N_DESCRIPTION_RU" PKG_DATA_ID_PST="${GAME_ID_PST}-data" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Mojosetup installers ## - Convert all file names to lowercase if [ "$(archive_type "$(current_archive)")" = 'mojosetup' ]; then tolower . fi ## Baldur's Gate 2 ## - Delete broken symbolic links ## - Merge "data" and "data/data" case "$(current_archive)" in ('ARCHIVE_BASE_BG2_'*) rm --force --recursive \ 'mpsave' \ 'temp' if [ -e 'data/data' ]; then cp --link --recursive --update=none 'data/data/'* 'data/' rm --force --recursive 'data/data' fi ;; esac ## Generate a minimal configuration file case "$(current_archive)" in ('ARCHIVE_BASE_BG1_'*) config_file='baldur.ini' ;; ('ARCHIVE_BASE_BG2_'*) config_file='baldur.ini' ;; ('ARCHIVE_BASE_IWD1_'*) config_file='icewind.ini' ;; ('ARCHIVE_BASE_IWD2_'*) config_file='icewind2.ini' ;; ('ARCHIVE_BASE_PST_'*) config_file='torment.ini' ;; esac game_path="C:\\$(game_id)" case "$(current_archive)" in ('ARCHIVE_BASE_BG1_'*) cat > "$config_file" <<- EOF [Alias] HD0:=${game_path}\\ CD1:=${game_path}\\data\\ CD2:=${game_path}\\data\\ CD3:=${game_path}\\data\\ CD4:=${game_path}\\data\\ CD5:=${game_path}\\data\\ CD6:=${game_path}\\data\\ EOF ;; ('ARCHIVE_BASE_BG2_'*) cat > "$config_file" <<- EOF [Alias] HD0:=${game_path}\\ CD1:=${game_path}\\data\\ CD2:=${game_path}\\data\\ CD3:=${game_path}\\data\\ CD4:=${game_path}\\data\\ CD5:=${game_path}\\data\\ CD6:=${game_path}\\data\\ EOF ;; ('ARCHIVE_BASE_IWD1_'*) cat > "$config_file" <<- EOF [Alias] HD0:=${game_path}\\ CD1:=${game_path}\\ CD2:=${game_path}\\cd2\\ CD3:=${game_path}\\cd3\\ EOF ;; ('ARCHIVE_BASE_IWD2_'*) cat > "$config_file" <<- EOF [Alias] HD0:=${game_path}\\ CD1:=${game_path}\\data\\ CD2:=${game_path}\\cd2\\ [Movies] INTRO=1 EOF ;; ('ARCHIVE_BASE_PST_'*) cat > "$config_file" <<- EOF [Alias] HD0:=${game_path}\\ CD1:=${game_path}\\data\\ CD2:=${game_path}\\data\\ CD3:=${game_path}\\data\\ CD4:=${game_path}\\data\\ CD5:=${game_path}\\data\\ EOF ;; esac ## The native windowed mode is used instead of a WINE virtual desktop, ## as using a WINE virtual desktop would cause cursor flickering (WINE 9.0). ## cf. https://bugs.winehq.org/show_bug.cgi?id=56986 cat >> "$config_file" <<- EOF [Program Options] Full Screen=0 EOF ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-into-the-breach.sh0000755000000000000000000001027614471751340015137 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=20241027.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='into-the-breach' GAME_NAME='Into the Breach' ARCHIVE_BASE_HUMBLE_4_NAME='IntoTheBreach_1_2_76_Linux.zip' ARCHIVE_BASE_HUMBLE_4_MD5='79f506d656c088c67dbf9286936e0e97' ARCHIVE_BASE_HUMBLE_4_SIZE='540000' ARCHIVE_BASE_HUMBLE_4_VERSION='1.2.76-humble.2022.08.02' ARCHIVE_BASE_HUMBLE_4_URL='https://subsetgames.com/itb.html#HumbleWidgetBox5' ARCHIVE_BASE_HUMBLE_3_NAME='IntoTheBreach_1_2_75_Linux.zip' ARCHIVE_BASE_HUMBLE_3_MD5='b9912dc0b9bdd2013704b918ce438592' ARCHIVE_BASE_HUMBLE_3_SIZE='540000' ARCHIVE_BASE_HUMBLE_3_VERSION='1.2.75-humble.2022.07.28' ARCHIVE_BASE_HUMBLE_2_NAME='IntoTheBreach_1_2_71_Linux.zip' ARCHIVE_BASE_HUMBLE_2_MD5='afa9f960d757ec72c537f306a2065d4f' ARCHIVE_BASE_HUMBLE_2_SIZE='540000' ARCHIVE_BASE_HUMBLE_2_VERSION='1.2.71-humble.2022.07.19' ARCHIVE_BASE_HUMBLE_1_NAME='Into_the_Breach_Linux.1.2.23.zip' ARCHIVE_BASE_HUMBLE_1_MD5='35cbc7ad39661ac97f41760f77f71fab' ARCHIVE_BASE_HUMBLE_1_SIZE='320000' ARCHIVE_BASE_HUMBLE_1_VERSION='1.2.23-humble.2020.05.15' ARCHIVE_BASE_HUMBLE_0_NAME='Into_the_Breach_Linux.1.2.20.zip' ARCHIVE_BASE_HUMBLE_0_MD5='5a8b33e1ccbc2953c99aacf0ad38ca37' ARCHIVE_BASE_HUMBLE_0_SIZE='320000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.2.20-humble.2020.04.20' ARCHIVE_BASE_GOG_1_NAME='into_the_breach_1_2_75_57446.sh' ARCHIVE_BASE_GOG_1_MD5='4cfb207c03f337e6f04faa1fa5bd5aea' ARCHIVE_BASE_GOG_1_SIZE='540000' ARCHIVE_BASE_GOG_1_VERSION='1.2.75-gog57446' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/into_the_breach' ARCHIVE_BASE_GOG_0_NAME='into_the_breach_1_2_24_38624.sh' ARCHIVE_BASE_GOG_0_MD5='dbc8142ec1da82284b7959a48b50d512' ARCHIVE_BASE_GOG_0_SIZE='320000' ARCHIVE_BASE_GOG_0_VERSION='1.2.24-gog38624' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='into-the-breach_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='ce72ae946c4708feabb324493dc197b1' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/into-the-breach/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48 64x64 128x128 256x256' CONTENT_PATH_DEFAULT_HUMBLE='.' CONTENT_PATH_DEFAULT_HUMBLE_1='Into the Breach' CONTENT_PATH_DEFAULT_HUMBLE_0='Into the Breach Linux' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_LIBS_BIN_RELATIVE_PATH='linux_x64' ## Using the system-provided libSDL2-2.0.so.0 instead of the shipped one triggers a segfault on a Debian Trixie/Sid. CONTENT_LIBS_BIN_FILES=' libfmod.so.10 libfmodstudio.so.10 libSDL2-2.0.so.0' CONTENT_GAME_BIN_FILES=' Breach' CONTENT_GAME_DATA_FILES=' maps resources scripts shadersOGL' CONTENT_DOC_DATA_FILES=' licenses' APP_MAIN_EXE='Breach' ## The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". APP_MAIN_PRERUN='# The game crashes on launch when SDL_VIDEODRIVER is set to "wayland". if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-iron-harvest.sh0000755000000000000000000001240614471751340014604 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Iron Harvest ### script_version=20241104.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='iron-harvest' GAME_NAME='Iron Harvest' ARCHIVE_BASE_1_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453).exe' ARCHIVE_BASE_1_MD5='1f13da4dc9ce6916075c4f3287feba5a' ARCHIVE_BASE_1_EXTRACTOR='innoextract' ## Do not convert file paths to lower case. ARCHIVE_BASE_1_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_1_PART1_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453)-1.bin' ARCHIVE_BASE_1_PART1_MD5='39064f2c73fc1289d6963d60ad3ed20f' ARCHIVE_BASE_1_PART2_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453)-2.bin' ARCHIVE_BASE_1_PART2_MD5='6c7307a3c9fd9762e277efde3f38c408' ARCHIVE_BASE_1_PART3_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453)-3.bin' ARCHIVE_BASE_1_PART3_MD5='c8a1219731b4d51bf294937691883bbd' ARCHIVE_BASE_1_PART4_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453)-4.bin' ARCHIVE_BASE_1_PART4_MD5='6501face360636344b93183c072b9a10' ARCHIVE_BASE_1_PART5_NAME='setup_iron_harvest_1.4.8.2986_rev._58254_(64bit)_(58453)-5.bin' ARCHIVE_BASE_1_PART5_MD5='ead1c35efe7a6883a4204550650f2b0f' ARCHIVE_BASE_1_SIZE='30858160' ARCHIVE_BASE_1_VERSION='1.4.8.2986-gog58453' ARCHIVE_BASE_1_URL='https://www.gog.com/game/iron_harvest' ARCHIVE_BASE_0_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091).exe' ARCHIVE_BASE_0_MD5='d89a5f6b4a8c89769af3eaadc75953f2' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ## Do not convert file paths to lower case. ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_PART1_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091)-1.bin' ARCHIVE_BASE_0_PART1_MD5='5d90f09c6b65889db5754d97cbdfebf3' ARCHIVE_BASE_0_PART2_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091)-2.bin' ARCHIVE_BASE_0_PART2_MD5='80be1a755688797cc7a7a5b099add78a' ARCHIVE_BASE_0_PART3_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091)-3.bin' ARCHIVE_BASE_0_PART3_MD5='81e7c85bc9017e8ae157bdea2140d852' ARCHIVE_BASE_0_PART4_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091)-4.bin' ARCHIVE_BASE_0_PART4_MD5='3279373222b0dfdc37bd4d882d3bcc63' ARCHIVE_BASE_0_PART5_NAME='setup_iron_harvest_1.4.8.2983_rev._58247_(64bit)_(58091)-5.bin' ARCHIVE_BASE_0_PART5_MD5='96b6db50d7167699257c1ab6428c8711' ARCHIVE_BASE_0_SIZE='31000000' ARCHIVE_BASE_0_VERSION='1.4.8.2983-gog58091' UNITY3D_NAME='IronHarvest' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=" config release/MonoBleedingEdge release/UnityPlayer.dll release/${UNITY3D_NAME}.exe release/${UNITY3D_NAME}_Data/Plugins" CONTENT_GAME_DATA_SCENES_1_FILES=' gamedata/scenes/scene_sp_*' CONTENT_GAME_DATA_SCENES_2_FILES=' gamedata/scenes' CONTENT_GAME_DATA_CINEMATICS_FILES=" release/${UNITY3D_NAME}_Data/StreamingAssets/Cinematics" CONTENT_GAME_DATA_SETTING_FILES=' gamedata/setting' CONTENT_GAME_DATA_UI_FILES=' gamedata/ui' CONTENT_GAME_DATA_FILES=" battleplan content gamedata lang logic version release/${UNITY3D_NAME}_Data" CONTENT_DOC_DATA_FILES=' licenses' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/GOG.com/Galaxy/Applications/49637353028337449' APP_MAIN_EXE="release/${UNITY3D_NAME}.exe" APP_MAIN_ICON="$APP_MAIN_EXE" PACKAGES_LIST=' PKG_BIN PKG_DATA_SCENES_1 PKG_DATA_SCENES_2 PKG_DATA_CINEMATICS PKG_DATA_SETTING PKG_DATA_UI PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_SCENES_1 PKG_DATA_SCENES_2 PKG_DATA_CINEMATICS PKG_DATA_SETTING PKG_DATA_UI' PKG_DATA_SCENES_ID="${PKG_DATA_ID}-scenes" PKG_DATA_SCENES_1_ID="${PKG_DATA_SCENES_ID}-1" PKG_DATA_SCENES_2_ID="${PKG_DATA_SCENES_ID}-2" PKG_DATA_SCENES_DESCRIPTION="$PKG_DATA_DESCRIPTION - scenes" PKG_DATA_SCENES_1_DESCRIPTION="$PKG_DATA_SCENES_DESCRIPTION - 1" PKG_DATA_SCENES_2_DESCRIPTION="$PKG_DATA_SCENES_DESCRIPTION - 2" PKG_DATA_CINEMATICS_ID="${PKG_DATA_ID}-cinematics" PKG_DATA_CINEMATICS_DESCRIPTION="$PKG_DATA_DESCRIPTION - cinematics" PKG_DATA_SETTING_ID="${PKG_DATA_ID}-setting" PKG_DATA_SETTING_DESCRIPTION="$PKG_DATA_DESCRIPTION - setting" PKG_DATA_UI_ID="${PKG_DATA_ID}-ui" PKG_DATA_UI_DESCRIPTION="$PKG_DATA_DESCRIPTION - ui" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build package packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-jade-empire.sh0000755000000000000000000001243414471751340014346 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Jade Empire ### script_version=20241229.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='jade-empire' GAME_NAME='Jade Empire' ARCHIVE_BASE_EN_1_NAME='setup_jade_empire_1.00_(15538).exe' ARCHIVE_BASE_EN_1_MD5='e68f17f59bde2254ab1e9b70c078e9f1' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_PART1_NAME='setup_jade_empire_1.00_(15538)-1.bin' ARCHIVE_BASE_EN_1_PART1_MD5='6470aa8dac5486d7c66336686e2e442d' ARCHIVE_BASE_EN_1_PART2_NAME='setup_jade_empire_1.00_(15538)-2.bin' ARCHIVE_BASE_EN_1_PART2_MD5='57f4931e55373a9c994b67d14f43dc1c' ARCHIVE_BASE_EN_1_SIZE='7454315' ARCHIVE_BASE_EN_1_VERSION='1.00-gog15538' ARCHIVE_BASE_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_PART2_NAME='setup_jade_empire_french_1.00_(15538)-2.bin' ARCHIVE_BASE_FR_1_PART2_MD5='428bf4eba51fde69fa6fe6fb05aadb96' ARCHIVE_BASE_FR_1_SIZE='7608886' ARCHIVE_BASE_FR_1_VERSION='1.00-gog15538' ARCHIVE_BASE_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_PART2_NAME='setup_jade_empire_2.0.0.4-2.bin' ARCHIVE_BASE_EN_0_PART2_MD5='94af70b645c525b7263258c91d95cd92' ARCHIVE_BASE_EN_0_PART3_NAME='setup_jade_empire_2.0.0.4-3.bin' ARCHIVE_BASE_EN_0_PART3_MD5='3efd05ca48fc9d2dfe79b2fab2456df0' ARCHIVE_BASE_EN_0_PART4_NAME='setup_jade_empire_2.0.0.4-4.bin' ARCHIVE_BASE_EN_0_PART4_MD5='a480e87364cc8ab2a519c1f09a2da2c9' ARCHIVE_BASE_EN_0_PART5_NAME='setup_jade_empire_2.0.0.4-5.bin' ARCHIVE_BASE_EN_0_PART5_MD5='081042ad8561b599add7b2f366cf3da8' ARCHIVE_BASE_EN_0_SIZE='7800000' ARCHIVE_BASE_EN_0_VERSION='1.0-gog2.0.0.4' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' binkw32.dll d3d9.dll ogg.dll vorbis.dll vorbisfile.dll jadeempire.exe jadeempireconfig.exe jadeempirelauncher.exe' CONTENT_GAME_L10N_FILES=' sound data/bips movies/attract.bik movies/c01_cutzu.bik movies/c04_princisfox.bik movies/c06_partycall.bik movies/cut_c3escape*.bik movies/j00_cut_open_c1.bik movies/j00_cut_open_c6.bik movies/j01_jiahand_01.bik movies/j04_cut_lotfin*.bik movies/j04_pop_*.bik movies/j06_recover_01.bik movies/j07_cut_drop01.bik movies/j07_cut_final06b.bik movies/j07_cut_final06.bik movies/j07_cut_final06c.bik movies/j07_cut_final06d.bik movies/j07_cut_final06e.bik movies/j07_cut_final06f.bik movies/j07_cut_final06g.bik movies/j08_cut_ending3.bik movies/j08_cut_final_01.bik movies/j08_cut_stone_01.bik movies/j08_ending3_*.bik movies/j08_final_01_*.bik movies/j08_stone_01_*.bik *.tlk' CONTENT_GAME_DATA_FILES=' data fonts movies override shaderpc *.key' CONTENT_DOC_L10N_RELATIVE_PATH='docs' ## FIXME: An explicit list of files should be set CONTENT_DOC_L10N_FILES=' *' CONTENT_DOC_DATA_FILES=' *.txt' USER_PERSISTENT_DIRECTORIES=' logs persistent save scratch' USER_PERSISTENT_FILES=' *.ini data/*.xml' APP_MAIN_EXE='jadeempire.exe' APP_CONFIG_EXE='jadeempireconfig.exe' APP_CONFIG_CAT='Settings' APP_CONFIG_ID="${GAME_ID}-config" APP_CONFIG_GAME="$GAME_NAME - Configuration" PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Automatically spawn game settings window on first launch ## Using desktop_field_exec here ensures that we get a path already escaped if required. settings_cmd=$(desktop_field_exec 'APP_CONFIG') APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Automatically spawn game settings window on first launch settings_file="JadeEmpire.ini" if [ ! -e "$settings_file" ]; then '"${settings_cmd}"' fi ' launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-jazz-jackrabbit-2.sh0000755000000000000000000002122014471751340015364 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Jazz Jackrabbit 2 ### script_version=20241123.3 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='jazz-jackrabbit-2' GAME_NAME='Jazz Jackrabbit 2' GAME_ID_JJ2PLUS="${GAME_ID}-jj2plus" GAME_NAME_JJ2PLUS="$GAME_NAME - JJ2+" GAME_ID_CHRISTMAS="${GAME_ID}-the-christmas-chronicles" GAME_NAME_CHRISTMAS="$GAME_NAME - The Christmas Chronicles" # Game archives ## Jazz Jackrabbit 2 (including The Secret Files) ARCHIVE_BASE_2_NAME='setup_jazz_jackrabbit_2_1.24hf_(16886).exe' ARCHIVE_BASE_2_MD5='25a730c0813eb006555e6bbaf9613487' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='66354' ARCHIVE_BASE_2_VERSION='1.24-gog16886' ARCHIVE_BASE_2_URL='https://www.gog.com/game/jazz_jackrabbit_2_collection' ARCHIVE_BASE_1_NAME='setup_jazz_jackrabbit_2_1.24hf_(16886).exe' ARCHIVE_BASE_1_MD5='45be80bad040ea821bc6096abe6f3196' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='66986' ARCHIVE_BASE_1_VERSION='1.24-gog16886' ARCHIVE_BASE_0_NAME='setup_jazz_jackrabbit_2_1.24hf_(16886).exe' ARCHIVE_BASE_0_MD5='48a48258ed60b24068cbbb2f110b049b' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='67000' ARCHIVE_BASE_0_VERSION='1.24-gog16886' ## Jazz Jackrabbit 2 (including The Secret Files) + JJ2+ expansion ARCHIVE_BASE_JJ2PLUS_1_NAME='setup_jazz_jackrabbit_2_1.24_jj2_(5.12)_(66703).exe' ARCHIVE_BASE_JJ2PLUS_1_MD5='e76181591367d1ad986a6dec22fa6f9f' ARCHIVE_BASE_JJ2PLUS_1_TYPE='innosetup' ARCHIVE_BASE_JJ2PLUS_1_SIZE='76618' ARCHIVE_BASE_JJ2PLUS_1_VERSION='1.24-gog66703' ARCHIVE_BASE_JJ2PLUS_1_URL='https://www.gog.com/game/jazz_jackrabbit_2_collection' 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' ## Jazz Jackrabbit 2 - The Christmas Chronicles ARCHIVE_BASE_CHRISTMAS_1_NAME='setup_jazz_jackrabbit_2_the_christmas_chronicles_1.2x_(16742).exe' ARCHIVE_BASE_CHRISTMAS_1_MD5='7ef514ecfdbbe321665b507b47f55fc5' ARCHIVE_BASE_CHRISTMAS_1_TYPE='innosetup' ARCHIVE_BASE_CHRISTMAS_1_SIZE='71308' ARCHIVE_BASE_CHRISTMAS_1_VERSION='1.2x-gog16742' ARCHIVE_BASE_CHRISTMAS_1_URL='https://www.gog.com/game/jazz_jackrabbit_2_collection' 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' ## Jazz² Resurrection (native engine) ARCHIVE_JAZZ2NATIVE_3_NAME='Jazz2_2.9.1_Linux.zip' ARCHIVE_JAZZ2NATIVE_3_MD5='7a0b286248e54ab652f4f0e437912961' ARCHIVE_JAZZ2NATIVE_3_SIZE='30115' ARCHIVE_JAZZ2NATIVE_3_VERSION='2.9.1' ARCHIVE_JAZZ2NATIVE_3_URL='http://deat.tk/jazz2/' ARCHIVE_JAZZ2NATIVE_2_NAME='Jazz2_2.7.0_Linux.zip' ARCHIVE_JAZZ2NATIVE_2_MD5='50fd07614c030c2e86498894f67cf203' ARCHIVE_JAZZ2NATIVE_2_SIZE='29747' ARCHIVE_JAZZ2NATIVE_2_VERSION='2.7.0' ARCHIVE_JAZZ2NATIVE_1_NAME='Jazz2_2.6.0_Linux.zip' ARCHIVE_JAZZ2NATIVE_1_MD5='ff2ff3acc2213f4133ca8138603feb67' ARCHIVE_JAZZ2NATIVE_1_SIZE='29553' ARCHIVE_JAZZ2NATIVE_1_VERSION='2.6.0' # Archives content ## Jazz Jackrabbit 2 CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_PATH_DEFAULT_CHRISTMAS_0='app' CONTENT_GAME_DATA_FILES=' html jcshelp tiles userlevels *.asc *.it *.j2? *.j2as *.mo3 *.mod *.mut *.pal *.s3m *.wav' CONTENT_DOC_DATA_FILES=' *.doc *.html *.pdf *.txt' ## Jazz² Resurrection CONTENT_GAME0_DATA_PATH='x64' CONTENT_GAME0_DATA_FILES=' Content' CONTENT_GAME_BIN_DEFAULT_PATH='x64' CONTENT_GAME_BIN_DEFAULT_FILES=' jazz2' CONTENT_GAME_BIN_SDL_PATH='x64' CONTENT_GAME_BIN_SDL_FILES=' jazz2_sdl2' APP_MAIN_EXE_BIN_DEFAULT='jazz2' APP_MAIN_EXE_BIN_SDL='jazz2_sdl2' APP_MAIN_ICON='jazz2.exe' PACKAGES_LIST=' PKG_BIN_DEFAULT PKG_BIN_SDL PKG_DATA' PKG_BIN_ID="${GAME_ID}-bin" PKG_BIN_ID_JJ2PLUS="${GAME_ID_JJ2PLUS}-bin" PKG_BIN_ID_CHRISTMAS="${GAME_ID_CHRISTMAS}-bin" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN_PROVIDES_JJ2PLUS=" $PKG_BIN_ID_JJ2PLUS" PKG_BIN_PROVIDES_CHRISTMAS=" $PKG_BIN_ID_CHRISTMAS" PKG_BIN_DEFAULT_ID="${PKG_BIN_ID}-default" PKG_BIN_DEFAULT_ID_JJ2PLUS="${PKG_BIN_ID_JJ2PLUS}-default" PKG_BIN_DEFAULT_ID_CHRISTMAS="${PKG_BIN_ID_CHRISTMAS}-default" PKG_BIN_DEFAULT_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_DEFAULT_PROVIDES_JJ2PLUS="$PKG_BIN_PROVIDES_JJ2PLUS" PKG_BIN_DEFAULT_PROVIDES_CHRISTMAS="$PKG_BIN_PROVIDES_CHRISTMAS" PKG_BIN_DEFAULT_ARCH='64' PKG_BIN_DEFAULT_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEFAULT_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libglfw.so.3 libm.so.6 libopenal.so.1 libOpenGL.so.0 libopenmpt.so.0 libstdc++.so.6 libvorbisfile.so.3 libz.so.1' ## Ensure smooth upgrades from packages generated with pre-20241123.3 game scripts PKG_BIN_DEFAULT_PROVIDES="${PKG_BIN_DEFAULT_PROVIDES:-} jazz-jackrabbit-2 jazz-jackrabbit-2-bin" PKG_BIN_DEFAULT_PROVIDES_CHRISTMAS="${PKG_BIN_DEFAULT_PROVIDES_CHRISTMAS:-} jazz-jackrabbit-2-the-christmas-chronicles jazz-jackrabbit-2-the-christmas-chronicles-bin" ### This one is not actually required, but prevents the JJ2+ package from conflicting with the regular one. PKG_BIN_DEFAULT_PROVIDES_JJ2PLUS="${PKG_BIN_DEFAULT_PROVIDES_JJ2PLUS:-} jazz-jackrabbit-2-jj2plus jazz-jackrabbit-2-jj2plus-bin" PKG_BIN_SDL_ID="${PKG_BIN_ID}-sdl" PKG_BIN_SDL_ID_JJ2PLUS="${PKG_BIN_ID_JJ2PLUS}-sdl" PKG_BIN_SDL_ID_CHRISTMAS="${PKG_BIN_ID_CHRISTMAS}-sdl" PKG_BIN_SDL_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_SDL_PROVIDES_JJ2PLUS="$PKG_BIN_PROVIDES_JJ2PLUS" PKG_BIN_SDL_PROVIDES_CHRISTMAS="$PKG_BIN_PROVIDES_CHRISTMAS" PKG_BIN_SDL_ARCH='64' PKG_BIN_SDL_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_SDL_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libm.so.6 libopenal.so.1 libOpenGL.so.0 libopenmpt.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libvorbisfile.so.3 libz.so.1' ## Ensure smooth upgrades from packages generated with pre-20241123.3 game scripts PKG_BIN_SDL_PROVIDES="${PKG_BIN_SDL_PROVIDES:-} jazz-jackrabbit-2 jazz-jackrabbit-2-bin" PKG_BIN_SDL_PROVIDES_CHRISTMAS="${PKG_BIN_SDL_PROVIDES_CHRISTMAS:-} jazz-jackrabbit-2-the-christmas-chronicles jazz-jackrabbit-2-the-christmas-chronicles-bin" ### This one is not actually required, but prevents the JJ2+ package from conflicting with the regular one. PKG_BIN_SDL_PROVIDES_JJ2PLUS="${PKG_BIN_SDL_PROVIDES_JJ2PLUS:-} jazz-jackrabbit-2-jj2plus jazz-jackrabbit-2-jj2plus-bin" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_JJ2PLUS="${GAME_ID_JJ2PLUS}-data" PKG_DATA_ID_CHRISTMAS="${GAME_ID_CHRISTMAS}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Check for the presence of required extra archives archive_initialize_required \ 'ARCHIVE_JAZZ2NATIVE' \ 'ARCHIVE_JAZZ2NATIVE_3' \ 'ARCHIVE_JAZZ2NATIVE_2' \ 'ARCHIVE_JAZZ2NATIVE_1' installer_release=$(package_version | cut --delimiter='-' --fields=2) ## TODO: The following test could be avoided if the library did set ARCHIVE_xxx_VERSION through archive_initialize_required ## cf. https://forge.dotslashplay.it/play.it/play.it/-/issues/550 case "$(archive_name 'ARCHIVE_JAZZ2NATIVE')" in ("$(archive_name 'ARCHIVE_JAZZ2NATIVE_3')") export "$(current_archive)_VERSION=${ARCHIVE_JAZZ2NATIVE_3_VERSION}-${installer_release}" ;; ("$(archive_name 'ARCHIVE_JAZZ2NATIVE_2')") export "$(current_archive)_VERSION=${ARCHIVE_JAZZ2NATIVE_2_VERSION}-${installer_release}" ;; ("$(archive_name 'ARCHIVE_JAZZ2NATIVE_1')") export "$(current_archive)_VERSION=${ARCHIVE_JAZZ2NATIVE_1_VERSION}-${installer_release}" ;; esac # Extract game data archive_extraction_default archive_extraction 'ARCHIVE_JAZZ2NATIVE' # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion 'GAME_DATA' 'PKG_DATA' "$(path_game_data)/Source" content_inclusion_default # Write launchers launchers_generation 'PKG_BIN_DEFAULT' launchers_generation 'PKG_BIN_SDL' # Build packages packages_generation printf '\n' printf 'Default binaries:' print_instructions 'PKG_BIN_DEFAULT' 'PKG_DATA' printf 'SDL build:' print_instructions 'PKG_BIN_SDL' 'PKG_DATA' # Clean up working_directory_cleanup exit 0 games/play-kathy-rain.sh0000755000000000000000000000410014471751340014222 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Kathy Rain ### script_version=20241111.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='kathy-rain' GAME_NAME='Kathy Rain' ARCHIVE_BASE_0_NAME='kathy_rain_director_s_cut_v_1_0_3_5225_53868.sh' ARCHIVE_BASE_0_MD5='0bcbe5aa3508431c685b8ecd1617d560' ARCHIVE_BASE_0_SIZE='842486' ARCHIVE_BASE_0_VERSION='1.0.3.5225-gog53868' ARCHIVE_BASE_0_URL='https://www.gog.com/game/kathy_rain_directors_cut' UNITY3D_NAME='KathyRainDirectorsCut' CONTENT_PATH_DEFAULT='data/noarch/game' ## This game use a non-standard binary name CONTENT_GAME0_BIN_FILES=" ${UNITY3D_NAME}.x64" APP_MAIN_EXE="${UNITY3D_NAME}.x64" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Prevent the inclusion of the shipped Steam library rm --recursive "$(unity3d_name)_Data/Plugins" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-kingdom-rush-series.sh0000755000000000000000000000743514471751340016070 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Kingdom Rush series: # - Kingdom Rush # - Kingdom Rush: Frontiers # - Kingdom Rush: Origins ### script_version=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_ORIGINAL='kingdom-rush' GAME_NAME_ORIGINAL='Kingdom Rush' GAME_ID_FRONTIERS='kingdom-rush-frontiers' GAME_NAME_FRONTIERS='Kingdom Rush: Frontiers' GAME_ID_ORIGINS='kingdom-rush-origins' GAME_NAME_ORIGINS='Kingdom Rush: Origins' # Archives ## Kingdom Rush (original game) ARCHIVE_BASE_ORIGINAL_2_NAME='kingdom_rush_5_6_12_52189.sh' ARCHIVE_BASE_ORIGINAL_2_MD5='ca0bd3ede3d5768d51b66c366d4c68cb' ARCHIVE_BASE_ORIGINAL_2_SIZE='378545' ARCHIVE_BASE_ORIGINAL_2_VERSION='5.6.12-gog52189' ARCHIVE_BASE_ORIGINAL_2_URL='https://www.gog.com/game/kingdom_rush' ARCHIVE_BASE_ORIGINAL_1_NAME='kingdom_rush_4_2_33_43930.sh' ARCHIVE_BASE_ORIGINAL_1_MD5='1423a27078042c5fc9d7ee45d06a5744' ARCHIVE_BASE_ORIGINAL_1_SIZE='380000' ARCHIVE_BASE_ORIGINAL_1_VERSION='4.2.33-gog43930' ARCHIVE_BASE_ORIGINAL_0_NAME='kingdom_rush_4_2_15_40260.sh' ARCHIVE_BASE_ORIGINAL_0_MD5='025031489b81493e3816e077ab62214a' ARCHIVE_BASE_ORIGINAL_0_SIZE='380000' ARCHIVE_BASE_ORIGINAL_0_VERSION='4.2.15-gog40260' ## Kingdom Rush: Frontiers ARCHIVE_BASE_FRONTIERS_0_NAME='kingdom_rush_frontiers_4_2_33_43930.sh' ARCHIVE_BASE_FRONTIERS_0_MD5='6e00968ec07cec1bbafd8c43ed4416cb' ARCHIVE_BASE_FRONTIERS_0_SIZE='449652' ARCHIVE_BASE_FRONTIERS_0_VERSION='4.2.33-gog43930' ARCHIVE_BASE_FRONTIERS_0_URL='https://www.gog.com/game/kingdom_rush_frontiers' ## Kingdom Rush: Origins ARCHIVE_BASE_ORIGINS_0_NAME='kingdom_rush_origins_4_2_15_40260.sh' ARCHIVE_BASE_ORIGINS_0_MD5='864fb8a387081304df1d0674c40d718e' ARCHIVE_BASE_ORIGINS_0_SIZE='497827' ARCHIVE_BASE_ORIGINS_0_VERSION='4.2.15-gog40260' ARCHIVE_BASE_ORIGINS_0_URL='https://www.gog.com/game/kingdom_rush_origins' CONTENT_PATH_DEFAULT='data/noarch/game' ## System-provided love2d runtime can not be used, it crashes on launch with the following error: ## Error: [love "boot.lua"]:276: Syntax error: conf.lua: cannot load incompatible bytecode CONTENT_LIBS_MAIN_FILES=' liblove.so.0' ## System-provided libluajit-5.1.so.2 can not be used, as it triggers a crash on launch. CONTENT_LIBS0_MAIN_FILES=' libluajit-5.1.so.2' CONTENT_GAME_MAIN_FILES=' icon.png Kingdom Rush Kingdom Rush Frontiers Kingdom Rush Origins' CONTENT_DOC_MAIN_PATH=' license-kr-desktop.txt' APP_MAIN_EXE_ORIGINAL='Kingdom Rush' APP_MAIN_EXE_FRONTIERS='Kingdom Rush Frontiers' APP_MAIN_EXE_ORIGINS='Kingdom Rush Origins' APP_MAIN_ICON='icon.png' PKG_MAIN_ARCH='64' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libfreetype.so.6 libgcc_s.so.1 libmodplug.so.1 libmpg123.so.0 libm.so.6 libogg.so.0 libopenal.so.1 libphysfs.so.1 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libtheoradec.so.1 libvorbisfile.so.3 libvorbis.so.0 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-little-inferno-expansions.sh0000755000000000000000000000334014471751340017300 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=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='little-inferno' GAME_NAME='Little Inferno' EXPANSION_ID_HOHOHOLIDAY='ho-ho-holiday' EXPANSION_NAME_HOHOHOLIDAY='Ho Ho Holiday' # Archives ## Ho Ho Holiday ARCHIVE_BASE_HOHOHOLIDAY_0_NAME='LittleInfernoHoHoHoliday-Linux-2022-12-07.sh' ARCHIVE_BASE_HOHOHOLIDAY_0_MD5='7124105953b1a899f239a0fdbd492458' ARCHIVE_BASE_HOHOHOLIDAY_0_SIZE='381' ARCHIVE_BASE_HOHOHOLIDAY_0_VERSION='1.0-humble.2022.12.07' ARCHIVE_BASE_HOHOHOLIDAY_0_URL='http://tomorrowcorporation.com/littleinferno#hohoholiday' CONTENT_PATH_DEFAULT='data/noarch' CONTENT_GAME_MAIN_FILES=' .tcgame-4097.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-little-inferno.sh0000755000000000000000000001126014471751340015113 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=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='little-inferno' GAME_NAME='Little Inferno' ARCHIVE_BASE_HUMBLE_0_NAME='LittleInferno_Linux_v2.0.3.sh' ARCHIVE_BASE_HUMBLE_0_MD5='2d104de7966405f905d36bfbc7722808' ARCHIVE_BASE_HUMBLE_0_SIZE='274737' ARCHIVE_BASE_HUMBLE_0_VERSION='2.0.3-humble.2022.12.08' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/little-inferno' ARCHIVE_BASE_32BIT_HUMBLE_0_NAME='little-inferno_0_20130509-0ubuntu1_i386.deb' ARCHIVE_BASE_32BIT_HUMBLE_0_MD5='cd7eac96e33de3089c665915b1a7239c' ARCHIVE_BASE_32BIT_HUMBLE_0_SIZE='200000' ARCHIVE_BASE_32BIT_HUMBLE_0_VERSION='1.3.20130509-humble1' ARCHIVE_BASE_32BIT_GOG_0_NAME='gog_little_inferno_2.0.0.2.sh' ARCHIVE_BASE_32BIT_GOG_0_MD5='29375d30d03f12db44d09a1c32398d33' ARCHIVE_BASE_32BIT_GOG_0_SIZE='200000' ARCHIVE_BASE_32BIT_GOG_0_VERSION='1.3.20130509-gog2.0.0.2' ARCHIVE_BASE_32BIT_GOG_0_URL='https://www.gog.com/game/little_inferno' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_PATH_DEFAULT_32BIT_HUMBLE='opt/little-inferno' CONTENT_PATH_DEFAULT_32BIT_GOG='data/noarch/game' CONTENT_GAME_BIN64_RELATIVE_PATH_HUMBLE='x86_64' CONTENT_GAME_BIN64_FILES=' LittleInferno.bin.x86_64' CONTENT_GAME_BIN32_RELATIVE_PATH_HUMBLE='x86' CONTENT_GAME_BIN32_FILES=' LittleInferno.bin.x86' CONTENT_GAME_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_GAME_DATA_FILES=' shaders .tc-edition icon.png *.pak' CONTENT_DOC_DATA_RELATIVE_PATH_HUMBLE='noarch' 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_RELATIVE_PATH_32BIT='lib' CONTENT_LIBS_BIN32_FILES_32BIT=' libvorbis.so.0' APP_MAIN_EXE_BIN64='LittleInferno.bin.x86_64' APP_MAIN_EXE_BIN32='LittleInferno.bin.x86' APP_MAIN_ICON='noarch/icon.png' APP_MAIN_ICONS_LIST_32BIT_HUMBLE='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_32BIT_GOG='APP_MAIN_ICON_GOG' APP_MAIN_ICON_GOG='../support/icon.png' PACKAGES_LIST=' PKG_BIN32 PKG_BIN64 PKG_DATA' PACKAGES_LIST_32BIT=' PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6' PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES_32BIT=' 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_32BIT="${PKG_BIN32_DEPENDENCIES_LIBRARIES_32BIT:-} libc.so.6 libm.so.6 libogg.so.0" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers case "$(current_archive)" in ('ARCHIVE_BASE_32BIT_'*) ## Old 1.x builds provide a 32-bit binary only. launchers_generation 'PKG_BIN32' ;; (*) launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' ;; esac # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-loop-hero.sh0000755000000000000000000000750014471751340014066 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Loop Hero ### script_version=20250103.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='loop-hero' GAME_NAME='Loop Hero' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" # Archives ## Full game (gog.com) ARCHIVE_BASE_2_NAME='loop_hero_1_1054_55873.sh' ARCHIVE_BASE_2_MD5='28197c34cb00548770b6878f95f69b89' ARCHIVE_BASE_2_SIZE='220000' ARCHIVE_BASE_2_VERSION='1.1054-gog55873' ARCHIVE_BASE_2_URL='https://www.gog.com/game/loop_hero' ARCHIVE_BASE_1_NAME='loop_hero_1_105_50560.sh' ARCHIVE_BASE_1_MD5='7ce0680d3dc6d945b0db0e3719addb21' ARCHIVE_BASE_1_SIZE='160000' ARCHIVE_BASE_1_VERSION='1.105-gog50560' ARCHIVE_BASE_0_NAME='loop_hero_1_102_48813.sh' ARCHIVE_BASE_0_MD5='fc860d85d59d02360d2d6aeb57cc8538' ARCHIVE_BASE_0_SIZE='160000' ARCHIVE_BASE_0_VERSION='1.102-gog48813' ## Demo (itch.io) ARCHIVE_BASE_DEMO_0_NAME='LooPatHerO_demo_linux.zip' ARCHIVE_BASE_DEMO_0_MD5='8698b73828300da7a519b026cd85d4aa' ARCHIVE_BASE_DEMO_0_SIZE='23000' ARCHIVE_BASE_DEMO_0_VERSION='1.0-itch1' ARCHIVE_BASE_DEMO_0_URL='https://fourquarters.itch.io/loopathero-demo' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_PATH_DEFAULT_DEMO='.' CONTENT_GAME_BIN_FILES=' Loop_Hero' CONTENT_GAME_BIN_FILES_DEMO=' LooPatHerO' CONTENT_GAME_DATA_FILES=' assets/*.dat assets/*.ini assets/*.png assets/*.unx assets/fonts assets/local' APP_MAIN_EXE='Loop_Hero' ## The demo crashes on launch. ## ## Thread 1 "LooPatHerO" received signal SIGFPE, Arithmetic exception. ## ## gdb trace: ## #0 0x000000000064bf80 in ?? () ## #1 0x000000000064be69 in ?? () ## #2 0x000000000064b80f in ?? () ## #3 0x000000000072db2e in ?? () ## #4 0x0000000000744415 in ?? () ## #5 0x00000000005ad6da in ?? () ## #6 0x00007ffff6efcc8a in __libc_start_call_main (main=main@entry=0x5acfc0, argc=argc@entry=1, argv=argv@entry=0x7fffffffde38) at ../sysdeps/nptl/libc_start_call_main.h:58 ## #7 0x00007ffff6efcd45 in __libc_start_main_impl (main=0x5acfc0, argc=1, argv=0x7fffffffde38, init=, fini=, rtld_fini=, stack_end=0x7fffffffde28) at ../csu/libc-start.c:360 ## #8 0x00000000004098ea in ?? () ## ## cf. https://forge.dotslashplay.it/vv221/games/-/issues/32 APP_MAIN_EXE_DEMO='LooPatHerO' APP_MAIN_ICON='assets/icon.png' ## Work around broken support for non-US locales APP_MAIN_PRERUN=' # Work around broken support for non-US locales export LC_NUMERIC=C ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl.so.4 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libssl.so.1.1 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-mask-of-the-rose-expansions.sh0000755000000000000000000000532014471751340017426 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=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='mask-of-the-rose' GAME_NAME='Mask of the Rose' EXPANSION_ID_CROW='murder-crow' EXPANSION_NAME_CROW='The Murder Crow' # Archives ## The Murder Crow ARCHIVE_BASE_CROW_5_NAME='mask_of_the_rose_the_murder_crow_1_6_1043_linux_70837.sh' ARCHIVE_BASE_CROW_5_MD5='1e492aad8f1b246055c485c924fb607b' ARCHIVE_BASE_CROW_5_SIZE='999' ARCHIVE_BASE_CROW_5_VERSION='1.6.1043-gog70837' ARCHIVE_BASE_CROW_4_NAME='mask_of_the_rose_the_murder_crow_1_6_1024_linux_70649.sh' ARCHIVE_BASE_CROW_4_MD5='f6b9cd36e7c57a775170d6953eeff7e2' ARCHIVE_BASE_CROW_4_SIZE='999' ARCHIVE_BASE_CROW_4_VERSION='1.6.1024-gog70649' ARCHIVE_BASE_CROW_3_NAME='mask_of_the_rose_the_murder_crow_1_5_943_linux_68850.sh' ARCHIVE_BASE_CROW_3_MD5='d528ab03cbfb76463b5c49774de1be0e' ARCHIVE_BASE_CROW_3_SIZE='1300' ARCHIVE_BASE_CROW_3_VERSION='1.5.943-gog68850' ARCHIVE_BASE_CROW_2_NAME='mask_of_the_rose_the_murder_crow_1_4_835_linux_66472.sh' ARCHIVE_BASE_CROW_2_MD5='1141e6eb61e618486cfe01d78bc2db90' ARCHIVE_BASE_CROW_2_SIZE='1300' ARCHIVE_BASE_CROW_2_VERSION='1.4.835-gog66472' ARCHIVE_BASE_CROW_1_NAME='mask_of_the_rose_the_murder_crow_1_3_765_linux_65488.sh' ARCHIVE_BASE_CROW_1_MD5='93ea92a56956663cd42b66ea9b04820a' ARCHIVE_BASE_CROW_1_SIZE='1300' ARCHIVE_BASE_CROW_1_VERSION='1.3.765-gog65488' ARCHIVE_BASE_CROW_0_NAME='mask_of_the_rose_the_murder_crow_1_2_666_linux_65143.sh' ARCHIVE_BASE_CROW_0_MD5='43b3b6e5025d8b2521f4d72c337aff3c' ARCHIVE_BASE_CROW_0_SIZE='1300' ARCHIVE_BASE_CROW_0_VERSION='1.2.666-gog65143' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' goggame-1879903382.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-mask-of-the-rose.sh0000755000000000000000000000641514471751340015247 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=20241141.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='mask-of-the-rose' GAME_NAME='Mask of the Rose' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" # Archives ## Full game ARCHIVE_BASE_5_NAME='mask_of_the_rose_1_6_1043_linux_70837.sh' ARCHIVE_BASE_5_MD5='f7fc5f6adb0621cc0c3560658de3f372' ARCHIVE_BASE_5_SIZE='2674740' ARCHIVE_BASE_5_VERSION='1.6.1043-gog70837' ARCHIVE_BASE_5_URL='https://www.gog.com/game/mask_of_the_rose' ARCHIVE_BASE_4_NAME='mask_of_the_rose_1_6_1024_linux_70649.sh' ARCHIVE_BASE_4_MD5='6342815fe4de7b9e2998d6563e27ec6f' ARCHIVE_BASE_4_SIZE='2674723' ARCHIVE_BASE_4_VERSION='1.6.1024-gog70649' ARCHIVE_BASE_3_NAME='mask_of_the_rose_1_5_943_linux_68850.sh' ARCHIVE_BASE_3_MD5='950ad3b9a759c4c21fd31b155cb85f2c' ARCHIVE_BASE_3_SIZE='2676548' ARCHIVE_BASE_3_VERSION='1.5.943-gog68850' ARCHIVE_BASE_2_NAME='mask_of_the_rose_1_4_835_linux_66472.sh' ARCHIVE_BASE_2_MD5='2b132223cfe6558d100b1edc410be00a' ARCHIVE_BASE_2_SIZE='2700000' ARCHIVE_BASE_2_VERSION='1.4.835-gog66472' ARCHIVE_BASE_1_NAME='mask_of_the_rose_1_3_765_linux_65488.sh' ARCHIVE_BASE_1_MD5='d793ec177ee72e9ea04c025775896842' ARCHIVE_BASE_1_SIZE='2700000' ARCHIVE_BASE_1_VERSION='1.3.765-gog65488' ARCHIVE_BASE_0_NAME='mask_of_the_rose_1_2_666_linux_65143.sh' ARCHIVE_BASE_0_MD5='5c9b396ead2343237ff588f9ad784cff' ARCHIVE_BASE_0_SIZE='2700000' ARCHIVE_BASE_0_VERSION='1.2.666-gog65143' ## Demo ## This game demo is no longer available from GOG. ARCHIVE_BASE_DEMO_0_NAME='mask_of_the_rose_demo_0_1_94_56552.sh' ARCHIVE_BASE_DEMO_0_MD5='81da92a188178423523e0d1f1251e094' ARCHIVE_BASE_DEMO_0_SIZE='1500000' ARCHIVE_BASE_DEMO_0_VERSION='0.1.94-gog56552' UNITY3D_NAME='Mask of the Rose' UNITY3D_NAME_DEMO='Mask of the Rose Demo' ## TODO: Check if this library is actually required UNITY3D_PLUGINS=' lib_burst_generated.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-monkey-island-3.sh0000755000000000000000000001106014471751340015070 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=20241121.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='monkey-island-3' GAME_NAME='Monkey Island 3: The Curse of Monkey Island' ARCHIVE_BASE_EN_2_NAME='setup_the_curse_of_monkey_islandtm_1.0l_(20627).exe' ARCHIVE_BASE_EN_2_MD5='42de5e8ca7f26eb8350db318430d24a1' ARCHIVE_BASE_EN_2_TYPE='innosetup' ARCHIVE_BASE_EN_2_PART1_NAME='setup_the_curse_of_monkey_islandtm_1.0l_(20627)-1.bin' ARCHIVE_BASE_EN_2_PART1_MD5='1f89d0a37bd2e82361b11cff176daf90' ARCHIVE_BASE_EN_2_SIZE='1224692' ARCHIVE_BASE_EN_2_VERSION='1.0l-gog20627' ARCHIVE_BASE_EN_2_URL='https://www.gog.com/game/the_curse_of_monkey_island' ARCHIVE_BASE_FR_2_NAME='setup_the_curse_of_monkey_islandtm_1.0l_(french)_(20627).exe' ARCHIVE_BASE_FR_2_MD5='2999c1f94902ce2093347f4f53adb14f' ARCHIVE_BASE_FR_2_TYPE='innosetup' ARCHIVE_BASE_FR_2_PART1_NAME='setup_the_curse_of_monkey_islandtm_1.0l_(french)_(20627)-1.bin' ARCHIVE_BASE_FR_2_PART1_MD5='9431d663d5264b41e03118cdad24f217' ARCHIVE_BASE_FR_2_SIZE='1238398' ARCHIVE_BASE_FR_2_VERSION='1.0l-gog20627' ARCHIVE_BASE_FR_2_URL='https://www.gog.com/game/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_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_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' APP_MAIN_ICON_EN_0='goggame-1528148981.ico' PACKAGES_LIST=' PKG_L10N PKG_MAIN' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' # Work around "insufficient image data" error with convert from imagemagick REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} 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 # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data ## Work around "insufficient image data" error with convert from imagemagick ## TODO: Check if it is still required with current imagemagick icon_extract_png_from_ico() { local icon destination icon="$1" destination="$2" local icon_file icon_file=$(icon_full_path "$icon") icotool --extract --output="$destination" "$icon_file" 2>/dev/null } content_inclusion_icons 'PKG_MAIN' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-monkey-island-4.sh0000755000000000000000000001443214471751340015077 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=20241021.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='monkey-island-4' GAME_NAME='Monkey Island 4: Escape from Monkey Island' # Archives ## Monkey Island 4 (game installer) ARCHIVE_BASE_EN_0_NAME='setup_escape_from_monkey_islandtm_1.1_(20987).exe' ARCHIVE_BASE_EN_0_MD5='54978965b60294d5c1639b71c0a8159a' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_escape_from_monkey_islandtm_1.1_(20987)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='21bc4e362f73b76e6808649167ee9d20' ARCHIVE_BASE_EN_0_SIZE='1300000' ARCHIVE_BASE_EN_0_VERSION='1.1-gog20987' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/escape_from_monkey_island' ARCHIVE_BASE_FR_0_NAME='setup_escape_from_monkey_islandtm_1.1_(french)_(20987).exe' ARCHIVE_BASE_FR_0_MD5='5ca039d42d53ad7fe206b289abe15deb' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_PART1_NAME='setup_escape_from_monkey_islandtm_1.1_(french)_(20987)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='c5bf233f09cca2a8e33d78d25cf58329' ARCHIVE_BASE_FR_0_SIZE='1300000' ARCHIVE_BASE_FR_0_VERSION='1.1-gog20987' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/escape_from_monkey_island' ## ScummVM patches ARCHIVE_REQUIRED_PATCH_EN_NAME='MonkeyUpdate.exe' ARCHIVE_REQUIRED_PATCH_EN_MD5='7c7dbd2349d49e382a2dea40bed448e0' ARCHIVE_REQUIRED_PATCH_EN_URL='https://downloads.scummvm.org/frs/extras/patches/' ARCHIVE_REQUIRED_PATCH_FR_NAME='MonkeyUpdate_FRA.exe' ARCHIVE_REQUIRED_PATCH_FR_MD5='cc5ff3bb8f78a0eb4b8e0feb9cdd2e87' ARCHIVE_REQUIRED_PATCH_FR_URL='https://downloads.scummvm.org/frs/extras/patches/' # Archives content CONTENT_PATH_DEFAULT='.' CONTENT_GAME_L10N_FILES=' movies art???.m4b i9n.m4b lip.m4b voice???.m4b' CONTENT_GAME_DATA_FILES=' textures local.m4b patch.m4b sfx.m4b' CONTENT_DOC_L10N_FILES=' *.pdf *.txt' ## WINE CONTENT_GAME_BIN_WINE_FILES=' *.asi *.dll *.exe *.flt' CONTENT_GAME0_BIN_WINE_PATH='__support/save' CONTENT_GAME0_BIN_WINE_FILES=' saves' # Launchers ## ScummVM APP_SCUMMVM_SCUMMID='grim:monkey4' APP_SCUMMVM_ICON='monkey4.exe' ## WINE USER_PERSISTENT_DIRECTORIES=' saves' WINE_VIRTUAL_DESKTOP='auto' APP_WINE_EXE='monkey4.exe' # Packages PACKAGES_LIST=' PKG_BIN_SCUMMVM PKG_BIN_WINE PKG_L10N PKG_DATA' PKG_BIN_BASE_ID="$GAME_ID" PKG_BIN_PROVIDES=" $PKG_BIN_BASE_ID" ## A dependency on the language-specific variant of the localization package is set, ## not on the common name provided by both variants of this package. PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' ## ScummVM PKG_BIN_SCUMMVM_BASE_ID="${PKG_BIN_BASE_ID}-scummvm" PKG_BIN_SCUMMVM_ID_EN="${PKG_BIN_SCUMMVM_BASE_ID}-en" PKG_BIN_SCUMMVM_ID_FR="${PKG_BIN_SCUMMVM_BASE_ID}-fr" PKG_BIN_SCUMMVM_PROVIDES="$PKG_BIN_BASE_PROVIDES" PKG_BIN_SCUMMVM_DESCRIPTION_EN='English version' PKG_BIN_SCUMMVM_DESCRIPTION_FR='French version' PKG_BIN_SCUMMVM_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" ## WINE PKG_BIN_WINE_ARCH='32' PKG_BIN_WINE_BASE_ID="${PKG_BIN_BASE_ID}-wine" PKG_BIN_WINE_ID_EN="${PKG_BIN_WINE_BASE_ID}-en" PKG_BIN_WINE_ID_FR="${PKG_BIN_WINE_BASE_ID}-fr" PKG_BIN_WINE_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_WINE_DESCRIPTION_EN='English version' PKG_BIN_WINE_DESCRIPTION_FR='French version' PKG_BIN_WINE_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" # WINE - Register install path install_path="C:\\\\${GAME_ID}" registry_dump_installpath_file='registry-dumps/install-path.reg' registry_dump_installpath_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\LucasArts Entertainment Company LLC\Monkey4\Retail] "Install path"="'"${install_path}"'"' CONTENT_GAME_BIN_WINE_FILES="${CONTENT_GAME_BIN_WINE_FILES:-} $registry_dump_installpath_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_installpath_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Check for the presence of required extra archives case "$(current_archive)" in ('ARCHIVE_BASE_EN_'*) archive_initialize_required \ 'ARCHIVE_PATCH' \ 'ARCHIVE_REQUIRED_PATCH_EN' ;; ('ARCHIVE_BASE_FR_'*) archive_initialize_required \ 'ARCHIVE_PATCH' \ 'ARCHIVE_REQUIRED_PATCH_FR' ;; esac # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Delete unwanted files. ## TODO: Check if this can be dropped in favour of a more explicit list of files to include. rm --force --recursive \ '__redist' \ 'commonappdata' \ 'install' \ 'tmp' ## WINE - Register install path. mkdir --parents "$(dirname "$registry_dump_installpath_file")" printf '%s' "$registry_dump_installpath_content" | \ iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_installpath_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## ScummVM - Include required patch. install -D --mode=644 \ "$(archive_path 'ARCHIVE_PATCH')" \ "$(package_path 'PKG_BIN_SCUMMVM')$(path_game_data)/$(archive_name 'ARCHIVE_PATCH')" # Write launchers launchers_generation 'PKG_BIN_SCUMMVM' 'APP_SCUMMVM' launchers_generation 'PKG_BIN_WINE' 'APP_WINE' # Build packages packages_generation printf '\n' printf 'ScummVM:' print_instructions 'PKG_DATA' 'PKG_L10N' 'PKG_BIN_SCUMMVM' printf 'WINE:' print_instructions 'PKG_DATA' 'PKG_L10N' 'PKG_BIN_WINE' # Clean up working_directory_cleanup exit 0 games/play-monkey-island-special-edition.sh0000755000000000000000000001020114471751340017773 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=20241121.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_1_NAME='setup_the_secret_of_monkey_islandtm_special_edition_1.0_(18587).exe' ARCHIVE_BASE_MONKEY1_1_MD5='dc463e4d640e417df53684afb9921dd1' ARCHIVE_BASE_MONKEY1_1_TYPE='innosetup' ARCHIVE_BASE_MONKEY1_1_SIZE='2594611' ARCHIVE_BASE_MONKEY1_1_VERSION='1.0-gog18587' ARCHIVE_BASE_MONKEY1_1_URL='https://www.gog.com/game/the_secret_of_monkey_island_special_edition' ARCHIVE_BASE_MONKEY1_0_NAME='setup_monkey_island_1_se_1.0_(18587).exe' ARCHIVE_BASE_MONKEY1_0_MD5='ff2eaa21af8f59371583b007b439b873' ARCHIVE_BASE_MONKEY1_0_TYPE='innosetup' 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' ## 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 ## Monkey Island 1 CONTENT_PATH_DEFAULT_MONKEY1='.' CONTENT_PATH_DEFAULT_MONKEY1_0='app' 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_PATH_DEFAULT_MONKEY2='app' 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 ## TODO: Check if it is still required with current WINE WINE_WINETRICKS_VERBS='d3dcompiler_47' APP_MAIN_EXE_MONKEY1='mise.exe' APP_MAIN_EXE_MONKEY2='monkey2.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' audioconvert audio/x-wma, wmaversion=(int)1' PKG_DATA_ID_MONKEY1="${GAME_ID_MONKEY1}-data" PKG_DATA_ID_MONKEY2="${GAME_ID_MONKEY2}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-myst-scummvm.sh0000755000000000000000000002502114471751340014641 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2020 Fabien Givors set -o errexit ### # Myst series: # - Myst (Masterpiece Edition) # - Riven: The Sequel to Myst # - Myst 3: Exile ### script_version=20250114.4 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_MYST1='myst-1' GAME_NAME_MYST1='Myst' GAME_ID_RIVEN='myst-2-riven' GAME_NAME_RIVEN='Riven: The Sequel to Myst' GAME_ID_EXILE='myst-3-exile' GAME_NAME_EXILE='Myst Ⅲ: Exile' # Archives ## Myst (Masterpiece Edition) ARCHIVE_BASE_MYST1_2_NAME='setup_myst_masterpiece_edition_1.0_svm_update_4_(22597).exe' ARCHIVE_BASE_MYST1_2_MD5='cee43afef96ec781a18c578a1cc8bdcc' ARCHIVE_BASE_MYST1_2_TYPE='innosetup' ARCHIVE_BASE_MYST1_2_PART1_NAME='setup_myst_masterpiece_edition_1.0_svm_update_4_(22597)-1.bin' ARCHIVE_BASE_MYST1_2_PART1_MD5='1417de6ceaaaac67064529c3afab6792' ARCHIVE_BASE_MYST1_2_SIZE='1409531' ARCHIVE_BASE_MYST1_2_VERSION='1.0.4-gog22597' ARCHIVE_BASE_MYST1_2_URL='https://www.gog.com/game/myst_masterpiece_edition' ARCHIVE_BASE_MYST1_1_NAME='setup_myst_masterpiece_edition_1.0_svm_update_4_(22598).exe' ARCHIVE_BASE_MYST1_1_MD5='e3c62eeb19abd2c9a947aee8300e995d' ARCHIVE_BASE_MYST1_1_TYPE='innosetup' ARCHIVE_BASE_MYST1_1_PART1_NAME='setup_myst_masterpiece_edition_1.0_svm_update_4_(22598)-1.bin' ARCHIVE_BASE_MYST1_1_PART1_MD5='4b84a68ec57e55bcc9b522c6333c669c' ARCHIVE_BASE_MYST1_1_SIZE='1500000' ARCHIVE_BASE_MYST1_1_VERSION='1.0.4-gog22598' ## Riven: The Sequel to Myst ARCHIVE_BASE_RIVEN_2_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_no_launcher_(55114).exe' ARCHIVE_BASE_RIVEN_2_MD5='e3bb9372a059a7284b0dc02f39aba929' ARCHIVE_BASE_RIVEN_2_TYPE='innosetup' ARCHIVE_BASE_RIVEN_2_PART1_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_no_launcher_(55114)-1.bin' ARCHIVE_BASE_RIVEN_2_PART1_MD5='99921a49f1834af00e5f6dda7227d456' ARCHIVE_BASE_RIVEN_2_PART2_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_no_launcher_(55114)-2.bin' ARCHIVE_BASE_RIVEN_2_PART2_MD5='2db5912fc46865a8992cb32417674fca' ARCHIVE_BASE_RIVEN_2_SIZE='6946550' ARCHIVE_BASE_RIVEN_2_VERSION='1.2-gog55114' ARCHIVE_BASE_RIVEN_2_URL='https://www.gog.com/game/riven_the_sequel_to_myst' ARCHIVE_BASE_RIVEN_1_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_no_launcher_(55114).exe' ARCHIVE_BASE_RIVEN_1_MD5='879b8aaa724f4f422661634186ee2534' ARCHIVE_BASE_RIVEN_1_TYPE='innosetup' ARCHIVE_BASE_RIVEN_1_PART1_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_no_launcher_(55114)-1.bin' ARCHIVE_BASE_RIVEN_1_PART1_MD5='dd91f1256d819d6f26d9d0bcaa81548f' ARCHIVE_BASE_RIVEN_1_PART2_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_no_launcher_(55114)-2.bin' ARCHIVE_BASE_RIVEN_1_PART2_MD5='2d03d82b784666472e1a3f436ed20924' ARCHIVE_BASE_RIVEN_1_SIZE='6947081' ARCHIVE_BASE_RIVEN_1_VERSION='1.2-gog55114' ARCHIVE_BASE_RIVEN_0_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_update3_(22594).exe' ARCHIVE_BASE_RIVEN_0_MD5='0520fac1f2ae966aa5c490850b51930f' ARCHIVE_BASE_RIVEN_0_TYPE='innosetup' ARCHIVE_BASE_RIVEN_0_PART1_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_update3_(22594)-1.bin' ARCHIVE_BASE_RIVEN_0_PART1_MD5='4ee339ad50203020e717a78ff95bb590' ARCHIVE_BASE_RIVEN_0_PART2_NAME='setup_riven_-_the_sequel_to_myst_1.2_svm_update3_(22594)-2.bin' ARCHIVE_BASE_RIVEN_0_PART2_MD5='2ff2d7d25f2e8c2995c17d8b122d672c' ARCHIVE_BASE_RIVEN_0_SIZE='6954413' ARCHIVE_BASE_RIVEN_0_VERSION='1.2-gog22594' ## Myst 3: Exile ARCHIVE_BASE_EXILE_0_NAME='setup_myst_3_exile_1.27_rvm_(21807).exe' ARCHIVE_BASE_EXILE_0_MD5='e2b8e962326b8802009d3e30b9e4c8ff' ARCHIVE_BASE_EXILE_0_TYPE='innosetup' ARCHIVE_BASE_EXILE_0_PART1_NAME='setup_myst_3_exile_1.27_rvm_(21807)-1.bin' ARCHIVE_BASE_EXILE_0_PART1_MD5='c69e2780274f2830ab210d230889e5bb' ARCHIVE_BASE_EXILE_0_SIZE='2422163' ARCHIVE_BASE_EXILE_0_VERSION='1.27-gog21807' ARCHIVE_BASE_EXILE_0_URL='https://www.gog.com/game/myst_3_exile' # Archives content CONTENT_PATH_DEFAULT='.' ## Myst (Masterpiece Edition) CONTENT_GAME_MAIN_FILES_MYST1=' qtw/channel/holoalgh.mov qtw/channel/holoamth.mov qtw/channel/holoasir.mov qtw/channel/holosmsg.mov qtw/channel/monalgh.mov qtw/channel/monamth.mov qtw/channel/monasirs.mov qtw/channel/monsmsg.mov qtw/dunny/atr1nopg.mov qtw/dunny/atr1page.mov qtw/dunny/atrmidc2.mov qtw/dunny/atrus2.mov qtw/intro/broder.mov qtw/intro/intro.mov qtw/mech/holoon.mov qtw/myst/aextra.mov qtw/myst/alose.mov qtw/myst/apage1.mov qtw/myst/apage2.mov qtw/myst/apage3.mov qtw/myst/apage4.mov qtw/myst/apage5.mov qtw/myst/atrusbk1.mov qtw/myst/atrusbk2.mov qtw/myst/sextra.mov qtw/myst/slose.mov qtw/myst/spage1.mov qtw/myst/spage2.mov qtw/myst/spage3.mov qtw/myst/spage4.mov qtw/myst/spage5.mov qtw/myst/vltatrus.mov' CONTENT_GAME_MAIN_FR_PATH_MYST1='french' CONTENT_GAME_MAIN_FR_FILES_MYST1="$CONTENT_GAME_MAIN_FILES_MYST1" CONTENT_GAME_MAIN_EN_FILES_MYST1="$CONTENT_GAME_MAIN_FILES_MYST1" CONTENT_GAME0_MAIN_FR_FILES_MYST1=' channel_french.dat credits_french.dat help_french.dat mechan_french.dat myst_french.dat selen_french.dat stone_french.dat' CONTENT_GAME_COMMON_FILES_MYST1=' channel.dat credits.dat dunny.dat help.dat intro.dat mechan.dat menu.dat myst.dat selen.dat stone.dat qtw' CONTENT_DOC_COMMON_FILES_MYST1=' manual.pdf readme.txt' ## Riven: The Sequel to Myst CONTENT_GAME_MAIN_FR_FILES_RIVEN=' b_data_french.mhk j_data_french.mhk o_data_french.mhk p_data_french.mhk r_data_french.mhk t_data_french.mhk' ## TODO: System-provided fonts should be used instead, ScummVM expects to find them in the game directory. CONTENT_FONTS_COMMON_FILES_RIVEN=' freesans.ttf mplus-2c-regular.ttf' CONTENT_GAME_COMMON_FILES_RIVEN=' riven.exe a_data.mhk b_data.mhk b2_data.mhk g_data.mhk j_data1.mhk j_data2.mhk o_data.mhk p_data.mhk r_data.mhk t_data1.mhk t_data2.mhk a_sounds.mhk b_sounds.mhk g_sounds.mhk j_sounds.mhk o_sounds.mhk p_sounds.mhk r_sounds.mhk t_sounds.mhk extras.mhk' ## The following localization files must be included, or ScummVM fails to detect the correct game version. CONTENT_GAME0_COMMON_FILES_RIVEN=' a_data_french.mhk a_data_german.mhk a_data_italian.mhk a_data_japanese.mhk a_data_polish.mhk a_data_russian.mhk a_data_spanish.mhk' CONTENT_DOC_COMMON_FILES_RIVEN=' manual.pdf readme.txt' ## Myst 3: Exile CONTENT_GAME_MAIN_FILES_EXILE=' data m3data' CONTENT_DOC_MAIN_FILES_EXILE=' manual.pdf' APP_MAIN_SCUMMID_MYST1='mohawk:myst' APP_MAIN_SCUMMID_RIVEN='mohawk:riven' APP_MAIN_SCUMMID_EXILE='myst3:myst3' APP_MAIN_ICON_MYST1='app/goggame-1207658818.ico' APP_MAIN_ICON_RIVEN='app/goggame-1207658819.ico' APP_MAIN_ICON_EXILE='app/goggame-1766899243.ico' APP_MAIN_OPTIONS_MAIN_EN_MYST1='--language=en' APP_MAIN_OPTIONS_MAIN_EN_RIVEN='--language=en' APP_MAIN_OPTIONS_MAIN_FR_MYST1='--language=fr' APP_MAIN_OPTIONS_MAIN_FR_RIVEN='--language=fr' # Packages PACKAGES_LIST=' PKG_MAIN_EN PKG_MAIN_FR PKG_COMMON' ## Myst (Masterpiece Edition) PKG_MAIN_ID_MYST1="$GAME_ID_MYST1" PKG_MAIN_EN_ID_MYST1="${PKG_MAIN_ID_MYST1}-en" PKG_MAIN_FR_ID_MYST1="${PKG_MAIN_ID_MYST1}-fr" PKG_MAIN_PROVIDES_MYST1=" $PKG_MAIN_ID_MYST1" PKG_MAIN_EN_PROVIDES_MYST1="$PKG_MAIN_PROVIDES_MYST1" PKG_MAIN_FR_PROVIDES_MYST1="$PKG_MAIN_PROVIDES_MYST1" PKG_MAIN_EN_DESCRIPTION_MYST1='English localization' PKG_MAIN_EN_DESCRIPTION_MYST1='French localization' PKG_MAIN_DEPENDENCIES_SIBLINGS_MYST1=' PKG_COMMON' PKG_MAIN_EN_DEPENDENCIES_SIBLINGS_MYST1="$PKG_MAIN_DEPENDENCIES_SIBLINGS_MYST1" PKG_MAIN_FR_DEPENDENCIES_SIBLINGS_MYST1="$PKG_MAIN_DEPENDENCIES_SIBLINGS_MYST1" PKG_COMMON_ID_MYST1="${GAME_ID_MYST1}-common" PKG_COMMON_DESCRIPTION_MYST1='Common data' ## Riven: The Sequel to Myst PKG_MAIN_ID_RIVEN="$GAME_ID_RIVEN" PKG_MAIN_EN_ID_RIVEN="${PKG_MAIN_ID_RIVEN}-en" PKG_MAIN_FR_ID_RIVEN="${PKG_MAIN_ID_RIVEN}-fr" PKG_MAIN_PROVIDES_RIVEN=" $PKG_MAIN_ID_RIVEN" PKG_MAIN_EN_PROVIDES_RIVEN="$PKG_MAIN_PROVIDES_RIVEN" PKG_MAIN_FR_PROVIDES_RIVEN="$PKG_MAIN_PROVIDES_RIVEN" PKG_MAIN_EN_DESCRIPTION_RIVEN='English localization' PKG_MAIN_EN_DESCRIPTION_RIVEN='French localization' PKG_MAIN_DEPENDENCIES_SIBLINGS_RIVEN=' PKG_COMMON' PKG_MAIN_EN_DEPENDENCIES_SIBLINGS_RIVEN="$PKG_MAIN_DEPENDENCIES_SIBLINGS_RIVEN" PKG_MAIN_FR_DEPENDENCIES_SIBLINGS_RIVEN="$PKG_MAIN_DEPENDENCIES_SIBLINGS_RIVEN" PKG_COMMON_ID_RIVEN="${GAME_ID_RIVEN}-common" PKG_COMMON_DESCRIPTION_RIVEN='Common data' ## Ensure easy upgrades from packages generated with pre-20250114.1 game scripts PKG_COMMON_PROVIDES_RIVEN="${PKG_COMMON_PROVIDES_RIVEN:-} myst-2-riven-data" ## Myst 3: Exile PACKAGES_LIST_EXILE=' PKG_MAIN' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data case "$(current_archive)" in ('ARCHIVE_BASE_EXILE_'*) content_inclusion_icons ;; (*) content_inclusion_icons 'PKG_COMMON' ;; esac content_inclusion_default ## Riven - Link the fonts in the hardcoded path the game engine expects case "$(current_archive)" in ('ARCHIVE_BASE_RIVEN_'*) fonts_source=$(path_fonts_ttf) fonts_destination="$(package_path 'PKG_COMMON')$(path_game_data)" mkdir --parents "$fonts_destination" for font_file in \ 'freesans.ttf' \ 'mplus-2c-regular.ttf' do ln --symbolic "${fonts_source}/${font_file}" "$fonts_destination" done ;; esac # Write launchers case "$(current_archive)" in ('ARCHIVE_BASE_EXILE_'*) launchers_generation ;; (*) APP_MAIN_OPTIONS_MAIN_EN=$(context_value 'APP_MAIN_OPTIONS_MAIN_EN') APP_MAIN_OPTIONS_MAIN_FR=$(context_value 'APP_MAIN_OPTIONS_MAIN_FR') launchers_generation 'PKG_MAIN_EN' launchers_generation 'PKG_MAIN_FR' ;; esac # Build packages packages_generation case "$(current_archive)" in ('ARCHIVE_BASE_EXILE_'*) print_instructions ;; (*) case "$(messages_language)" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_MAIN_EN' 'PKG_COMMON' printf "$lang_string" "$lang_fr" print_instructions 'PKG_MAIN_FR' 'PKG_COMMON' ;; esac # Clean up working_directory_cleanup exit 0 games/play-off-world-resource-base.sh0000755000000000000000000000507214471751340016620 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=20241229.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='off-world-resource-base' GAME_NAME='O.R.B.: Off-World Resource Base' ARCHIVE_BASE_0_NAME='setup_orb_2.0.0.5.exe' ARCHIVE_BASE_0_MD5='b1cab44f6fe398ed008dda23e1538c03' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='651435' ARCHIVE_BASE_0_VERSION='1.04-gog2.0.0.5' ARCHIVE_BASE_0_URL='https://www.gog.com/game/orb_offworld_resource_base' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' bobo.dat binkw32.dll c4dll-d.dll dbghelp.dll mss32.dll msvcrtd.dll msvcrt.dll orb.exe orbscenarioeditor.exe orbsetup.exe lensflares.ini netcolors.ini orb.ini orbsetup.ini *.asi *.flt *.m3d' CONTENT_GAME_DATA_FILES=' orbdata cdkey game.positions credits.txt *.bmp *.flg *.sup' CONTENT_DOC_DATA_FILES=' readme.txt scen_eula.txt *.pdf' ## The intro video and game menu fail to render ## unless a virtual desktop is used (WINE 9.0). WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='orb.exe' APP_EDITOR_ID="${GAME_ID}-editor" APP_EDITOR_NAME="$GAME_NAME - Scenario editor" APP_EDITOR_EXE='orbscenarioeditor.exe' APP_SETUP_ID="${GAME_ID}-setup" APP_SETUP_NAME="$GAME_NAME - Settings" APP_SETUP_CAT='Settings' APP_SETUP_EXE='orbsetup.exe' USER_PERSISTENT_DIRECTORIES=' orbdata/players orbdata/scenarios' USER_PERSISTENT_FILES=' orb.ini orbdata/frontend/players.dat orbdata/language/current.lang' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-oil-rush.sh0000755000000000000000000001100714471751340013721 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Oil Rush ### script_version=20250104.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='oil-rush' GAME_NAME='Oil Rush' ## This archive used to be provided by Humble Bundle, ## but it is no longer available for sale. ARCHIVE_BASE_0_NAME='OilRush_1.35_Linux_1370041755.run' ARCHIVE_BASE_0_MD5='5a38d0545a64e0d21ddfe4afc15253a8' ARCHIVE_BASE_0_SIZE='1351677' ARCHIVE_BASE_0_VERSION='1.35-humble1' CONTENT_PATH_DEFAULT='.' CONTENT_LIBS_BIN64_RELATIVE_PATH='bin' CONTENT_LIBS_BIN64_FILES=' libOilRush_x64.so libQtCoreUnigine_x64.so.4 libQtGuiUnigine_x64.so.4 libQtNetworkUnigine_x64.so.4 libQtWebKitUnigine_x64.so.4 libQtXmlUnigine_x64.so.4 libRakNet_x64.so libUnigine_x64.so' CONTENT_LIBS_BIN32_RELATIVE_PATH='bin' CONTENT_LIBS_BIN32_FILES=' libOilRush_x86.so libQtCoreUnigine_x86.so.4 libQtGuiUnigine_x86.so.4 libQtNetworkUnigine_x86.so.4 libQtWebKitUnigine_x86.so.4 libQtXmlUnigine_x86.so.4 libRakNet_x86.so libUnigine_x86.so' CONTENT_GAME_BIN64_FILES=' bin/launcher_x64 bin/OilRush_x64' CONTENT_GAME_BIN32_FILES=' bin/launcher_x86 bin/OilRush_x86' CONTENT_GAME_DATA_FILES=' data oilrush.cfg' CONTENT_DOC_DATA_PATH='documentation' CONTENT_DOC_DATA_FILES=' user_manual.pdf' USER_PERSISTENT_FILES=' oilrush.cfg data/launcher/launcher*.xml' APP_MAIN_EXE_BIN64='bin/launcher_x64' APP_MAIN_EXE_BIN32='bin/launcher_x86' APP_MAIN_OPTIONS='-config ../data/launcher/launcher.xml' APP_MAIN_ICON='data/launcher/oilrush.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXext.so.6 libXinerama.so.1 libXrandr.so.2 libXrender.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Set the execution bit on the game binaries chmod 755 'bin/OilRush_x86' 'bin/OilRush_x64' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { local application application="$1" local application_exe application_options application_exe=$(application_exe "$application") application_options=$(application_options "$application") cat <<- EOF cd "$(dirname "$application_exe")" "./$(basename "$application_exe")" $application_options "\$@" EOF } ## Copy the real game binary into the game prefix. ## (bin/OilRush_x64 instead of bin/launcher_x64) native_launcher_binary_copy() { cat <<- 'EOF' # Copy the game binary into the user prefix exe_destination="${PATH_PREFIX}/bin/OilRush_x64" if [ -h "$exe_destination" ]; then exe_source=$(realpath "$exe_destination") cp --remove-destination "$exe_source" "$exe_destination" fi unset exe_destination exe_source EOF } launchers_generation 'PKG_BIN64' ## Copy the real game binary into the game prefix. ## (bin/OilRush_x86 instead of bin/launcher_x86) native_launcher_binary_copy() { cat <<- 'EOF' # Copy the game binary into the user prefix exe_destination="${PATH_PREFIX}/bin/OilRush_x86" if [ -h "$exe_destination" ]; then exe_source=$(realpath "$exe_destination") cp --remove-destination "$exe_source" "$exe_destination" fi unset exe_destination exe_source EOF } launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-orwell.sh0000755000000000000000000000744214471751340013473 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Orwell series: # - Orwell # - Orwell: Ignorance is Strength ### script_version=20241126.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID_ORWELL1='orwell-1' GAME_NAME_ORWELL1='Orwell' GAME_ID_ORWELL2='orwell-2' GAME_NAME_ORWELL2='Orwell: Ignorance is Strength' # Archives ## Orwell ARCHIVE_BASE_ORWELL1_2_NAME='orwell_1_4_7424_39231.sh' ARCHIVE_BASE_ORWELL1_2_MD5='8ac1915d9de7532717730b7f33a544b9' ARCHIVE_BASE_ORWELL1_2_SIZE='570000' ARCHIVE_BASE_ORWELL1_2_VERSION='1.4.7424.gog39231' ARCHIVE_BASE_ORWELL1_2_URL='https://www.gog.com/game/orwell' ARCHIVE_BASE_ORWELL1_1_NAME='orwell_en_1_21_21014.sh' ARCHIVE_BASE_ORWELL1_1_MD5='8fcd84cd3989175d1da377c78e1b4ff2' ARCHIVE_BASE_ORWELL1_1_SIZE='360000' ARCHIVE_BASE_ORWELL1_1_VERSION='1.21-gog21014' ARCHIVE_BASE_ORWELL1_0_NAME='gog_orwell_2.0.0.1.sh' ARCHIVE_BASE_ORWELL1_0_MD5='471470546952015fce024bdcb5431a07' ARCHIVE_BASE_ORWELL1_0_SIZE='630000' ARCHIVE_BASE_ORWELL1_0_VERSION='1.1-gog2.0.0.1' ### Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME_ORWELL1='orwell-1_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5_ORWELL1='acb6711e5f6b26828097b2828f74e522' ARCHIVE_OPTIONAL_ICONS_URL_ORWELL1='https://downloads.dotslashplay.it/games/orwell-1/' CONTENT_ICONS_PATH_ORWELL1='.' CONTENT_ICONS_FILES_ORWELL1=' 128x128' ## Orwell: Ignorance is Strength ARCHIVE_BASE_ORWELL2_1_NAME='orwell_ignorance_is_strength_en_1_1_6771_23686_22333.sh' ARCHIVE_BASE_ORWELL2_1_MD5='a69fb6e02fdce982cb3a56b2b32a70e6' ARCHIVE_BASE_ORWELL2_1_SIZE='730000' ARCHIVE_BASE_ORWELL2_1_VERSION='1.1.6771-gog22333' ARCHIVE_BASE_ORWELL2_1_URL='https://www.gog.com/game/orwell_ignorance_is_strength' ARCHIVE_BASE_ORWELL2_0_NAME='orwell_ignorance_is_strength_en_1_11_21014.sh' ARCHIVE_BASE_ORWELL2_0_MD5='3d50e953ad7029ac9a292bcc9b137426' ARCHIVE_BASE_ORWELL2_0_SIZE='730000' ARCHIVE_BASE_ORWELL2_0_VERSION='1.1.6717-gog21014' UNITY3D_NAME_ORWELL1='Orwell' UNITY3D_NAME_ORWELL2='Ignorance' UNITY3D_PLUGINS_ORWELL1=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_DOC_DATA_FILES=' *.txt' ## Both games use the same path. FAKE_HOME_PERSISTENT_DIRECTORIES=' My Games/Orwell' ## Orwell 1 - The original game icon is not provided by the GOG installer for Orwell 1.4. ## Other archives can use the default icon path for Unity3D games. APP_MAIN_ICON_ORWELL1_2='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID_ORWELL1="${GAME_ID_ORWELL1}-data" PKG_DATA_ID_ORWELL2="${GAME_ID_ORWELL2}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-painkiller.sh0000755000000000000000000000566114471751340014322 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Painkiller ### script_version=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='painkiller' GAME_NAME='Painkiller' ARCHIVE_BASE_EN_0_NAME='setup_painkiller_black_1.64_lang_update_(24538).exe' ARCHIVE_BASE_EN_0_MD5='328381c6d874b5c6822cdcf596b6c00e' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_PART1_NAME='setup_painkiller_black_1.64_lang_update_(24538)-1.bin' ARCHIVE_BASE_EN_0_PART1_MD5='26cf8f833c5b75efb006eac0e731a0af' ARCHIVE_BASE_EN_0_SIZE='3934610' ARCHIVE_BASE_EN_0_VERSION='1.6.4-gog24538' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/painkiller' ARCHIVE_BASE_FR_0_NAME='setup_painkiller_black_1.64_lang_update_(french)_(24538).exe' ARCHIVE_BASE_FR_0_MD5='9a4301af374c500ac7d00b5e7ad70b65' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_PART1_NAME='setup_painkiller_black_1.64_lang_update_(french)_(24538)-1.bin' ARCHIVE_BASE_FR_0_PART1_MD5='09e9614cadf2973ead1f826c24ebf2fe' ARCHIVE_BASE_FR_0_SIZE='3612122' ARCHIVE_BASE_FR_0_VERSION='1.6.0-gog24538' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/painkiller' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bin/miles bin/*.dll bin/*.exe bin/*.ini' CONTENT_GAME_MOVIES_FILES=' data/movies' CONTENT_GAME_DATA_FILES=' data/models data/music data/*.pak data/*.pkm' CONTENT_DOC_DATA_RELATIVE_PATH='docs' CONTENT_DOC_DATA_FILES=' *.pdf *.txt' USER_PERSISTENT_DIRECTORIES=' savegames' USER_PERSISTENT_FILES=' bin/config.ini' APP_MAIN_EXE='bin/painkiller.exe' APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=128' PACKAGES_LIST=' PKG_BIN PKG_MOVIES PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_MOVIES PKG_DATA' PKG_MOVIES_ID="${GAME_ID}-movies" PKG_MOVIES_ID_EN="${PKG_MOVIES_ID}-en" PKG_MOVIES_ID_FR="${PKG_MOVIES_ID}-fr" PKG_MOVIES_PROVIDES=" $PKG_MOVIES_ID" PKG_MOVIES_DESCRIPTION_EN='English movies' PKG_MOVIES_DESCRIPTION_FR='French movies' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-pandora-first-contact.sh0000755000000000000000000000620114471751340016361 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Pandora: First Contact ### script_version=20250104.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='pandora-first-contact' GAME_NAME='Pandora: First Contact' ARCHIVE_BASE_0_NAME='pandora_first_contact_en_1_6_7_16815.sh' ARCHIVE_BASE_0_MD5='0d9343d1693fc561823811a0cd3e279c' ARCHIVE_BASE_0_SIZE='720000' ARCHIVE_BASE_0_VERSION='1.6.7-gog16815' ARCHIVE_BASE_0_URL='https://www.gog.com/game/pandora' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='pandora-first-contact_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='66b1d99166b738b2130449a49b9cd58c' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/resources/pandora-first-contact/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 256x256' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_RELATIVE_PATH='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_RELATIVE_PATH='Documents' CONTENT_DOC_DATA_FILES=' Dutch English French German Italian Licenses PandoraWebsite.url' APP_MAIN_EXE='Binaries/Pandora.bin' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' 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' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Set the required execution permissions on the server binary chmod 755 'Binaries/PandoraServer.bin' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd Binaries ./Pandora.bin "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-pharaoh.sh0000755000000000000000000001266714471751340013616 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Pharaoh ### script_version=20241226.4 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='pharaoh' GAME_NAME='Pharaoh' # Archives ## Pharaoh + Cleopatra ARCHIVE_BASE_0_NAME='setup_pharaoh_gold_2.1.0.15.exe' ARCHIVE_BASE_0_MD5='62298f00f1f2268c8d5004f5b2e9fc93' ## innoextract --lowercase option should not be used, or Akhenaten will fail to find some required files. ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_SIZE='804849' ARCHIVE_BASE_0_VERSION='2.1-gog2.1.0.15' ARCHIVE_BASE_0_URL='https://www.gog.com/game/pharaoh_cleopatra' ## Akhenaten ## cf. https://github.com/dalerank/Akhenaten ### release 1036 ARCHIVE_OPTIONAL_AKHENATEN_3_NAME='akhenaten.linux' ARCHIVE_OPTIONAL_AKHENATEN_3_MD5='d35934a08420b82d55ed41405d5bea61' ARCHIVE_OPTIONAL_AKHENATEN_3_SIZE='87467' ARCHIVE_OPTIONAL_AKHENATEN_3_URL='https://dalerank.itch.io/akhenaten' ### release 784 ARCHIVE_OPTIONAL_AKHENATEN_2_NAME='akhenaten.linux' ARCHIVE_OPTIONAL_AKHENATEN_2_MD5='eebce8cd3a284399d271b1f9e2b02461' ARCHIVE_OPTIONAL_AKHENATEN_2_SIZE='64301' ### release 205 ARCHIVE_OPTIONAL_AKHENATEN_1_NAME='akhenaten.linux' ARCHIVE_OPTIONAL_AKHENATEN_1_MD5='cdd40aa1ab541035b1a2c5e02cbe5064' ARCHIVE_OPTIONAL_AKHENATEN_1_SIZE='34006' ### release 108 (still called "Ozyamandias") ARCHIVE_OPTIONAL_AKHENATEN_0_NAME='ozymandias.linux' ARCHIVE_OPTIONAL_AKHENATEN_0_MD5='7e52e2e90f5b00069cd312507d55c518' ARCHIVE_OPTIONAL_AKHENATEN_0_SIZE='31820' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_WINE_FILES=' MP3DEC.ASI BINKW32.DLL mss16.dll mss32.dll SMACKW32.DLL Pharaoh.exe Pharaoh.ini mssb16.tsk *.M3D' CONTENT_GAME_DATA_FILES=' AUDIO BINKS Data Maps cleoicon.ico auto reason phrases.txt campaign.txt eventmsg.txt Figure_model.txt Figure_model_*.txt music.txt Pharaoh_MM.txt Pharaoh_Model_*.txt Pharaoh_Text.txt Tax_Sentiment_Model_*.txt trade_recommends.txt Pharaoh2.emp Pharaoh_MM.eng Pharaoh_Text.eng mission1.pak *.inf' CONTENT_DOC_DATA_FILES=' Mission Editor Guide.txt Readme.txt *.pdf' USER_PERSISTENT_DIRECTORIES=' Save' USER_PERSISTENT_FILES=' *.ini' ## WINE - With the default OpenGL renderer, the game menu is not displayed (WINE 9.0). WINE_DIRECT3D_RENDERER='wined3d/gdi' ## WINE - The game window fails to render anything unless the game runs in a WINE virtual desktop (WINE 9.0). WINE_VIRTUAL_DESKTOP='auto' ## WINE - Disable CSMT to avoid degraded performances ## TODO: Check if it is still required with current WINE builds WINE_WINETRICKS_VERBS='csmt=off' APP_MAIN_EXE_BIN_LINUX='akhenaten.linux' APP_MAIN_EXE_BIN_WINE='Pharaoh.exe' APP_MAIN_ICON='cleoicon.ico' PACKAGES_LIST=' PKG_BIN_WINE PKG_DATA' PACKAGES_LIST_AKHENATEN=" PKG_BIN_LINUX $PACKAGES_LIST" PKG_BIN_ID="$GAME_ID" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_LINUX_ID="${PKG_BIN_ID}-akhenaten" PKG_BIN_LINUX_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_LINUX_DESCRIPTION='using the Akhenaten engine' PKG_BIN_LINUX_ARCH='64' PKG_BIN_LINUX_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_LINUX_DEPENDENCIES_LIBRARIES=' libc.so.6 libm.so.6 libSDL2-2.0.so.0 libSDL2_mixer-2.0.so.0' ## Ensure smooth upgrades from packages generated with pre-20231105.3 game scripts PKG_BIN_LINUX_PROVIDES="${PKG_BIN_LINUX_PROVIDES:-} pharaoh-ozymandias" PKG_BIN_WINE_ID="${PKG_BIN_ID}-wine" PKG_BIN_WINE_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_WINE_DESCRIPTION='using WINE' PKG_BIN_WINE_ARCH='32' PKG_BIN_WINE_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Check for the presence of the Akhenaten native engine binary (optional) archive_initialize_optional \ 'ARCHIVE_AKHENATEN' \ 'ARCHIVE_OPTIONAL_AKHENATEN_3' \ 'ARCHIVE_OPTIONAL_AKHENATEN_2' \ 'ARCHIVE_OPTIONAL_AKHENATEN_1' \ 'ARCHIVE_OPTIONAL_AKHENATEN_0' if archive_is_available 'ARCHIVE_AKHENATEN'; then export PACKAGES_LIST="$PACKAGES_LIST_AKHENATEN" fi # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default if archive_is_available 'ARCHIVE_AKHENATEN'; then application_exe=$( set_current_package 'PKG_BIN_LINUX' application_exe 'APP_MAIN' ) install -D --mode=755 \ "$(archive_path 'ARCHIVE_AKHENATEN')" \ "$(package_path 'PKG_BIN_LINUX')$(path_game_data)/${application_exe}" fi # Write launchers launchers_generation 'PKG_BIN_WINE' if archive_is_available 'ARCHIVE_AKHENATEN'; then launchers_generation 'PKG_BIN_LINUX' fi # Build packages packages_generation printf '\n' if archive_is_available 'ARCHIVE_AKHENATEN'; then printf 'Akhenaten:' print_instructions 'PKG_DATA' 'PKG_BIN_LINUX' printf 'WINE:' print_instructions 'PKG_DATA' 'PKG_BIN_WINE' else print_instructions fi # Clean up working_directory_cleanup exit 0 games/play-pillars-of-eternity-1-expansions.sh0000755000000000000000000001443114471751340020417 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Pillars of Eternity expansions: # - Kickstarter item # - Kickstarter pet # - Pre-order item and pet # - The White March, Part 1 # - The White March, Part 2 # - Deadfire Pack ### script_version=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='pillars-of-eternity-1' GAME_NAME='Pillars of Eternity' EXPANSION_ID_TIER1BACKER='kickstarter-item' EXPANSION_NAME_TIER1BACKER='Kickstarter item' EXPANSION_ID_TIER2BACKER='kickstarter-pet' EXPANSION_NAME_TIER2BACKER='Kickstarter pet' EXPANSION_ID_PREORDER='preorder-content' EXPANSION_NAME_PREORDER='Pre-order item and pet' EXPANSION_ID_TWM1='the-white-march-part-1' EXPANSION_NAME_TWM1='The White March Part Ⅰ' EXPANSION_ID_TWM2='the-white-march-part-2' EXPANSION_NAME_TWM2='The White March Part Ⅱ' EXPANSION_ID_DEADFIRE='deadfire-pack' EXPANSION_NAME_DEADFIRE='Deadfire Pack' # Archives ## Kickstarter item ARCHIVE_BASE_TIER1BACKER_0_NAME='gog_pillars_of_eternity_kickstarter_item_dlc_2.0.0.2.sh' ARCHIVE_BASE_TIER1BACKER_0_MD5='b4c29ae17c87956471f2d76d8931a4e5' ARCHIVE_BASE_TIER1BACKER_0_SIZE='924' ARCHIVE_BASE_TIER1BACKER_0_VERSION='1.0-gog2.0.0.2' ## Kickstarter pet ARCHIVE_BASE_TIER2BACKER_0_NAME='gog_pillars_of_eternity_kickstarter_pet_dlc_2.0.0.2.sh' ARCHIVE_BASE_TIER2BACKER_0_MD5='3653fc2a98ef578335f89b607f0b7968' ARCHIVE_BASE_TIER2BACKER_0_SIZE='924' ARCHIVE_BASE_TIER2BACKER_0_VERSION='1.0-gog2.0.0.2' ## Pre-order item and pet ARCHIVE_BASE_PREORDER_0_NAME='gog_pillars_of_eternity_preorder_item_and_pet_dlc_2.0.0.2.sh' ARCHIVE_BASE_PREORDER_0_MD5='b86ad866acb62937d2127407e4beab19' ARCHIVE_BASE_PREORDER_0_SIZE='924' ARCHIVE_BASE_PREORDER_0_VERSION='1.0-gog2.0.0.2' ## The White March, Part 1 ARCHIVE_BASE_TWM1_3_NAME='pillars_of_eternity_white_march_part_1_dlc_en_3_07_0_1318_17464.sh' ARCHIVE_BASE_TWM1_3_MD5='cc72f59ee20238ff05c47646b4618f01' ARCHIVE_BASE_TWM1_3_SIZE='5507108' ARCHIVE_BASE_TWM1_3_VERSION='3.7.0.1318-gog17464' ARCHIVE_BASE_TWM1_3_URL='https://www.gog.com/game/pillars_of_eternity_the_white_march_part_1' ARCHIVE_BASE_TWM1_2_NAME='pillars_of_eternity_white_march_part_1_dlc_en_3_07_16598.sh' ARCHIVE_BASE_TWM1_2_MD5='054b6af430da1ed2635b9c6b4ed56866' ARCHIVE_BASE_TWM1_2_SIZE='5500000' ARCHIVE_BASE_TWM1_2_VERSION='3.7.0.1284-gog16598' ARCHIVE_BASE_TWM1_1_NAME='gog_pillars_of_eternity_white_march_part_1_dlc_2.10.0.12.sh' ARCHIVE_BASE_TWM1_1_MD5='8fafcb549fffd2de24f381a85e859622' ARCHIVE_BASE_TWM1_1_SIZE='5500000' ARCHIVE_BASE_TWM1_1_VERSION='3.06.0.1254-gog2.10.0.12' ARCHIVE_BASE_TWM1_0_NAME='gog_pillars_of_eternity_white_march_part_1_dlc_2.9.0.11.sh' ARCHIVE_BASE_TWM1_0_MD5='98424615626c82ed723860d421f187b6' ARCHIVE_BASE_TWM1_0_SIZE='5500000' ARCHIVE_BASE_TWM1_0_VERSION='3.05.0.1186-gog2.9.0.11' ## The White March, Part 2 ARCHIVE_BASE_TWM2_3_NAME='pillars_of_eternity_white_march_part_2_dlc_en_3_07_0_1318_17464.sh' ARCHIVE_BASE_TWM2_3_MD5='03067ebdd878cc16c283f63ddf015e90' ARCHIVE_BASE_TWM2_3_SIZE='4360158' ARCHIVE_BASE_TWM2_3_VERSION='3.7.0.1318-gog17464' ARCHIVE_BASE_TWM2_3_URL='https://www.gog.com/game/pillars_of_eternity_the_white_march_part_2' ARCHIVE_BASE_TWM2_2_NAME='pillars_of_eternity_white_march_part_2_dlc_en_3_07_16598.sh' ARCHIVE_BASE_TWM2_2_MD5='db3a345b2b2782e2ad075dd32567f303' ARCHIVE_BASE_TWM2_2_SIZE='4300000' ARCHIVE_BASE_TWM2_2_VERSION='3.7.0.1284-gog16598' ARCHIVE_BASE_TWM2_1_NAME='gog_pillars_of_eternity_white_march_part_2_dlc_2.6.0.7.sh' ARCHIVE_BASE_TWM2_1_MD5='fdc1446661a358961379fbec24c44680' ARCHIVE_BASE_TWM2_1_SIZE='4400000' ARCHIVE_BASE_TWM2_1_VERSION='3.06.1254-gog2.6.0.7' ARCHIVE_BASE_TWM2_0_NAME='gog_pillars_of_eternity_white_march_part_2_dlc_2.5.0.6.sh' ARCHIVE_BASE_TWM2_0_MD5='483d4b8cc046a07ec91a6306d3409e23' ARCHIVE_BASE_TWM2_0_SIZE='4400000' ARCHIVE_BASE_TWM2_0_VERSION='3.05.1186-gog2.5.0.6' ## Deadfire Pack ARCHIVE_BASE_DEADFIRE_2_NAME='pillars_of_eternity_deadfire_pack_dlc_en_3_07_0_1318_20099.sh' ARCHIVE_BASE_DEADFIRE_2_MD5='da315aba26784e55aa51139cebb7f9d2' ARCHIVE_BASE_DEADFIRE_2_SIZE='922' ARCHIVE_BASE_DEADFIRE_2_VERSION='3.07.0.1318-gog20099' ARCHIVE_BASE_DEADFIRE_2_URL='https://www.gog.com/game/pillars_of_eternity_deadfire_pack' ARCHIVE_BASE_DEADFIRE_1_NAME='pillars_of_eternity_deadfire_pack_dlc_en_3_07_0_1318_17462.sh' ARCHIVE_BASE_DEADFIRE_1_MD5='021362da5912dc8a3e47473e97726f7f' ARCHIVE_BASE_DEADFIRE_1_SIZE='1300' ARCHIVE_BASE_DEADFIRE_1_VERSION='3.07.0.1318-gog17462' ARCHIVE_BASE_DEADFIRE_0_NAME='pillars_of_eternity_deadfire_pack_dlc_en_3_07_16380.sh' ARCHIVE_BASE_DEADFIRE_0_MD5='2fc0dc21648953be1c571e28b1e3d002' ARCHIVE_BASE_DEADFIRE_0_SIZE='1300' ARCHIVE_BASE_DEADFIRE_0_VERSION='3.07-gog16380' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' PillarsOfEternity_Data' PKG_PARENT_ID="$GAME_ID" PKG_TWM1_ID="${GAME_ID}-${EXPANSION_ID_TWM1}" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' PKG_MAIN_DEPENDENCIES_SIBLINGS_TWM2="$PKG_MAIN_DEPENDENCIES_SIBLINGS PKG_TWM1" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # The White March, Part 2 - Remove a file already provided by a dependency case "$(current_archive)" in ('ARCHIVE_BASE_TWM2_'*) rm --force 'PillarsOfEternity_Data/assetbundles/prefabs/objectbundle/px1_cre_blight_ice_terror.unity3d' ;; esac # Deadfire Pack - Fix a typo in a file path case "$(current_archive)" in ('ARCHIVE_BASE_DEADFIRE_'*) if [ -e 'PillarsOfEternity_data' ]; then mv 'PillarsOfEternity_data' 'PillarsOfEternity_Data' fi ;; esac ) # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-pillars-of-eternity-1.sh0000755000000000000000000000550114471751340016230 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 ### script_version=20241227.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='pillars-of-eternity-1' GAME_NAME='Pillars of Eternity' ARCHIVE_BASE_3_NAME='pillars_of_eternity_en_3_07_0_1318_17461.sh' ARCHIVE_BASE_3_MD5='57164ad0cbc53d188dde0b38e7491916' ARCHIVE_BASE_3_SIZE='14801525' ARCHIVE_BASE_3_VERSION='3.7.0.1318-gog17461' ARCHIVE_BASE_3_URL='https://www.gog.com/game/pillars_of_eternity_hero_edition' ARCHIVE_BASE_2_NAME='pillars_of_eternity_en_3_07_16405.sh' ARCHIVE_BASE_2_MD5='e4271b5e72f1ecc9fbbc4d90937ede05' ARCHIVE_BASE_2_SIZE='15000000' ARCHIVE_BASE_2_VERSION='3.7.0.1284-gog16405' ARCHIVE_BASE_1_NAME='gog_pillars_of_eternity_2.16.0.20.sh' ARCHIVE_BASE_1_MD5='0d21cf95bda070bdbfbe3e79f8fc32d6' ARCHIVE_BASE_1_SIZE='15000000' ARCHIVE_BASE_1_VERSION='3.06.1254-gog2.16.0.20' ARCHIVE_BASE_0_NAME='gog_pillars_of_eternity_2.15.0.19.sh' ARCHIVE_BASE_0_MD5='2000052541abb1ef8a644049734e8526' ARCHIVE_BASE_0_SIZE='15000000' ARCHIVE_BASE_0_VERSION='3.05.1186-gog2.15.0.19' UNITY3D_NAME='PillarsOfEternity' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_DATA_AREAS_FILES=" ${UNITY3D_NAME}_Data/assetbundles/st_ar_*" PACKAGES_LIST=' PKG_BIN PKG_DATA_AREAS PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_AREAS' PKG_DATA_AREAS_ID="${PKG_DATA_ID}-areas" PKG_DATA_AREAS_DESCRIPTION="$PKG_DATA_DESCRIPTION - areas" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-primordia.sh0000755000000000000000000001022114471751340014142 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Primordia ### script_version=20250211.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='primordia' GAME_NAME='Primordia' ARCHIVE_BASE_13_NAME='primordia_5_2a_79719.sh' ARCHIVE_BASE_13_MD5='ce24004eaf34646660a01eaf8b3315ee' ARCHIVE_BASE_13_SIZE='1426939' ARCHIVE_BASE_13_VERSION='5.2a-gog79719' ARCHIVE_BASE_13_URL='https://www.gog.com/game/primordia' ARCHIVE_BASE_12_NAME='primordia_4_0b_79076.sh' ARCHIVE_BASE_12_MD5='34d1bb696c4ff865a76ba0d06f978def' ARCHIVE_BASE_12_SIZE='1426936' ARCHIVE_BASE_12_VERSION='4.0b-gog79076' ARCHIVE_BASE_11_NAME='primordia_4_0a_77194.sh' ARCHIVE_BASE_11_MD5='75efd6a2e3344a3bc22cbf69459ea79f' ARCHIVE_BASE_11_SIZE='1426936' ARCHIVE_BASE_11_VERSION='4.0a-gog77194' ARCHIVE_BASE_10_NAME='primordia_4_0_75697.sh' ARCHIVE_BASE_10_MD5='cbe5608e47f6bf70364208f686e55161' ARCHIVE_BASE_10_SIZE='1426935' ARCHIVE_BASE_10_VERSION='4.0-gog75697' ARCHIVE_BASE_9_NAME='primordia_3_9_75550.sh' ARCHIVE_BASE_9_MD5='d28470e41889897e45d0f6f400517499' ARCHIVE_BASE_9_SIZE='1426932' ARCHIVE_BASE_9_VERSION='3.9-gog75550' ARCHIVE_BASE_8_NAME='primordia_3_8_75071.sh' ARCHIVE_BASE_8_MD5='6f184b62fb442f7e6f0f791bc51717f0' ARCHIVE_BASE_8_SIZE='1426930' ARCHIVE_BASE_8_VERSION='3.8-gog75071' ARCHIVE_BASE_7_NAME='primordia_3_7_73438.sh' ARCHIVE_BASE_7_MD5='8bae6792e72a9ac69263b6eb4f0e03e6' ARCHIVE_BASE_7_SIZE='1426929' ARCHIVE_BASE_7_VERSION='3.7-gog73438' ARCHIVE_BASE_6_NAME='primordia_3_6_70667.sh' ARCHIVE_BASE_6_MD5='dc254ed674114e4776a91454e35d3741' ARCHIVE_BASE_6_SIZE='1426928' ARCHIVE_BASE_6_VERSION='3.6-gog70667' ARCHIVE_BASE_5_NAME='primordia_3_6_70159.sh' ARCHIVE_BASE_5_MD5='d1f9eeec2084933463d1b43b5466f5f1' ARCHIVE_BASE_5_SIZE='1426928' ARCHIVE_BASE_5_VERSION='3.6-gog70159' ARCHIVE_BASE_4_NAME='primordia_3_5b_69802.sh' ARCHIVE_BASE_4_MD5='b3ca4bfa8341f68ec6eb2d6c36f36e0f' ARCHIVE_BASE_4_SIZE='1426833' ARCHIVE_BASE_4_VERSION='3.5b-gog69802' ARCHIVE_BASE_3_NAME='primordia_3_5a_69504.sh' ARCHIVE_BASE_3_MD5='62d64492018c9b7fe020303040c5dbe9' ARCHIVE_BASE_3_SIZE='1427316' ARCHIVE_BASE_3_VERSION='3.5a-gog69504' ARCHIVE_BASE_2_NAME='primordia_3_0a_65125.sh' ARCHIVE_BASE_2_MD5='5b096e36b814c16c0ce067046e194c94' ARCHIVE_BASE_2_SIZE='1500000' ARCHIVE_BASE_2_VERSION='3.0a-gog65125' ARCHIVE_BASE_1_NAME='primordia_3_58594.sh' ARCHIVE_BASE_1_MD5='3cd92a7767d561f2d982014117ee0576' ARCHIVE_BASE_1_SIZE='1500000' ARCHIVE_BASE_1_VERSION='3.0-gog58594' ARCHIVE_BASE_0_NAME='primordia_italian_53699.sh' ARCHIVE_BASE_0_MD5='812917de017fde37b1c448f156e4ae7d' ARCHIVE_BASE_0_SIZE='1500000' ARCHIVE_BASE_0_VERSION='2.6-gog53699' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='primordia_icons.tar.xz' ARCHIVE_OPTIONAL_ICONS_MD5='66c1d186075708574ee870a9015b4ff6' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/primordia/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 24x24 32x32 48x48 256x256' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' ENGV.tmp Music Sounds *.ags *.cfg *.exe *.ogv *.tra *.vox' CONTENT_DOC_MAIN_FILES=' licenses' APP_MAIN_SCUMMID='ags:primordia' APP_MAIN_ICON='../support/icon.png' APP_MAIN_ICON_2='Primordia.exe' APP_MAIN_ICON_1='Primordia.exe' APP_MAIN_ICON_0='Primordia.exe' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-prince-of-persia-the-sands-of-time.sh0000755000000000000000000001141314471751340020545 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=20241125.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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='1408358' 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='1413339' 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=' binkw32.dll detectionapi.dll directx8tests.dll directx9tests.dll eax.dll mfc71.dll msvcp71.dll msvcr71.dll pop.exe princeofpersia.exe directxtests.tst systemtests.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 problems APP_MAIN_PRERUN=' # Work around fog rendering problems config_file="Hardware.ini" dos2unix --quiet "$config_file" sed \ --in-place \ --expression="s/InvertFogRange=.*/InvertFogRange=0/" \ "$config_file" unix2dos --quiet "$config_file" ' ## Work around an override of configuration file APP_MAIN_POSTRUN=' # Work around an override of configuration file config_file="Hardware.ini" config_file_persistent="${PATH_PERSISTENT}/${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_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' ## Work around fog rendering problems 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" PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' ## 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" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME0_BIN')" # Work around case-related problems caused by file deletion-creation instead of in-place edition mv 'hardware.ini' 'Hardware.ini' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-pyre.sh0000755000000000000000000000672714471751340013153 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Pyre ### script_version=20241027.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='pyre' GAME_NAME='Pyre' ARCHIVE_BASE_ITCH_1_NAME='pyre-linux.zip' ARCHIVE_BASE_ITCH_1_MD5='44e0fe30a9d8bcf73c4fa288dd4324ab' ARCHIVE_BASE_ITCH_1_SIZE='8051755' ARCHIVE_BASE_ITCH_1_VERSION='1.50476-itch.2019.03.19' ARCHIVE_BASE_ITCH_1_URL='https://supergiant-games.itch.io/pyre' ARCHIVE_BASE_GOG_1_NAME='pyre_1_50427_11957_23366.sh' ARCHIVE_BASE_GOG_1_MD5='ae34d8b4c069ffd7a98f295af4596e1f' ARCHIVE_BASE_GOG_1_SIZE='8104850' ARCHIVE_BASE_GOG_1_VERSION='1.50427-gog23366' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/pyre' ARCHIVE_BASE_GOG_0_NAME='pyre_en_1_0_18732.sh' ARCHIVE_BASE_GOG_0_MD5='83ea264e95e2519aba72078d35290d49' ARCHIVE_BASE_GOG_0_SIZE='8100000' ARCHIVE_BASE_GOG_0_VERSION='1.0-gog18732' CONTENT_PATH_DEFAULT_ITCH='.' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_LIBS_FILES=' libBink2.so libFModPlugins.so libfmod.so.8 libfmodstudio.so.8 liblua52.so libMonoPosixHelper.so' CONTENT_LIBS_BIN64_RELATIVE_PATH='lib64' CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_BIN32_RELATIVE_PATH='lib' CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_BIN64_FILES=' Pyre.bin.x86_64' CONTENT_GAME_BIN32_FILES=' Pyre.bin.x86' CONTENT_GAME_DATA_FILES=' gamecontrollerdb.txt monoconfig monomachineconfig Content *.bmp *.config *.cur *.dll *.exe *.pdb *.xml' CONTENT_DOC_DATA_FILES=' Linux.README ReadMe.txt' ## The shipped binaries are used instead of system-provided Mono to avoid a crash on initial loading. ## See notes/pyre for more details. APP_MAIN_EXE_BIN64='Pyre.bin.x86_64' APP_MAIN_EXE_BIN32='Pyre.bin.x86' APP_MAIN_ICON='PyreIcon.bmp' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libSDL2_image-2.0.so.0 libstdc++.so.6 libudev.so.1 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Apply common Mono tweaks. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(mono_launcher_tweaks)" launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-raji-an-ancient-epic.sh0000755000000000000000000001012114471751340016031 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=20241226.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='raji-an-ancient-epic' GAME_NAME='Raji: An Ancient Epic' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" # Archives ## Raji: An Ancient Epic (full game) ARCHIVE_BASE_1_NAME='setup_raji_an_ancient_epic_1.6.0_(64bit)_(57469).exe' ARCHIVE_BASE_1_MD5='d05e588d8f7a32b5471a0c193ca10adb' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_raji_an_ancient_epic_1.6.0_(64bit)_(57469)-1.bin' ARCHIVE_BASE_1_PART1_MD5='84f8c041aba726936ce450c481a1962c' ARCHIVE_BASE_1_PART2_NAME='setup_raji_an_ancient_epic_1.6.0_(64bit)_(57469)-2.bin' ARCHIVE_BASE_1_PART2_MD5='3dc293acb794752426baa2e6174b25dc' ARCHIVE_BASE_1_SIZE='6400000' ARCHIVE_BASE_1_VERSION='1.6.0-gog57469' ARCHIVE_BASE_1_URL='https://www.gog.com/game/raji_an_ancient_epic' ARCHIVE_BASE_0_NAME='setup_raji_an_ancient_epic_1.4.0_(64bit)_(45493).exe' ARCHIVE_BASE_0_MD5='5defde7fed6a972c5f40f7b58a4631a9' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_raji_an_ancient_epic_1.4.0_(64bit)_(45493)-1.bin' ARCHIVE_BASE_0_PART1_MD5='db0573d9b6647e12989ef8d46842bdce' ARCHIVE_BASE_0_PART2_NAME='setup_raji_an_ancient_epic_1.4.0_(64bit)_(45493)-2.bin' ARCHIVE_BASE_0_PART2_MD5='dfabd86fda6c240335eea1d2338c6b5f' ARCHIVE_BASE_0_SIZE='5900000' ARCHIVE_BASE_0_VERSION='1.4.0-gog45493' ## Raji: An Ancient Epic (demo) ARCHIVE_BASE_DEMO_0_NAME='Raji Demo v11.zip' ARCHIVE_BASE_DEMO_0_MD5='b021b724963d80b4e4690fe096969a32' ARCHIVE_BASE_DEMO_0_SIZE='3100000' ARCHIVE_BASE_DEMO_0_VERSION='11-itch.2020.10.21' ARCHIVE_BASE_DEMO_0_URL='https://rajithegame.itch.io/raji-an-ancient-epic' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='raji-an-ancient-epic_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='befa06adad5d44a2946cc19f54b0a267' ARCHIVE_OPTIONAL_ICONS_URL='http://downloads.dotslashplay.it/games/raji-an-ancient-epic/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 256x256' UNREALENGINE4_NAME='raji' UNREALENGINE4_NAME_DEMO='Raji' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_DEMO='Raji Demo v11' APP_MAIN_EXE="${UNREALENGINE4_NAME}.exe" APP_MAIN_EXE_DEMO="${UNREALENGINE4_NAME_DEMO}.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. ## TODO: Check if it is still required with current WINE builds APP_MAIN_OPTIONS='-d3d11' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Convert icon file name for the game demo, ## if it has been provided by the optional icons archive case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) icon_source="$(package_path 'PKG_DATA')$(path_icons)/256x256/apps/${GAME_ID}.png" icon_destination="$(package_path 'PKG_DATA')$(path_icons)/256x256/apps/$(game_id).png" if [ -e "$icon_source" ]; then mv "$icon_source" "$icon_destination" fi ;; esac # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-rayman-1.sh0000755000000000000000000000627614471751340013620 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Rayman ### script_version=20250103.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='rayman-1' GAME_NAME='Rayman' ARCHIVE_BASE_1_NAME='setup_rayman_forever_1.21_(28045).exe' ARCHIVE_BASE_1_MD5='304cca5f14923730c76bb61f669be575' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='279703' ARCHIVE_BASE_1_VERSION='1.21-gog28045' ARCHIVE_BASE_1_URL='https://www.gog.com/game/rayman_forever' ARCHIVE_BASE_0_NAME='setup_rayman_forever_2.0.0.15.exe' ARCHIVE_BASE_0_MD5='96e71ea03261646f7f5ce4cb27d6a222' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='290000' ARCHIVE_BASE_0_VERSION='1.21-gog2.0.0.15' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_MAIN_FILES=' game.gog game.ins music rayfan raykit rayman' CONTENT_DOC_DATA_FILES=' manual.pdf' GAME_IMAGE='game.ins' USER_PERSISTENT_FILES=' rayman/vignet.dat *.cfg *.SAV' APP_MAIN_EXE='rayman/rayman.exe' APP_MAIN_OPTIONS='save=C:\rayman' APP_MAIN_ICON='goggame-1207658919.ico' APP_MAIN_ICON_0='gfw_high.ico' ## Use fixed cpu cycles, to improve performances APP_MAIN_DOSBOX_PRERUN=' config -set cpu cycles=fixed 80000 ' APP_FAN_ID="${GAME_ID}-rayfan" APP_FAN_NAME="$GAME_NAME - Rayman by his Fans" APP_FAN_EXE='rayfan/rayfan.exe' APP_FAN_OPTIONS='ver=usa' APP_FAN_ICON='rayfan/rayfan.ico' ## Use fixed cpu cycles, to improve performances APP_FAN_DOSBOX_PRERUN=' config -set cpu cycles=fixed 20000 ' APP_KIT_ID="${GAME_ID}-raykit" APP_KIT_NAME="$GAME_NAME - Rayman Designer" APP_KIT_EXE='raykit/raykit.exe' APP_KIT_OPTIONS='ver=usa' APP_KIT_ICON='raykit/raykit.ico' ## Use fixed cpu cycles, to improve performances APP_KIT_DOSBOX_PRERUN=' config -set cpu cycles=fixed 20000 ' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Force the name of the disk image table of contents if [ -e 'game.inst' ]; then mv 'game.inst' "$GAME_IMAGE" fi ) # Include game data content_inclusion_icons content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { local application application="$1" local application_exe application_options application_exe=$(application_exe "$application") application_options=$(application_options "$application") cat <<- EOF cd $(dirname "$application_exe") $(basename "$application_exe") $application_options \$@ EOF } launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-rayman-origins.sh0000755000000000000000000001061714471751340015124 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Rayman Origins ### script_version=20241027.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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' ## These documentation files are not provided by the Humble Bundle archive CONTENT_DOC_DATA_RELATIVE_PATH_GOG='support' CONTENT_DOC_DATA_FILES_GOG=' *.pdf *.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Rayman Origins' ## Work around rendering issues making the game menu unusable. WINE_WINETRICKS_VERBS='d3dcompiler_47' APPLICATIONS_LIST='APP_MAIN' APPLICATIONS_LIST_GOG="$APPLICATIONS_LIST APP_L10N" APP_MAIN_EXE='rayman origins.exe' ## This application is only provided by the gog.com archive. APP_L10N_ID="${GAME_ID}-language-setup" APP_L10N_NAME="${GAME_NAME} - Language setup" APP_L10N_CAT='Settings' APP_L10N_EXE='language_setup.exe' APP_L10N_ICON='rayman origins.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Set extra tools required to extract data from the Humble Bundle archive ## Warning: REQUIREMENTS_LIST has no support for contextual values as of ./play.it 2.31 REQUIREMENTS_LIST_HUMBLE="${REQUIREMENTS_LIST:-} dd truncate unshield" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Check for the availability of the extra tools required to extract data from the Humble Bundle archive REQUIREMENTS_LIST=$(context_value 'REQUIREMENTS_LIST') requirements_check # Extract game data archive_extraction_default case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE'*) ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/RaymondOrigins_windows/Rayman Origins.exe" information_archive_data_extraction "$(archive_name 'ARCHIVE_INNER')" ( cd "${PLAYIT_WORKDIR}/gamedata" archive_path=$(archive_path 'ARCHIVE_INNER') dd \ if="$archive_path" \ of='data1.hdr' \ bs=3 skip=7740856 count=11107 2>/dev/null dd \ if="$archive_path" \ of='data1.cab' \ bs=8 skip=2655105 count=247706 2>/dev/null ## The extraction of data2.cab is done in two steps with big block size values. ## This is a big file that would take a lot of time to get using a small block size. dd \ if="$archive_path" \ of='data2.cab' \ bs=567219 skip=41 2>/dev/null rm "$archive_path" truncate --io-blocks --size=2125482963 'data2.cab' ) ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/data1.hdr" ARCHIVE_INNER_TYPE='installshield' archive_extraction 'ARCHIVE_INNER' rm \ "${PLAYIT_WORKDIR}/gamedata/data1.hdr" \ "${PLAYIT_WORKDIR}/gamedata/data1.cab" \ "${PLAYIT_WORKDIR}/gamedata/data2.cab" ;; esac # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-realmyst.sh0000755000000000000000000000416014471751340014021 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2020 Fabien Givors set -o errexit ### # realMyst: Masterpiece Edition ### script_version=20250112.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='myst-1-realmyst-masterpiece-edition' GAME_NAME='realMyst: Masterpiece Edition' ARCHIVE_BASE_0_NAME='setup_real_myst_masterpiece_edition_2.2_rev_10535_(64bit)_(23829).exe' ARCHIVE_BASE_0_MD5='fcb23e0256ab826e9a2ba9cad00d9a66' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_real_myst_masterpiece_edition_2.2_rev_10535_(64bit)_(23829)-1.bin' ARCHIVE_BASE_0_PART1_MD5='038b24ec51a18b325574293d7f2d0ec2' ARCHIVE_BASE_0_VERSION='2.2.10535-gog23829' ARCHIVE_BASE_0_SIZE='2800000' ARCHIVE_BASE_0_URL='https://www.gog.com/game/real_myst_masterpiece_edition' UNITY3D_NAME='realmyst' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Cyan Worlds/realMyst' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-renowned-explorers-expansions.sh0000755000000000000000000002130314471751340020206 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Renowned Explorers: International Society expansions: # - More To Explore # - The Emperor's Challenge ### script_version=20250401.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='renowned-explorers' GAME_NAME='Renowned Explorers: International Society' 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_LINUX_7_NAME='renowned_explorers_international_society_more_to_explore_dlc_522_26056.sh' ARCHIVE_BASE_MORETOEXPLORE_LINUX_7_MD5='46b6534ff70a9efa4fc21b2ba139b52f' ARCHIVE_BASE_MORETOEXPLORE_LINUX_7_SIZE='68263' ARCHIVE_BASE_MORETOEXPLORE_LINUX_7_VERSION='522-gog26056' ARCHIVE_BASE_MORETOEXPLORE_LINUX_7_URL='https://www.gog.com/game/renowned_explorers_more_to_explore' ARCHIVE_BASE_MORETOEXPLORE_LINUX_6_NAME='renowned_explorers_international_society_more_to_explore_dlc_520_25983.sh' ARCHIVE_BASE_MORETOEXPLORE_LINUX_6_MD5='3d3e97fc73e63ac992c9afa9f620282e' ARCHIVE_BASE_MORETOEXPLORE_LINUX_6_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_LINUX_6_VERSION='520-gog25983' ARCHIVE_BASE_MORETOEXPLORE_LINUX_5_NAME='renowned_explorers_international_society_more_to_explore_dlc_516_25864.sh' ARCHIVE_BASE_MORETOEXPLORE_LINUX_5_MD5='db21406827c77caecb92c96bb2f4e473' ARCHIVE_BASE_MORETOEXPLORE_LINUX_5_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_LINUX_5_VERSION='516-gog25864' ARCHIVE_BASE_MORETOEXPLORE_LINUX_4_NAME='renowned_explorers_international_society_more_to_explore_dlc_512_25169.sh' ARCHIVE_BASE_MORETOEXPLORE_LINUX_4_MD5='94112f4cfc91fa67855a310618bdeacf' ARCHIVE_BASE_MORETOEXPLORE_LINUX_4_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_LINUX_4_VERSION='512-gog25169' ARCHIVE_BASE_MORETOEXPLORE_LINUX_3_NAME='renowned_explorers_international_society_more_to_explore_dlc_508_23701.sh' ARCHIVE_BASE_MORETOEXPLORE_LINUX_3_MD5='5f43443fc81111bc27461e39145c6db6' ARCHIVE_BASE_MORETOEXPLORE_LINUX_3_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_LINUX_3_VERSION='508-gog23701' ARCHIVE_BASE_MORETOEXPLORE_LINUX_2_NAME='renowned_explorers_international_society_more_to_explore_dlc_503_23529.sh' ARCHIVE_BASE_MORETOEXPLORE_LINUX_2_MD5='058fa329bbeeb0f8b3a3e7e60dc472bf' ARCHIVE_BASE_MORETOEXPLORE_LINUX_2_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_LINUX_2_VERSION='503-gog23529' ARCHIVE_BASE_MORETOEXPLORE_LINUX_1_NAME='renowned_explorers_more_to_explore_dlc_en_489_20916.sh' ARCHIVE_BASE_MORETOEXPLORE_LINUX_1_MD5='cc51077bdcb04086349f81da8b1d19ff' ARCHIVE_BASE_MORETOEXPLORE_LINUX_1_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_LINUX_1_VERSION='489-gog20916' ARCHIVE_BASE_MORETOEXPLORE_LINUX_0_NAME='renowned_explorers_more_to_explore_dlc_en_466_15616.sh' ARCHIVE_BASE_MORETOEXPLORE_LINUX_0_MD5='c99ca440cb312b90052939db49aeef03' ARCHIVE_BASE_MORETOEXPLORE_LINUX_0_SIZE='69000' ARCHIVE_BASE_MORETOEXPLORE_LINUX_0_VERSION='466-gog15616' ARCHIVE_BASE_MORETOEXPLORE_WINDOWS_0_NAME='setup_renowned_explorers_more_to_explore_525_(46550).exe' ARCHIVE_BASE_MORETOEXPLORE_WINDOWS_0_MD5='cad29861f3bd3a74e0f8848a31f56845' ARCHIVE_BASE_MORETOEXPLORE_WINDOWS_0_TYPE='innosetup' ARCHIVE_BASE_MORETOEXPLORE_WINDOWS_0_SIZE='74726' ARCHIVE_BASE_MORETOEXPLORE_WINDOWS_0_VERSION='525-gog46550' ARCHIVE_BASE_MORETOEXPLORE_WINDOWS_0_URL='https://www.gog.com/game/renowned_explorers_more_to_explore' ## The Emperor's Challenge ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_7_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_522_26056.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_7_MD5='e87af99e5a726b06ee5b94d7f94d9f5a' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_7_SIZE='21170' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_7_VERSION='522-gog26056' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_7_URL='https://www.gog.com/game/renowned_explorers_the_emperors_challenge' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_6_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_520_25983.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_6_MD5='a2ea1ff34a78c9d3cb389373b6948604' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_6_SIZE='22000' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_6_VERSION='520-gog25983' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_5_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_516_25864.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_5_MD5='cd76b4c9b334d5b859c4dff171ec4c0f' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_5_SIZE='22000' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_5_VERSION='516-gog25864' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_4_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_512_25169.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_4_MD5='b402cec7fbc05fec42be3ae4ff1a26ec' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_4_SIZE='22000' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_4_VERSION='512-gog25169' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_3_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_508_23701.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_3_MD5='7f0b5df5318af767bfb306bd4e3f1e13' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_3_SIZE='22000' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_3_VERSION='508-gog23701' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_2_NAME='renowned_explorers_international_society_the_emperors_challenge_dlc_503_23529.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_2_MD5='fb2c6bc1201a3346c47e01f0e7aa136c' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_2_SIZE='22000' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_2_VERSION='503-gog23529' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_1_NAME='renowned_explorers_the_emperor_s_challenge_dlc_en_489_20916.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_1_MD5='553e0fa1ffed73c9c99022c20cfff707' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_1_SIZE='23000' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_1_VERSION='489-gog20916' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_0_NAME='renowned_explorers_the_emperor_s_challenge_dlc_en_466_15616.sh' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_0_MD5='12baa49b557c92e2f5eae7ff99623d34' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_0_SIZE='23000' ARCHIVE_BASE_EMPERORSCHALLENGE_LINUX_0_VERSION='466-gog15616' ARCHIVE_BASE_EMPERORSCHALLENGE_WINDOWS_0_NAME='setup_renowned_explorers_the_emperors_challenge_525_(46550).exe' ARCHIVE_BASE_EMPERORSCHALLENGE_WINDOWS_0_MD5='13bb9e6b93eb98268f6a4be96d67c88a' ARCHIVE_BASE_EMPERORSCHALLENGE_WINDOWS_0_TYPE='innosetup' ARCHIVE_BASE_EMPERORSCHALLENGE_WINDOWS_0_SIZE='27910' ARCHIVE_BASE_EMPERORSCHALLENGE_WINDOWS_0_VERSION='525-gog46550' ARCHIVE_BASE_EMPERORSCHALLENGE_WINDOWS_0_URL='https://www.gog.com/game/renowned_explorers_the_emperors_challenge' CONTENT_PATH_DEFAULT_LINUX='data/noarch/game' CONTENT_PATH_DEFAULT_WINDOWS='.' CONTENT_PATH_DEFAULT_MORETOEXPLORE_LINUX="$CONTENT_PATH_DEFAULT_LINUX" CONTENT_PATH_DEFAULT_MORETOEXPLORE_WINDOWS="$CONTENT_PATH_DEFAULT_WINDOWS" CONTENT_PATH_DEFAULT_EMPERORSCHALLENGE_LINUX="$CONTENT_PATH_DEFAULT_LINUX" CONTENT_PATH_DEFAULT_EMPERORSCHALLENGE_WINDOWS="$CONTENT_PATH_DEFAULT_WINDOWS" CONTENT_GAME_MAIN_FILES=' data/dlc_???.tim' PKG_PARENT_ID_LINUX="${GAME_ID}-bin-linux" PKG_PARENT_ID_WINDOWS="${GAME_ID}-bin-windows" PKG_PARENT_ID_MORETOEXPLORE_LINUX="$PKG_PARENT_ID_LINUX" PKG_PARENT_ID_MORETOEXPLORE_WINDOWS="$PKG_PARENT_ID_WINDOWS" PKG_PARENT_ID_EMPERORSCHALLENGE_LINUX="$PKG_PARENT_ID_LINUX" PKG_PARENT_ID_EMPERORSCHALLENGE_WINDOWS="$PKG_PARENT_ID_WINDOWS" PKG_MAIN_ID_MORETOEXPLORE="${GAME_ID}-${EXPANSION_ID_MORETOEXPLORE}" PKG_MAIN_ID_MORETOEXPLORE_LINUX="${PKG_MAIN_ID_MORETOEXPLORE}-linux" PKG_MAIN_ID_MORETOEXPLORE_WINDOWS="${PKG_MAIN_ID_MORETOEXPLORE}-windows" PKG_MAIN_ID_EMPERORSCHALLENGE="${GAME_ID}-${EXPANSION_ID_EMPERORSCHALLENGE}" PKG_MAIN_ID_EMPERORSCHALLENGE_LINUX="${PKG_MAIN_ID_EMPERORSCHALLENGE}-linux" PKG_MAIN_ID_EMPERORSCHALLENGE_WINDOWS="${PKG_MAIN_ID_EMPERORSCHALLENGE}-windows" PKG_MAIN_PROVIDES_MORETOEXPLORE=" $PKG_MAIN_ID_MORETOEXPLORE" PKG_MAIN_PROVIDES_EMPERORSCHALLENGE=" $PKG_MAIN_ID_EMPERORSCHALLENGE" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-renowned-explorers.sh0000755000000000000000000001612214471751340016024 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: International Society ### script_version=20250104.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='renowned-explorers' GAME_NAME='Renowned Explorers: International Society' ARCHIVE_BASE_LINUX_9_NAME='renowned_explorers_international_society_522_26056.sh' ARCHIVE_BASE_LINUX_9_MD5='fe38ae1c4dc2607923cc2a60019bff38' ARCHIVE_BASE_LINUX_9_SIZE='1107554' ARCHIVE_BASE_LINUX_9_VERSION='522-gog26056' ARCHIVE_BASE_LINUX_9_URL='https://www.gog.com/game/renowned_explorers' ARCHIVE_BASE_LINUX_8_NAME='renowned_explorers_international_society_520_25983.sh' ARCHIVE_BASE_LINUX_8_MD5='2af1dedb29ac1b929971cc0912722760' ARCHIVE_BASE_LINUX_8_SIZE='1200000' ARCHIVE_BASE_LINUX_8_VERSION='520-gog25983' ARCHIVE_BASE_LINUX_7_NAME='renowned_explorers_international_society_516_25864.sh' ARCHIVE_BASE_LINUX_7_MD5='d868d4b76613b93a94650b750a52752f' ARCHIVE_BASE_LINUX_7_SIZE='1200000' ARCHIVE_BASE_LINUX_7_VERSION='516-gog25864' ARCHIVE_BASE_LINUX_6_NAME='renowned_explorers_international_society_512_25169.sh' ARCHIVE_BASE_LINUX_6_MD5='3f2eb242da5200a78c53162d152a3cac' ARCHIVE_BASE_LINUX_6_SIZE='1100000' ARCHIVE_BASE_LINUX_6_VERSION='512-gog25169' ARCHIVE_BASE_LINUX_5_NAME='renowned_explorers_international_society_508_23701.sh' ARCHIVE_BASE_LINUX_5_MD5='247551613c7aba4b4b31f7a98fa31949' ARCHIVE_BASE_LINUX_5_SIZE='1100000' ARCHIVE_BASE_LINUX_5_VERSION='508-gog23701' ARCHIVE_BASE_LINUX_4_NAME='renowned_explorers_international_society_503_23529.sh' ARCHIVE_BASE_LINUX_4_MD5='6b7555749bc89cc3dda223e2d43bd838' ARCHIVE_BASE_LINUX_4_SIZE='1100000' ARCHIVE_BASE_LINUX_4_VERSION='503-gog23529' ARCHIVE_BASE_LINUX_3_NAME='renowned_explorers_international_society_en_489_21590.sh' ARCHIVE_BASE_LINUX_3_MD5='9fb2cbe095d437d788eb8ec6402db20b' ARCHIVE_BASE_LINUX_3_SIZE='1100000' ARCHIVE_BASE_LINUX_3_VERSION='489-gog21590' ARCHIVE_BASE_LINUX_2_NAME='renowned_explorers_international_society_en_489_20916.sh' ARCHIVE_BASE_LINUX_2_MD5='42d0ecb54d8302545e78f41ed43acef6' ARCHIVE_BASE_LINUX_2_SIZE='1100000' ARCHIVE_BASE_LINUX_2_VERSION='489-gog20916' ARCHIVE_BASE_LINUX_1_NAME='renowned_explorers_international_society_en_466_15616.sh' ARCHIVE_BASE_LINUX_1_MD5='fbad4b4d361a0e7d29b9781e3c5a5e85' ARCHIVE_BASE_LINUX_1_SIZE='1100000' ARCHIVE_BASE_LINUX_1_VERSION='466-gog15616' ARCHIVE_BASE_LINUX_0_NAME='renowned_explorers_international_society_en_459_14894.sh' ARCHIVE_BASE_LINUX_0_MD5='ff6b368b3919002d2db750213d33fcef' ARCHIVE_BASE_LINUX_0_SIZE='1100000' ARCHIVE_BASE_LINUX_0_VERSION='459-gog14894' ARCHIVE_BASE_WINDOWS_0_NAME='setup_renowned_explorers_international_society_525_(64bit)_(46550).exe' ARCHIVE_BASE_WINDOWS_0_MD5='dbb958ec50e3e39d282a92dac1b0953a' ARCHIVE_BASE_WINDOWS_0_TYPE='innosetup' ARCHIVE_BASE_WINDOWS_0_SIZE='1114877' ARCHIVE_BASE_WINDOWS_0_VERSION='525-gog46550' ARCHIVE_BASE_WINDOWS_0_URL='https://www.gog.com/game/renowned_explorers' CONTENT_PATH_DEFAULT_LINUX='data/noarch/game' CONTENT_PATH_DEFAULT_WINDOWS='.' CONTENT_GAME_BIN64_FILES_LINUX=' x86_64/abbeycore' CONTENT_GAME_BIN64_FILES_WINDOWS=' win64/amd_ags_x64.dll win64/d3d11.dll win64/d3dcompiler_47.dll win64/dxgi.dll win64/abbeycore_win32.exe' ## TODO: Check if the Galaxy libraries are required CONTENT_GAME0_BIN64_FILES_WINDOWS=' win64/galaxy64.dll win64/galaxypeer64.dll win64/goggalaxyhooks.dll' CONTENT_GAME_BIN32_FILES_LINUX=' x86/abbeycore' CONTENT_GAME_BIN32_FILES_WINDOWS=' win32/amd_ags_x86.dll win32/d3d11.dll win32/d3dcompiler_47.dll win32/dxgi.dll win32/abbeycore_win32.exe' ## TODO: Check if the Galaxy libraries are required CONTENT_GAME0_BIN32_FILES_WINDOWS=' win32/galaxy.dll win32/galaxypeer.dll win32/goggalaxyhooks.dll' CONTENT_GAME_DATA_FILES=' data soundbanks settings.ini *.bni' ## The game renders only a black screen and the mouse cursor ## when using the default wined3d renderer (WINE 10.0). WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Renowned Explorers International Society' ## The game seems to save files randomly in either "savedata" or "userdata". ## We save both, even if it will probably end up using only one. USER_PERSISTENT_DIRECTORIES_LINUX=' savedata userdata' APP_MAIN_EXE_BIN64_LINUX='x86_64/abbeycore' APP_MAIN_EXE_BIN64_WINDOWS='win64/abbeycore_win32.exe' APP_MAIN_EXE_BIN32_LINUX='x86/abbeycore' APP_MAIN_EXE_BIN32_WINDOWS='win32/abbeycore_win32.exe' APP_MAIN_ICON_LINUX='../support/icon.png' APP_MAIN_ICON_WINDOWS='app/goggame-1435329098.ico' ## Work around inconsistent behaviour with some locales APP_MAIN_PRERUN=' # Work around inconsistent behaviour with some locales export LANG=C ' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN_ID="${GAME_ID}-bin" PKG_BIN_ID_LINUX="${PKG_BIN_ID}-linux" PKG_BIN_ID_WINDOWS="${PKG_BIN_ID}-windows" PKG_BIN64_ID_LINUX="$PKG_BIN_ID_LINUX" PKG_BIN64_ID_WINDOWS="$PKG_BIN_ID_WINDOWS" PKG_BIN32_ID_LINUX="$PKG_BIN_ID_LINUX" PKG_BIN32_ID_WINDOWS="$PKG_BIN_ID_WINDOWS" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN64_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN32_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES_LINUX=' libc++abi.so.1 libc++.so.1 libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_BIN64_DEPENDENCIES_LIBRARIES_LINUX="$PKG_BIN_DEPENDENCIES_LIBRARIES_LINUX" PKG_BIN32_DEPENDENCIES_LIBRARIES_LINUX="$PKG_BIN_DEPENDENCIES_LIBRARIES_LINUX" ## Ensure easy upgrades from packages generated with pre-20250104.1 game scripts PKG_BIN_PROVIDES="${PKG_BIN_PROVIDES:-} renowned-explorers" PKG_BIN64_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN32_PROVIDES="$PKG_BIN_PROVIDES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_LINUX="${PKG_DATA_ID}-linux" PKG_DATA_ID_WINDOWS="${PKG_DATA_ID}-windows" PKG_DATA_PROVIDES=" $PKG_DATA_ID" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers APP_MAIN_EXE_BIN64=$(context_value 'APP_MAIN_EXE_BIN64') APP_MAIN_EXE_BIN32=$(context_value 'APP_MAIN_EXE_BIN32') launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-return-to-monkey-island.sh0000755000000000000000000000413714471751340016674 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Return to Monkey Island ### script_version=20241126.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='return-to-monkey-island' GAME_NAME='Return to Monkey Island' ARCHIVE_BASE_0_NAME='return_to_monkey_island_1_5_linux_60417.sh' ARCHIVE_BASE_0_MD5='ef405e58f99c56b69bdd1da811b79580' ARCHIVE_BASE_0_SIZE='4477001' ARCHIVE_BASE_0_VERSION='1.5-gog60417' ARCHIVE_BASE_0_URL='https://www.gog.com/game/return_to_monkey_island' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libfmod.so.13 libfmodstudio.so.13' CONTENT_GAME_BIN_FILES=' Return to Monkey Island' CONTENT_GAME_DATA_FILES=' Resources ReturnToMonkeyIsland.png Weird.ggpack??' APP_MAIN_EXE='Return to Monkey Island' APP_MAIN_ICON='ReturnToMonkeyIsland.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libEGL.so.1 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libuuid.so.1 libX11.so.6 libXi.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-reus.sh0000755000000000000000000000754114471751340013145 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Reus ### script_version=20241027.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='reus' GAME_NAME='Reus' ARCHIVE_BASE_GOG_1_NAME='reus_en_1_6_5_20844.sh' ARCHIVE_BASE_GOG_1_MD5='a768dd2347ac7f6be16ffa9e3f0952c4' ARCHIVE_BASE_GOG_1_SIZE='480000' ARCHIVE_BASE_GOG_1_VERSION='1.6.5-gog20844' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/reus' ARCHIVE_BASE_GOG_0_NAME='gog_reus_2.0.0.2.sh' ARCHIVE_BASE_GOG_0_MD5='25fe7ec93305e804558e4ef8a31fbbf8' ARCHIVE_BASE_GOG_0_SIZE='480000' ARCHIVE_BASE_GOG_0_VERSION='1.5.1-gog2.0.0.2' ARCHIVE_BASE_HUMBLE_1_NAME='reus-linux-1.6.5.tar.gz' ARCHIVE_BASE_HUMBLE_1_MD5='2b61251f7aa41542db03a1fe637b57dc' ARCHIVE_BASE_HUMBLE_1_SIZE='480000' ARCHIVE_BASE_HUMBLE_1_VERSION='1.6.5-humble180612' ARCHIVE_BASE_HUMBLE_1_URL='https://www.humblebundle.com/store/reus' ARCHIVE_BASE_HUMBLE_0_NAME='reus_linux_1389636757-bin' ARCHIVE_BASE_HUMBLE_0_MD5='9914e7fcb5f3b761941169ae13ec205c' ARCHIVE_BASE_HUMBLE_0_SIZE='380000' ARCHIVE_BASE_HUMBLE_0_VERSION='0.beta-humble140113' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='.' CONTENT_PATH_DEFAULT_HUMBLE_0='data' CONTENT_GAME_MAIN_FILES=' Audio Cursors Effects Fonts MainMenu Particles Settings Skeletons Textures UI Reus.exe Reus.bmp FNA.dll FNA.dll.config Game.*.dll Newtonsoft.Json.dll Reus.*.dll SpaceTech.dll SpaceTech.*.dll SpaceTech.*.dll.config SpaceTech2D.dll' CONTENT_DOC_MAIN_FILES=' Linux.README' ## Include shipped libraries that can not be replaced by system ones. CONTENT_LIBS_FILES=' libFontNative.so libmojoshader.so libtheorafile.so' CONTENT_LIBS_LIBS64_RELATIVE_PATH='lib64' CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES libfmodevent64-4.44.00.so libfmodex64-4.44.00.so" CONTENT_LIBS_LIBS32_RELATIVE_PATH='lib' CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES libfmodevent-4.44.00.so libfmodex-4.44.00.so" APP_MAIN_EXE='Reus.exe' APP_MAIN_ICON='Reus.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libSDL2-2.0.so.0 libSDL2_image-2.0.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Microsoft.CSharp.dll Mono.CSharp.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Design.dll System.Drawing.dll System.Management.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Transactions.dll System.Xml.dll System.Xml.Linq.dll' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libfreetype.so.6 libm.so.6 libogg.so.0 libpthread.so.0 libstdc++.so.6 libtheoradec.so.1 libvorbis.so.0' PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_MAIN' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-roadwarden.sh0000755000000000000000000000552614471751340014316 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Roadwarden ### script_version=20241126.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='roadwarden' GAME_NAME='Roadwarden' ARCHIVE_BASE_4_NAME='roadwarden_1_1_31_67621.sh' ARCHIVE_BASE_4_MD5='c5ce0e6b2b92a0ca49ab0bd06e018957' ARCHIVE_BASE_4_SIZE='867056' ARCHIVE_BASE_4_VERSION='1.1.31-gog67621' ARCHIVE_BASE_4_URL='https://www.gog.com/game/roadwarden' ARCHIVE_BASE_3_NAME='roadwarden_1_1_2_67478.sh' ARCHIVE_BASE_3_MD5='f62eb9f3027ea9b6fb4f76b87cc71471' ARCHIVE_BASE_3_SIZE='867052' ARCHIVE_BASE_3_VERSION='1.1.2-gog67478' ARCHIVE_BASE_2_NAME='roadwarden_1_0_92_63495.sh' ARCHIVE_BASE_2_MD5='1808e2f215bdca65324b909f2706574b' ARCHIVE_BASE_2_SIZE='870000' ARCHIVE_BASE_2_VERSION='1.0.92-gog63495' ARCHIVE_BASE_1_NAME='roadwarden_1_0_9_62941.sh' ARCHIVE_BASE_1_MD5='4fa5f13a40a2ae3e287493298e326e96' ARCHIVE_BASE_1_SIZE='870000' ARCHIVE_BASE_1_VERSION='1.0.9-gog62941' ARCHIVE_BASE_1_URL='https://www.gog.com/game/roadwarden' ARCHIVE_BASE_0_NAME='roadwarden_1_0_8_61761.sh' ARCHIVE_BASE_0_MD5='659218d7803632a38f8e72e4f4f83a26' ARCHIVE_BASE_0_SIZE='870000' ARCHIVE_BASE_0_VERSION='1.0.8-gog61761' CONTENT_PATH_DEFAULT='data/noarch/game/game' CONTENT_FONTS_MAIN_FILES=' munro.ttf philosopher.ttf' CONTENT_GAME_MAIN_FILES=' areas audio cache gui images tl script_version.txt *.png *.rpy *.rpyc *.ttf' APP_MAIN_TYPE='renpy' APP_MAIN_ICON='../../support/icon.png' ## Ensure easy upgrades from packages generated with pre-20240427.1 game scripts. PKG_MAIN_PROVIDES="${PKG_MAIN_PROVIDES:-} roadwarden-data" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default ## Link the fonts in the hardcoded path the game engine expects. fonts_source=$(path_fonts_ttf) fonts_destination="$(package_path "$(current_package)")$(path_game_data)" mkdir --parents "$fonts_destination" for font_file in \ 'munro.ttf' \ 'philosopher.ttf' do ln --symbolic "${fonts_source}/${font_file}" "$fonts_destination" done # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-sales-gosses.sh0000755000000000000000000000506414471751340014575 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Sales Gosses ### script_version=20250111.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='sales-gosses' GAME_NAME='Sales Gosses !' ARCHIVE_BASE_1_NAME='little-brats-3.1-gnunux.tar.gz' ARCHIVE_BASE_1_MD5='0d89b9d55c2873ce0407070d181e03fa' ARCHIVE_BASE_1_SIZE='225679' ARCHIVE_BASE_1_VERSION='3.1-itch.2024.12.28' ARCHIVE_BASE_1_URL='https://ptilouk.itch.io/little-brats' ARCHIVE_BASE_0_NAME='little-brats-2.2-gnunux.tar.gz' ARCHIVE_BASE_0_MD5='d8518a619ccb1391311204557ac9441c' ARCHIVE_BASE_0_SIZE='211184' ARCHIVE_BASE_0_VERSION='2.2-itch.2024.11.12' CONTENT_PATH_DEFAULT_1='little-brats-3.1-gnunux' CONTENT_PATH_DEFAULT_0='little-brats-2.2-gnunux' CONTENT_GAME_BIN_RELATIVE_PATH='lib/little-brats' CONTENT_GAME_BIN_FILES=' little-brats.x86_64' CONTENT_GAME_DATA_RELATIVE_PATH='share/little-brats' CONTENT_GAME_DATA_FILES=' little-brats.pck little-brats-*-resource-pack.pck' APP_MAIN_EXE='little-brats.x86_64' APP_MAIN_OPTIONS='--main-pack "${PWD}/little-brats.pck" --pack-path "${PWD}"' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libm.so.6 libpthread.so.0 librt.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data ## Include the game icon ## TODO: The library should be updated to automatically install .svg files in the "scalable" path install -D --mode=644 --no-target-directory \ "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/share/icons/little-brats.svg" \ "$(package_path 'PKG_DATA')$(path_icons)/scalable/apps/$(game_id).svg" content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-sam-and-max-hit-the-road.sh0000755000000000000000000000516514471751340016555 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2020 macaron set -o errexit ### # Sam and Max Hit the Road ### script_version=20250103.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='sam-and-max-hit-the-road' GAME_NAME='Sam & Max Hit the Road' ARCHIVE_BASE_EN_1_NAME='sam_and_max_hit_the_road_en_gog_2_20100.sh' ARCHIVE_BASE_EN_1_MD5='0771889c051c7e1cc6e6c8e8ca8fbe1f' ARCHIVE_BASE_EN_1_SIZE='390000' ARCHIVE_BASE_EN_1_VERSION='1.0-gog20100' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/sam_max_hit_the_road' ARCHIVE_BASE_FR_1_NAME='sam_and_max_hit_the_road_fr_gog_2_20100.sh' ARCHIVE_BASE_FR_1_MD5='52b35282832b477c7f1bb06688ba3b95' ARCHIVE_BASE_FR_1_SIZE='280000' ARCHIVE_BASE_FR_1_VERSION='1.0-gog20100' ARCHIVE_BASE_FR_1_URL='https://www.gog.com/game/sam_max_hit_the_road' ARCHIVE_BASE_EN_0_NAME='gog_sam_max_hit_the_road_2.0.0.8.sh' ARCHIVE_BASE_EN_0_MD5='00e6de62115b581f01f49354212ce545' ARCHIVE_BASE_EN_0_SIZE='270000' ARCHIVE_BASE_EN_0_VERSION='1.0-gog2.0.0.1' ARCHIVE_BASE_FR_0_NAME='gog_sam_max_hit_the_road_french_2.0.0.8.sh' ARCHIVE_BASE_FR_0_MD5='127be643ebaa9af24ddd9f2618e4433e' ARCHIVE_BASE_FR_0_SIZE='160000' ARCHIVE_BASE_FR_0_VERSION='1.0-gog2.0.0.1' CONTENT_PATH_DEFAULT='data/noarch/data' CONTENT_GAME_MAIN_FILES=' samnmax.000 samnmax.001 monster.so[3fgu]' CONTENT_DOC_MAIN_PATH_EN='data/noarch/docs/english' CONTENT_DOC_MAIN_PATH_FR='data/noarch/docs/french' CONTENT_DOC_MAIN_FILES=' *.pdf' APP_MAIN_SCUMMID='scumm:samnmax' APP_MAIN_ICON='../support/icon.png' PKG_MAIN_ID="$GAME_ID" PKG_MAIN_ID_EN="${PKG_MAIN_ID}-en" PKG_MAIN_ID_FR="${PKG_MAIN_ID}-fr" PKG_MAIN_PROVIDES=" $PKG_MAIN_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-scrapland.sh0000755000000000000000000001035514471751340014133 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Scrapland ### script_version=20250104.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='scrapland' GAME_NAME='Scrapland' ARCHIVE_BASE_0_NAME='setup_scrapland_remastered_1.6.1_(52159).exe' ARCHIVE_BASE_0_MD5='5f1a6494309632a2536c46e2bf3226bc' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_scrapland_remastered_1.6.1_(52159)-1.bin' ARCHIVE_BASE_0_PART1_MD5='93c07bedabd25a0d63c7ae36cf5abd47' ARCHIVE_BASE_0_PART2_NAME='setup_scrapland_remastered_1.6.1_(52159)-2.bin' ARCHIVE_BASE_0_PART2_MD5='8543d603b9c8eb6d666aec35387c311c' ARCHIVE_BASE_0_SIZE='8943631' ARCHIVE_BASE_0_VERSION='1.6.1-gog52159' ARCHIVE_BASE_0_URL='https://www.gog.com/game/scrapland_remastered' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bin dedicated scrap.cfg' CONTENT_GAME_L10N_EN_FILES=' language/english.txt video/bishop.vds video/intro.vds video/mayor.vds video/police.vds video/viscous.vds english.packed' CONTENT_GAME_L10N_FR_FILES=' language/french.txt french.packed' CONTENT_GAME_DATA_FILES=' video/mse.vds video/mse-short.vds data.packed data??.packed' CONTENT_VIDEO_L10N_FR_PATH='video/french' CONTENT_VIDEO_L10N_FR_FILES=' *.vds' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/MercurySteam/Scrapland' ## TODO: Check if the virtual desktop is still required with current WINE WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='bin/scrap.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N_EN PKG_L10N_FR PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/x-msvideo' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_EN_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_FR_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_EN_DESCRIPTION='English localization' PKG_L10N_FR_DESCRIPTION='English localization' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' ## 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" ## Include videos in the French localization content_inclusion 'VIDEO_L10N_FR' 'PKG_L10N_FR' "$(path_game_data)/video" content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd bin $(wine_command) scrap.exe "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation case "$(messages_language)" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_L10N_EN' 'PKG_DATA' 'PKG_BIN' printf "$lang_string" "$lang_fr" print_instructions 'PKG_L10N_FR' 'PKG_DATA' 'PKG_BIN' # Clean up working_directory_cleanup exit 0 games/play-shadow-gambit-expansions.sh0000755000000000000000000000443614471751340017102 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Shadow Gambit expansions: # - Yuki's Wish # - Zagan's Ritual ### script_version=20241023.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='shadow-gambit' GAME_NAME='Shadow Gambit: The Cursed Crew' EXPANSION_ID_YUKI='yukis-wish' EXPANSION_NAME_YUKI='Yuki’s Wish' EXPANSION_ID_ZAGAN='zagans-ritual' EXPANSION_NAME_ZAGAN='Zagan’s Ritual' # Archives ## Yuki's Wish ARCHIVE_BASE_YUKI_0_NAME='setup_shadow_gambit_the_cursed_crew__dlctrp_1.2.133.f.r40893_(64bit)_(69829).exe' ARCHIVE_BASE_YUKI_0_MD5='da9c4f3c92dc2eec996592f3e96acf33' ARCHIVE_BASE_YUKI_0_TYPE='innosetup' ARCHIVE_BASE_YUKI_0_SIZE='7198' ARCHIVE_BASE_YUKI_0_VERSION='1.2.133.f-gog69829' ARCHIVE_BASE_YUKI_0_URL='https://www.gog.com/game/shadow_gambit_yukis_wish' ## Zagan's Ritual ARCHIVE_BASE_ZAGAN_0_NAME='setup_shadow_gambit_the_cursed_crew__dlcchc_1.2.133.f.r40893_(64bit)_(69829).exe' ARCHIVE_BASE_ZAGAN_0_MD5='a715770254fe1f451c616503c19ecb2e' ARCHIVE_BASE_ZAGAN_0_TYPE='innosetup' ARCHIVE_BASE_ZAGAN_0_SIZE='7058' ARCHIVE_BASE_ZAGAN_0_VERSION='1.2.133.f-gog69829' ARCHIVE_BASE_ZAGAN_0_URL='https://www.gog.com/game/shadow_gambit_zagans_ritual' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' goggame-*.info' ## TODO: This could automatically be set by the library when EXPANSION_ID is set PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-shadow-gambit.sh0000755000000000000000000001614414471751340014714 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Shadow Gambit ### script_version=20241023.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='shadow-gambit' GAME_NAME='Shadow Gambit: The Cursed Crew' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='setup_shadow_gambit_the_cursed_crew_1.2.133.f.r40893_(64bit)_(69829).exe' ARCHIVE_BASE_0_MD5='b394c7866b3e2106b8659f76dcf3b814' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ## Do not convert the paths to lower case. ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_PART1_NAME='setup_shadow_gambit_the_cursed_crew_1.2.133.f.r40893_(64bit)_(69829)-1.bin' ARCHIVE_BASE_0_PART1_MD5='33d84cef13cae8cb1a27e03101cda2cc' ARCHIVE_BASE_0_PART2_NAME='setup_shadow_gambit_the_cursed_crew_1.2.133.f.r40893_(64bit)_(69829)-2.bin' ARCHIVE_BASE_0_PART2_MD5='aa475cf51a8a6b9f151a63e7f8acd226' ARCHIVE_BASE_0_PART3_NAME='setup_shadow_gambit_the_cursed_crew_1.2.133.f.r40893_(64bit)_(69829)-3.bin' ARCHIVE_BASE_0_PART3_MD5='8019f8a20edf33e894a49ccc84fdf867' ARCHIVE_BASE_0_PART4_NAME='setup_shadow_gambit_the_cursed_crew_1.2.133.f.r40893_(64bit)_(69829)-4.bin' ARCHIVE_BASE_0_PART4_MD5='d499dd2ab3f31e1ddb7c6b6c6f9d35c7' ARCHIVE_BASE_0_SIZE='27989056' ARCHIVE_BASE_0_VERSION='1.2.133.f-gog69829' ARCHIVE_BASE_0_URL='https://www.gog.com/game/shadow_gambit_the_cursed_crew' ARCHIVE_BASE_DEMO_0_NAME='setup_shadow_gambit_the_cursed_crew_demo_1.0.46.r37840.d_(64bit)_(66564).exe' ARCHIVE_BASE_DEMO_0_MD5='ad6c5d562cb5166301b82311495eb4fc' ARCHIVE_BASE_DEMO_0_EXTRACTOR='innoextract' ## Do not convert the paths to lower case. ARCHIVE_BASE_DEMO_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_DEMO_0_PART1_NAME='setup_shadow_gambit_the_cursed_crew_demo_1.0.46.r37840.d_(64bit)_(66564)-1.bin' ARCHIVE_BASE_DEMO_0_PART1_MD5='2ed0f7c0fe3bcba3cfe562ff687743cc' ARCHIVE_BASE_DEMO_0_PART2_NAME='setup_shadow_gambit_the_cursed_crew_demo_1.0.46.r37840.d_(64bit)_(66564)-2.bin' ARCHIVE_BASE_DEMO_0_PART2_MD5='cf8746aaa4ff9b40366c562367155876' ARCHIVE_BASE_DEMO_0_PART3_NAME='setup_shadow_gambit_the_cursed_crew_demo_1.0.46.r37840.d_(64bit)_(66564)-3.bin' ARCHIVE_BASE_DEMO_0_PART3_MD5='190c8d547cd6f3217a10038079431c9c' ARCHIVE_BASE_DEMO_0_SIZE='15729374' ARCHIVE_BASE_DEMO_0_VERSION='1.0.46-gog66564' ARCHIVE_BASE_DEMO_0_URL='https://www.gog.com/game/shadow_gambit_the_cursed_crew_demo' UNITY3D_NAME='ShadowGambit_TCC' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_EXPANSION_YUKI_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/aa/StandaloneWindows64/dlctrp_content_00" CONTENT_GAME_DATA_EXPANSION_ZAGAN_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/aa/StandaloneWindows64/dlcchc_content_00" CONTENT_GAME_DATA_BUNDLES1_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/aa/StandaloneWindows64/mis_*" CONTENT_GAME_DATA_BUNDLES2_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/aa/StandaloneWindows64/main_*" CONTENT_GAME_DATA_BUNDLES3_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/aa/StandaloneWindows64" WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/ShadowGambit_TCC' WINE_PERSISTENT_DIRECTORIES_DEMO=' users/${USER}/AppData/Local/ShadowGambit_TCC_Demo' PACKAGES_LIST=' PKG_BIN PKG_DATA_EXPANSION_YUKI PKG_DATA_EXPANSION_ZAGAN PKG_DATA_BUNDLES1 PKG_DATA_BUNDLES2 PKG_DATA_BUNDLES3 PKG_DATA' PACKAGES_LIST_DEMO=' PKG_BIN PKG_DATA_BUNDLES1 PKG_DATA_BUNDLES2 PKG_DATA_BUNDLES3 PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_EXPANSION_YUKI PKG_DATA_EXPANSION_ZAGAN PKG_DATA_BUNDLES1 PKG_DATA_BUNDLES2 PKG_DATA_BUNDLES3' PKG_DATA_DEPENDENCIES_SIBLINGS_DEMO=' PKG_DATA_BUNDLES1 PKG_DATA_BUNDLES2 PKG_DATA_BUNDLES3' PKG_DATA_EXPANSION_ID="${PKG_DATA_ID}-expansion" PKG_DATA_EXPANSION_YUKI_ID="${PKG_DATA_EXPANSION_ID}-yuki" PKG_DATA_EXPANSION_ZAGAN_ID="${PKG_DATA_EXPANSION_ID}-zagan" PKG_DATA_EXPANSION_DESCRIPTION="$PKG_DATA_DESCRIPTION - expansion" PKG_DATA_EXPANSION_YUKI_DESCRIPTION="$PKG_DATA_EXPANSION_DESCRIPTION - Yuki's Wish" PKG_DATA_EXPANSION_ZAGAN_DESCRIPTION="$PKG_DATA_EXPANSION_DESCRIPTION - Zagan's Ritual" PKG_DATA_BUNDLES_ID="${PKG_DATA_ID}-bundles" PKG_DATA_BUNDLES1_ID="${PKG_DATA_BUNDLES_ID}-1" PKG_DATA_BUNDLES2_ID="${PKG_DATA_BUNDLES_ID}-2" PKG_DATA_BUNDLES3_ID="${PKG_DATA_BUNDLES_ID}-3" PKG_DATA_BUNDLES_ID_DEMO="${PKG_DATA_ID_DEMO}-bundles" PKG_DATA_BUNDLES1_ID_DEMO="${PKG_DATA_BUNDLES_ID_DEMO}-1" PKG_DATA_BUNDLES2_ID_DEMO="${PKG_DATA_BUNDLES_ID_DEMO}-2" PKG_DATA_BUNDLES3_ID_DEMO="${PKG_DATA_BUNDLES_ID_DEMO}-3" PKG_DATA_BUNDLES_DESCRIPTION="$PKG_DATA_DESCRIPTION - bundles" PKG_DATA_BUNDLES1_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - 1" PKG_DATA_BUNDLES2_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - 2" PKG_DATA_BUNDLES3_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - 3" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Store the game prefix into the WINE prefix, instead of using a symbolic link ## This is required for the expansions to be correctly detected ## The generated launchers will ignore $PLAYIT_PREFIX_PATH launcher_path_prefix() { local game_id game_id=$(game_id) cat <<- EOF ## Set the path to the volatile game prefix ## This launcher ignores \$PLAYIT_PREFIX_PATH path_prefix() { # Store the game prefix into the WINE prefix, instead of using a symbolic link # This is required for the expansions to be correctly detected printf '%s/drive_c/%s' \\ "\$PATH_WINEPREFIX" \\ '$(game_id)' } PATH_PREFIX=\$(path_prefix) EOF } wine_wineprefix_init_actions() { cat <<- 'EOF' ## Do not link the game prefix into the WINE prefix, as its real path is already there ## Remove most links pointing outside of the WINE prefix rm "$WINEPREFIX/dosdevices/z:" find "$WINEPREFIX/drive_c/users/$(whoami)" -type l | while read -r directory; do rm "$directory" mkdir "$directory" done unset directory ## Set symbolic links to the legacy paths wineprefix_legacy_link 'AppData/Roaming' 'Application Data' wineprefix_legacy_link 'AppData/Local' 'Local Settings/Application Data' wineprefix_legacy_link 'Documents' 'My Documents' EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-shadow-tactics.sh0000755000000000000000000001114514471751340015077 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Shadow Tactics: # - Shadow Tactics: Blades of the Shogun # - Aiko's Choice ### script_version=20241227.5 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_BLADES='shadow-tactics' GAME_NAME_BLADES='Shadow Tactics: Blades of the Shogun' GAME_ID_BLADES_DEMO="${GAME_ID_BLADES}-demo" GAME_NAME_BLADES_DEMO="$GAME_NAME_BLADES (demo)" GAME_ID_AIKO='shadow-tactics-aikos-choice' GAME_NAME_AIKO='Shadow Tactics: Blades of the Shogun - Aikoʼs Choice' ARCHIVE_BASE_BLADES_1_NAME='shadow_tactics_blades_of_the_shogun_en_2_2_10_f_21297.sh' ARCHIVE_BASE_BLADES_1_MD5='e7772e7a5f4fee760e9311a9a899dbb3' ARCHIVE_BASE_BLADES_1_SIZE='7642154' ARCHIVE_BASE_BLADES_1_VERSION='2.2.10.f-gog21297' ARCHIVE_BASE_BLADES_1_URL='https://www.gog.com/game/shadow_tactics_blades_of_the_shogun' ARCHIVE_BASE_BLADES_0_NAME='shadow_tactics_blades_of_the_shogun_en_1_4_4_f_14723.sh' ARCHIVE_BASE_BLADES_0_MD5='93faa090d5bcaa22f0faabd1e32c5909' ARCHIVE_BASE_BLADES_0_SIZE='9600000' ARCHIVE_BASE_BLADES_0_VERSION='1.4.4.f-gog14723' ARCHIVE_BASE_BLADES_DEMO_0_NAME='shadow_tactics_blades_of_the_shogun_demo_en_1_4_4_d_14915.sh' ARCHIVE_BASE_BLADES_DEMO_0_MD5='9238093a25ce9c911d9f19789ca18878' ARCHIVE_BASE_BLADES_DEMO_0_SIZE='2764963' ARCHIVE_BASE_BLADES_DEMO_0_VERSION='1.4.4.d-gog14915' ARCHIVE_BASE_BLADES_DEMO_0_URL='https://www.gog.com/game/shadow_tactics_demo' ARCHIVE_BASE_AIKO_0_NAME='setup_shadow_tactics_blades_of_the_shogun_-_aikos_choice_3.2.25.f.r4769a_(51855).exe' ARCHIVE_BASE_AIKO_0_MD5='5e0cfcc243f249fded7906fea04f6544' ARCHIVE_BASE_AIKO_0_TYPE='innosetup' ARCHIVE_BASE_AIKO_0_PART1_NAME='setup_shadow_tactics_blades_of_the_shogun_-_aikos_choice_3.2.25.f.r4769a_(51855)-1.bin' ARCHIVE_BASE_AIKO_0_PART1_MD5='8bdc4420659b2382d742165fddb09705' ARCHIVE_BASE_AIKO_0_SIZE='4569291' ARCHIVE_BASE_AIKO_0_VERSION='3.2.25.f.r4769a-gog51855' ARCHIVE_BASE_AIKO_0_URL='https://www.gog.com/game/shadow_tactics_blades_of_the_shogun_aikos_choice' UNITY3D_NAME_BLADES='Shadow Tactics' UNITY3D_NAME_AIKO='shadow tactics' UNITY3D_PLUGINS_BLADES=' libRenderingPlugin.so ScreenSelector.so' CONTENT_PATH_DEFAULT_BLADES='data/noarch/game' CONTENT_PATH_DEFAULT_AIKO='.' CONTENT_GAME_LIGHTING_FILES_BLADES=" ${UNITY3D_NAME_BLADES}_Data/GI" ## Aiko's Choice WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/Daedalic Entertainment GmbH/Shadow Tactics Blades of the Shogun Aikos Choice' PACKAGES_LIST_BLADES=' PKG_BIN PKG_LIGHTING PKG_DATA' PACKAGES_LIST_AIKO=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS_BLADES=' PKG_LIGHTING PKG_DATA' PKG_BIN_DEPENDENCIES_SIBLINGS_AIKO=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES_BLADES=' 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' ## Blades of the Shogun PKG_LIGHTING_ID_BLADES="${GAME_ID_BLADES}-lighting" PKG_LIGHTING_ID_BLADES_DEMO="${GAME_ID_BLADES_DEMO}-lighting" PKG_LIGHTING_DESCRIPTION='lighting' PKG_DATA_ID_BLADES="${GAME_ID_BLADES}-data" PKG_DATA_ID_BLADES_DEMO="${GAME_ID_BLADES_DEMO}-data" PKG_DATA_ID_AIKO="${GAME_ID_AIKO}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Blades of the Shogun - Link libRenderingPlugin.so to the harcoded path expected by the game engine case "$(current_archive)" in ('ARCHIVE_BASE_BLADES_'*) file_destination="$(package_path 'PKG_BIN')$(path_game_data)/$(unity3d_name)_Data/Plugins/x86/libRenderingPlugin.so" mkdir --parents "$(dirname "$file_destination")" ln --symbolic "$(path_libraries)/libRenderingPlugin.so" "$file_destination" ;; esac # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-shadowrun-trilogy.sh0000755000000000000000000001261614471751340015667 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=20241226.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_RETURNS='shadowrun-returns' GAME_NAME_RETURNS='Shadowrun Returns' GAME_ID_DRAGONFALL='shadowrun-dragonfall' GAME_NAME_DRAGONFALL='Shadowrun: Dragonfall' GAME_ID_HONGKONG='shadowrun-hong-kong' GAME_NAME_HONGKONG='Shadowrun: Hong Kong' # Archives ## Shadowrun Returns ARCHIVE_BASE_RETURNS_GOG_1_NAME='gog_shadowrun_returns_2.0.0.7.sh' ARCHIVE_BASE_RETURNS_GOG_1_MD5='61c12b14c7e6040cb1465390320a61da' ARCHIVE_BASE_RETURNS_GOG_1_SIZE='3000000' ARCHIVE_BASE_RETURNS_GOG_1_VERSION='1.2.7-gog2.0.0.7' ARCHIVE_BASE_RETURNS_GOG_1_URL='https://www.gog.com/game/shadowrun_returns' ARCHIVE_BASE_RETURNS_GOG_0_NAME='gog_shadowrun_returns_2.0.0.5.sh' ARCHIVE_BASE_RETURNS_GOG_0_MD5='feb59e116eb3fd7a12f484a135e37fa4' ARCHIVE_BASE_RETURNS_GOG_0_SIZE='3000000' ARCHIVE_BASE_RETURNS_GOG_0_VERSION='1.2.7-gog2.0.0.5' ARCHIVE_BASE_RETURNS_HUMBLE_0_NAME='shadowrun-returns-linux127.tar.gz' ARCHIVE_BASE_RETURNS_HUMBLE_0_MD5='ff3146b1ad046f81bf8f3deba277e472' ARCHIVE_BASE_RETURNS_HUMBLE_0_SIZE='3000000' ARCHIVE_BASE_RETURNS_HUMBLE_0_VERSION='1.2.7-humble140311' ARCHIVE_BASE_RETURNS_HUMBLE_0_URL='https://www.humblebundle.com/store/shadowrun-returns' ## Shadowrun: Dragonfall ARCHIVE_BASE_DRAGONFALL_0_NAME='gog_shadowrun_dragonfall_director_s_cut_2.6.0.11.sh' ARCHIVE_BASE_DRAGONFALL_0_MD5='ee3db5bc8554852337b063b993f66012' ARCHIVE_BASE_DRAGONFALL_0_SIZE='7200000' ARCHIVE_BASE_DRAGONFALL_0_VERSION='2.0.9-gog2.6.0.11' ARCHIVE_BASE_DRAGONFALL_0_URL='https://www.gog.com/game/shadowrun_dragonfall_directors_cut' ## Shadowrun: Hong Kong ARCHIVE_BASE_HONGKONG_0_NAME='gog_shadowrun_hong_kong_extended_edition_2.8.0.11.sh' ARCHIVE_BASE_HONGKONG_0_MD5='643ba68e47c309d391a6482f838e46af' ARCHIVE_BASE_HONGKONG_0_SIZE='12000000' ARCHIVE_BASE_HONGKONG_0_VERSION='3.1.2-gog2.8.0.11' ARCHIVE_BASE_HONGKONG_0_URL='https://www.gog.com/game/shadowrun_hong_kong_extended_edition' UNITY3D_NAME_RETURNS='Shadowrun' UNITY3D_NAME_DRAGONFALL='Dragonfall' UNITY3D_NAME_HONGKONG='SRHK' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_RETURNS_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_RETURNS_HUMBLE='Shadowrun Returns' CONTENT_PATH_DEFAULT_DRAGONFALL='data/noarch/game' CONTENT_PATH_DEFAULT_HONGKONG='data/noarch/game' CONTENT_GAME_DATA_STANDALONE_FILES=' *_Data/StreamingAssets/standalone' CONTENT_GAME0_DATA_FILES_HONGKONG=' dictionary' FAKE_HOME_PERSISTENT_DIRECTORIES_RETURNS=' Documents/Shadowrun Returns' FAKE_HOME_PERSISTENT_DIRECTORIES_DRAGONFALL=' Documents/Shadowrun Dragonfall' FAKE_HOME_PERSISTENT_DIRECTORIES_HONGKONG=' Documents/Shadowrun Hong Kong' ## Create required writable directory APP_MAIN_PRERUN=' # Create required writable directory mkdir --parents DumpBox ' PACKAGES_LIST=' PKG_BIN PKG_DATA_STANDALONE PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES_RETURNS=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6' PKG_BIN_DEPENDENCIES_LIBRARIES_DRAGONFALL=' libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6' PKG_BIN_DEPENDENCIES_LIBRARIES_HONGKONG=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_DATA_ID_RETURNS="${GAME_ID_RETURNS}-data" PKG_DATA_ID_DRAGONFALL="${GAME_ID_DRAGONFALL}-data" PKG_DATA_ID_HONGKONG="${GAME_ID_HONGKONG}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_STANDALONE' PKG_DATA_STANDALONE_ID_RETURNS="${PKG_DATA_ID_RETURNS}-standalone" PKG_DATA_STANDALONE_ID_DRAGONFALL="${PKG_DATA_ID_DRAGONFALL}-standalone" PKG_DATA_STANDALONE_ID_HONGKONG="${PKG_DATA_ID_HONGKONG}-standalone" PKG_DATA_STANDALONE_DESCRIPTION="$PKG_DATA_DESCRIPTION - standalone" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-shardlight.sh0000755000000000000000000000514114471751340014312 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Shardlight ### script_version=20250103.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='shardlight' GAME_NAME='Shardlight' ARCHIVE_BASE_4_NAME='shardlight_3_2_73879.sh' ARCHIVE_BASE_4_MD5='0207dcb6ee38949386c7ebe49ef18160' ARCHIVE_BASE_4_SIZE='952797' ARCHIVE_BASE_4_VERSION='3.2-gog73879' ARCHIVE_BASE_4_URL='https://www.gog.com/game/shardlight' ARCHIVE_BASE_3_NAME='shardlight_3_1_70695.sh' ARCHIVE_BASE_3_MD5='824cd0bf02463cfce8acd9c491399197' ARCHIVE_BASE_3_SIZE='952796' ARCHIVE_BASE_3_VERSION='3.1-gog70695' ARCHIVE_BASE_2_NAME='shardlight_3_0_66305.sh' ARCHIVE_BASE_2_MD5='2c3d7b7e0a541ee3a635189449608713' ARCHIVE_BASE_2_SIZE='960000' ARCHIVE_BASE_2_VERSION='3.0-gog66305' ARCHIVE_BASE_1_NAME='shardlight_2_4_56258.sh' ARCHIVE_BASE_1_MD5='854c59dcb914d934468a9475d17181e4' ARCHIVE_BASE_1_SIZE='1200000' ARCHIVE_BASE_1_VERSION='2.4-gog56258' ARCHIVE_BASE_0_NAME='shardlight_2_2_53577.sh' ARCHIVE_BASE_0_MD5='b48f7b1aac9b32ee7f5b236b6cc82e81' ARCHIVE_BASE_0_SIZE='1200000' ARCHIVE_BASE_0_VERSION='2.2-gog53577' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='shardlight_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='59bce49abce9678d963cecd72be8b512' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/shardlight/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32' 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:shardlight' APP_MAIN_ICON='../support/icon.png' APP_MAIN_ICON_1='Shardlight.exe' APP_MAIN_ICON_0='Shardlight.exe' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-shogo-mobile-armor-division.sh0000755000000000000000000000633614471751340017514 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Shogo: Mobile Armor Division ### script_version=20241230.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='shogo-mobile-armor-division' GAME_NAME='Shogo: Mobile Armor Division' ARCHIVE_BASE_EN_0_NAME='setup_shogo_-_mobile_armor_division_2.2.14_(19498).exe' ARCHIVE_BASE_EN_0_MD5='371cd8bbd32355f78ee7f52e4d34e94a' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_VERSION='2.2.14-gog19498' ARCHIVE_BASE_EN_0_SIZE='481454' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/shogo_mobile_armor_division' ARCHIVE_BASE_FR_0_NAME='setup_shogo_-_mobile_armor_division_2.2.14_(french)_(19498).exe' ARCHIVE_BASE_FR_0_MD5='ca3029d8c6efe0d273a174b73d95e920' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_VERSION='2.2.14-gog19498' ARCHIVE_BASE_FR_0_SIZE='487166' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/shogo_mobile_armor_division' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' am18.dll cdaudio.dll de_msg.dll ima.dll imrt1625.dll imrt25.dll imrt3225.dll imusic25.dll launch.dll mss16.dll mss32.dll msynth25.dll server.dll smackw32.dll softsnd.dll client.exe ct.exe shogo.exe shogosrv.exe start.exe ct.ini *.m3d *.pcx *.ren *.tsk' CONTENT_GAME0_BIN_PATH='__support/app' CONTENT_GAME0_BIN_FILES=' *.cfg' CONTENT_GAME_DATA_FILES=' custom joystick music save *.msk *.rez' CONTENT_DOC_DATA_FILES=' *.cnt *.hlp *.gid *.pdf readme.txt shogosrv.txt' USER_PERSISTENT_DIRECTORIES=' save' USER_PERSISTENT_FILES=' *.cfg' ## Without a WINE virtual desktop, ## mouselook can lead to erratic camera behaviour. ## TODO: Check if it is still happening with current WINE builds WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='shogo.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_ID="$GAME_ID" PKG_BIN_ID_EN="${PKG_BIN_ID}-en" PKG_BIN_ID_FR="${PKG_BIN_ID}-fr" PKG_BIN_PROVIDES=" $GAME_ID" PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DESCRIPTION_EN='English version' PKG_BIN_DESCRIPTION_FR='French version' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_EN="${PKG_DATA_ID}-en" PKG_DATA_ID_FR="${PKG_DATA_ID}-fr" PKG_DATA_PROVIDES=" $PKG_DATA_ID" PKG_DATA_DESCRIPTION='data' PKG_DATA_DESCRIPTION_EN="$PKG_DATA_DESCRIPTION - English version" PKG_DATA_DESCRIPTION_FR="$PKG_DATA_DESCRIPTION - French version" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-slay-the-princess.sh0000755000000000000000000001666314471751340015546 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2025 BetaRays set -o errexit ### # Slay the Princess ### script_version=20250211.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='slay-the-princess' GAME_NAME='Slay the Princess' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ## The Pristine Cut ARCHIVE_BASE_16_NAME='slay_the_princess_the_pristine_cut_the_pristine_cut_linux_1_1a_79534.sh' ARCHIVE_BASE_16_MD5='4b7dfeb531a7431bbd2fe84e0fc2cfde' ARCHIVE_BASE_16_SIZE='12700851' ARCHIVE_BASE_16_VERSION='1.1a-gog79534' ARCHIVE_BASE_16_URL='https://www.gog.com/game/slay_the_princess' ARCHIVE_BASE_15_NAME='slay_the_princess_the_pristine_cut_the_pristine_cut_linux_1_0z_77466.sh' ARCHIVE_BASE_15_MD5='9492a8cffbf5ab5ac79593ceb763d072' ARCHIVE_BASE_15_SIZE='12706022' ARCHIVE_BASE_15_VERSION='1.0z-gog77466' ARCHIVE_BASE_15_URL='https://www.gog.com/game/slay_the_princess' ARCHIVE_BASE_14_NAME='slay_the_princess_the_pristine_cut_the_pristine_cut_linux_1_0p_77354.sh' ARCHIVE_BASE_14_MD5='9cde15f2957c37f7679d73f3fa8eed8c' ARCHIVE_BASE_14_SIZE='12689218' ARCHIVE_BASE_14_VERSION='1.0p-gog77354' ARCHIVE_BASE_13_NAME='slay_the_princess_the_pristine_cut_the_pristine_cut_linux_1_0l_77303.sh' ARCHIVE_BASE_13_MD5='23fb0cd438f5936479d56846c65be179' ARCHIVE_BASE_13_SIZE='12684306' ARCHIVE_BASE_13_VERSION='1.0l-gog77303' ARCHIVE_BASE_12_NAME='slay_the_princess_the_pristine_cut_linux_1_0_77121.sh' ARCHIVE_BASE_12_MD5='df352f8474c406976f9cd3d87d0b9e79' ARCHIVE_BASE_12_SIZE='12679961' ARCHIVE_BASE_12_VERSION='1.0-gog77121' ARCHIVE_BASE_12_URL='https://www.gog.com/game/slay_the_princess' ## End of Everything update ARCHIVE_BASE_11_NAME='slay_the_princess_end_of_everything_update_1_2e_scrollbar_73222.sh' ARCHIVE_BASE_11_MD5='f1e7f54e99ceae8aa4c1314274708b1d' ARCHIVE_BASE_11_SIZE='8799577' ARCHIVE_BASE_11_VERSION='1.2e-gog73222' ARCHIVE_BASE_11_URL='https://www.gog.com/game/slay_the_princess' ARCHIVE_BASE_10_NAME='slay_the_princess_end_of_everything_update_1_2d_linux_better_controller_73049.sh' ARCHIVE_BASE_10_MD5='bf46a8f8820d6821bd9313dd49c35771' ARCHIVE_BASE_10_SIZE='8799553' ARCHIVE_BASE_10_VERSION='1.2d-gog73049' ARCHIVE_BASE_9_NAME='slay_the_princess_end_of_everything_update_1_2c_linux_better_controller_72957.sh' ARCHIVE_BASE_9_MD5='c93f7c398fc157d14679c93fcea26299' ARCHIVE_BASE_9_SIZE='8799548' ARCHIVE_BASE_9_VERSION='1.2c-gog72957' ARCHIVE_BASE_8_NAME='slay_the_princess_end_of_everything_update_1_2b_linux_72856.sh' ARCHIVE_BASE_8_MD5='6b9588bc80145f05bfc0105d4f97fda7' ARCHIVE_BASE_8_SIZE='8799541' ARCHIVE_BASE_8_VERSION='1.2b-gog72856' ARCHIVE_BASE_7_NAME='slay_the_princess_end_of_everything_update_1_2a_linux_72334.sh' ARCHIVE_BASE_7_MD5='caa8432a8b7e8c6d75191bf143714957' ARCHIVE_BASE_7_SIZE='8799532' ARCHIVE_BASE_7_VERSION='1.2a-gog72334' ARCHIVE_BASE_6_NAME='slay_the_princess_end_of_everything_update_1_2_linux_72260.sh' ARCHIVE_BASE_6_MD5='950c30b1f3496691ce2560cf3d55ed07' ARCHIVE_BASE_6_SIZE='8799446' ARCHIVE_BASE_6_VERSION='1.2-gog72260' ## Original builds ARCHIVE_BASE_5_NAME='slay_the_princess_linux_1_1c_release_70031.sh' ARCHIVE_BASE_5_MD5='d2ab1e74725c1e28f2f3a8e74347b4ee' ARCHIVE_BASE_5_SIZE='8362317' ARCHIVE_BASE_5_VERSION='1.1c-gog70031' ARCHIVE_BASE_4_NAME='slay_the_princess_linux_1_1af_release_69960.sh' ARCHIVE_BASE_4_MD5='f179e501f2edd3357c73b81eca40b34d' ARCHIVE_BASE_4_SIZE='8378490' ARCHIVE_BASE_4_VERSION='1.1af-gog69960' ARCHIVE_BASE_3_NAME='slay_the_princess_linux_1_0h_release_69787.sh' ARCHIVE_BASE_3_MD5='851f53732e9dc6314677271f67852f35' ARCHIVE_BASE_3_SIZE='11000045' ARCHIVE_BASE_3_VERSION='1.0h-gog69787' ARCHIVE_BASE_2_NAME='slay_the_princess_linux_1_0g_release_68787.sh' ARCHIVE_BASE_2_MD5='3b8417d581d1d721ab4016720a1ea881' ARCHIVE_BASE_2_SIZE='10989272' ARCHIVE_BASE_2_VERSION='1.0g-gog68787' ARCHIVE_BASE_1_NAME='slay_the_princess_linux_1_0f_release_68611.sh' ARCHIVE_BASE_1_MD5='a4fd4334624bbc469a481fc874df2750' ARCHIVE_BASE_1_SIZE='11003752' ARCHIVE_BASE_1_VERSION='1.0f-gog68611' ARCHIVE_BASE_0_NAME='slay_the_princess_linux_1_0d_release_68521.sh' ARCHIVE_BASE_0_MD5='7acf7f8093cdddff8d484aa4043e5c51' ARCHIVE_BASE_0_SIZE='11014500' ARCHIVE_BASE_0_VERSION='1.0d-gog68521' ## Free demo ARCHIVE_BASE_DEMO_0_NAME='SlaythePrincessDemo-1.0-market.zip' ARCHIVE_BASE_DEMO_0_MD5='135628b57b5e4debbaf21680d493cd74' ARCHIVE_BASE_DEMO_0_SIZE='2839604' ARCHIVE_BASE_DEMO_0_VERSION='1.0-itch' ARCHIVE_BASE_DEMO_0_URL='https://blacktabbygames.itch.io/slay-the-princess' CONTENT_PATH_DEFAULT='data/noarch/game/game' CONTENT_PATH_DEFAULT_DEMO='game' CONTENT_GAME_MAIN_FILES=' audio cache gui images staging script_version.txt' CONTENT_GAME0_MAIN_FILES_DEMO=' tl archive.rpa' CONTENT_GAME_ARCHIVE_1_FILES=' archive.rpa.split00' CONTENT_GAME_ARCHIVE_2_FILES=' archive.rpa.split01' ## archive.rpa.split02 is only provided with some old builds. CONTENT_GAME0_ARCHIVE_2_FILES=' archive.rpa.split02' APP_MAIN_TYPE='renpy' APP_MAIN_ICON='../SlaythePrincess.exe' APP_MAIN_ICON_DEMO='../SlaythePrincessDemo.exe' PACKAGES_LIST=' PKG_MAIN PKG_ARCHIVE_1 PKG_ARCHIVE_2' PACKAGES_LIST_DEMO=' PKG_MAIN' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_ARCHIVE_1 PKG_ARCHIVE_2' PKG_ARCHIVE_ID="${GAME_ID}-archive" PKG_ARCHIVE_1_ID="${PKG_ARCHIVE_ID}-1" PKG_ARCHIVE_2_ID="${PKG_ARCHIVE_ID}-2" PKG_ARCHIVE_DESCRIPTION='archive chunks' PKG_ARCHIVE_1_DESCRIPTION="$PKG_ARCHIVE_DESCRIPTION - 1" PKG_ARCHIVE_2_DESCRIPTION="$PKG_ARCHIVE_DESCRIPTION - 2" ## Ensure easy upgrades from packages generated with pre-20240427.1 game scripts PKG_MAIN_PROVIDES="${PKG_MAIN_PROVIDES:-} slay-the-princess-data" PKG_ARCHIVE_1_PROVIDES="${PKG_ARCHIVE_1_PROVIDES:-} slay-the-princess-data-archive-1" PKG_ARCHIVE_2_PROVIDES="${PKG_ARCHIVE_2_PROVIDES:-} slay-the-princess-data-archive-2" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data ## Check for the presence of the original game icon, fall back on the GOG-specific one if required case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) # The game demo is not provided by GOG. ;; (*) if [ ! -e "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/${APP_MAIN_ICON}" ]; then APP_MAIN_ICON='../../support/icon.png' fi ;; esac content_inclusion_icons 'PKG_MAIN' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages case "$(current_archive)" in ('ARCHIVE_BASE_DEMO_'*) # Prevent some properties of the full game from applying to the demo unset PKG_MAIN_DEPENDENCIES_SIBLINGS unset PKG_MAIN_PROVIDES ;; (*) # Rebuild the huge file from its chunks huge_file='archive.rpa' PKG_MAIN_POSTINST_RUN="$(package_postinst_actions 'PKG_MAIN') $(huge_file_concatenate "$huge_file")" PKG_MAIN_PRERM_RUN="$(package_prerm_actions 'PKG_MAIN') $(huge_file_delete "$huge_file")" ;; esac packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-song-of-farca.sh0000755000000000000000000000424214471751340014604 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Song of Farca ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-songs-of-conquest.sh0000755000000000000000000000751014471751340015555 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Songs of Conquest ### script_version=20250211.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='songs-of-conquest' GAME_NAME='Songs of Conquest' ARCHIVE_BASE_5_NAME='setup_songs_of_conquest_1.4.13_2d9731f566_3063_(79474).exe' ARCHIVE_BASE_5_MD5='ff47f9178c22a9804a4e513185ce6122' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_PART1_NAME='setup_songs_of_conquest_1.4.13_2d9731f566_3063_(79474)-1.bin' ARCHIVE_BASE_5_PART1_MD5='d080b22508bcafe99f81b63dca1471db' ARCHIVE_BASE_5_SIZE='2238908' ARCHIVE_BASE_5_VERSION='1.4.13-gog79474' ARCHIVE_BASE_5_URL='https://www.gog.com/game/songs_of_conquest' ARCHIVE_BASE_4_NAME='setup_songs_of_conquest_1.4.12_a5624b455d_3033_(79217).exe' ARCHIVE_BASE_4_MD5='d5e6bbfb4a7a6e27696f22f2915b1269' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_PART1_NAME='setup_songs_of_conquest_1.4.12_a5624b455d_3033_(79217)-1.bin' ARCHIVE_BASE_4_PART1_MD5='8d25598cf45e67b54faaa76708e1a642' ARCHIVE_BASE_4_SIZE='2240483' ARCHIVE_BASE_4_VERSION='1.4.12-gog79217' ARCHIVE_BASE_3_NAME='setup_songs_of_conquest_1.4.11_a56e2e9ed1_3013_(78972).exe' ARCHIVE_BASE_3_MD5='af79080c297f067b66a45625abd50104' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_PART1_NAME='setup_songs_of_conquest_1.4.11_a56e2e9ed1_3013_(78972)-1.bin' ARCHIVE_BASE_3_PART1_MD5='7d35955cb78e863fa90db91fb690859b' ARCHIVE_BASE_3_SIZE='2238284' ARCHIVE_BASE_3_VERSION='1.4.11-gog78972' ARCHIVE_BASE_2_NAME='setup_songs_of_conquest_1.4.10_967940f7ee_3002_(78614).exe' ARCHIVE_BASE_2_MD5='3f7c811f0a316df65446cbce9f294ba6' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_songs_of_conquest_1.4.10_967940f7ee_3002_(78614)-1.bin' ARCHIVE_BASE_2_PART1_MD5='87bffffbb31fec05c4deba26a40ce42a' ARCHIVE_BASE_2_SIZE='2239689' ARCHIVE_BASE_2_VERSION='1.4.10-gog78614' ARCHIVE_BASE_1_NAME='setup_songs_of_conquest_1.4.8_b1dfeaadfa_2989_(78547).exe' ARCHIVE_BASE_1_MD5='f3d225f934b63608e707bbd9b9821c78' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_songs_of_conquest_1.4.8_b1dfeaadfa_2989_(78547)-1.bin' ARCHIVE_BASE_1_PART1_MD5='ecb65717e71b6a8a2f28911512a1f0eb' ARCHIVE_BASE_1_SIZE='2237801' ARCHIVE_BASE_1_VERSION='1.4.8-gog78547' ARCHIVE_BASE_0_NAME='setup_songs_of_conquest_1.3.2_ab33a56fa6_2566_(76712).exe' ARCHIVE_BASE_0_MD5='ea01d32299258ee757fc349e5d4f9b1e' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_songs_of_conquest_1.3.2_ab33a56fa6_2566_(76712)-1.bin' ARCHIVE_BASE_0_PART1_MD5='e1a0a815f1f9500d7b5cfdfdf65223f1' ARCHIVE_BASE_0_SIZE='2544156' ARCHIVE_BASE_0_VERSION='1.3.2-gog76712' UNITY3D_NAME='songsofconquest' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Lavapotion/SongsOfConquest' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-songs-of-silence.sh0000755000000000000000000000671414471751340015343 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Songs of Silence ### script_version=20241220.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='songs-of-silence' GAME_NAME='Songs of Silence' ARCHIVE_BASE_2_NAME='setup_songs_of_silence_1.1.0-d.7846_(64bit)_(78613).exe' ARCHIVE_BASE_2_MD5='1da2bbeff582b8e21507c96e8f6d979a' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_songs_of_silence_1.1.0-d.7846_(64bit)_(78613)-1.bin' ARCHIVE_BASE_2_PART1_MD5='7478d544e00335d80dfd2320955b8dd6' ARCHIVE_BASE_2_PART2_NAME='setup_songs_of_silence_1.1.0-d.7846_(64bit)_(78613)-2.bin' ARCHIVE_BASE_2_PART2_MD5='79ac2108a4a5afd81b77c550a7c8a25c' ARCHIVE_BASE_2_SIZE='6083070' ARCHIVE_BASE_2_VERSION='1.1.0-gog78613' ARCHIVE_BASE_2_URL='https://www.gog.com/game/songs_of_silence' ARCHIVE_BASE_1_NAME='setup_songs_of_silence_1.0.3-d.7778_(64bit)_(78393).exe' ARCHIVE_BASE_1_MD5='6fc46c01c88a258da47c6c767aaf667e' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_songs_of_silence_1.0.3-d.7778_(64bit)_(78393)-1.bin' ARCHIVE_BASE_1_PART1_MD5='0cce99726df83cc685744ad2de501282' ARCHIVE_BASE_1_PART2_NAME='setup_songs_of_silence_1.0.3-d.7778_(64bit)_(78393)-2.bin' ARCHIVE_BASE_1_PART2_MD5='d221248b7e86a42b570eec2045c48f53' ARCHIVE_BASE_1_SIZE='6092548' ARCHIVE_BASE_1_VERSION='1.0.3-gog78393' ARCHIVE_BASE_0_NAME='setup_songs_of_silence_1.0.2-d.7719_(64bit)_(78109).exe' ARCHIVE_BASE_0_MD5='44adde224499bc5f07b83d58637e1b68' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_songs_of_silence_1.0.2-d.7719_(64bit)_(78109)-1.bin' ARCHIVE_BASE_0_PART1_MD5='b14dd73296a314c2a02e72c957001472' ARCHIVE_BASE_0_PART2_NAME='setup_songs_of_silence_1.0.2-d.7719_(64bit)_(78109)-2.bin' ARCHIVE_BASE_0_PART2_MD5='26a256d9d57b6df627db84ed9cf95df3' ARCHIVE_BASE_0_SIZE='6660310' ARCHIVE_BASE_0_VERSION='1.0.2-gog78109' UNITY3D_NAME='songsofsilence' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Chimera Entertainment GmbH/SongsOfSilence' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data ## A warning is triggered during the extraction, but despite the hash mismatch ## the file size is the expected one and it does not seem to cause problems: ## Warning: Output checksum mismatch for songsofsilence_data/resources.assets: ## ├─ actual: MD5 34a78c4bd457d0af0f6be739c84f1de7 ## └─ expected: MD5 cf5d0fdd0140118e253c735df3d3059c archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-space-run.sh0000755000000000000000000000535414471751340014064 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Space Run: Fast and safe delivery ### script_version=20241120.4 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='space-run' GAME_NAME='Space Run: Fast and safe delivery' ARCHIVE_BASE_0_NAME='setup_space_run_2.1.0.2.exe' ARCHIVE_BASE_0_MD5='e370f25708f12ef1916400a25c2c4e9c' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1263910' ARCHIVE_BASE_0_VERSION='1.11e-gog2.1.0.2' ARCHIVE_BASE_0_URL='https://www.gog.com/game/space_run' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' bass.dll cg.dll cggl.dll chartdir50.dll crashrpt.dll dbghelp.dll devil.dll fbxsdk-2013.3.dll fmod_event.dll fmod_event_net.dll fmodex.dll glut32.dll ilu.dll ilut.dll libfbxsdk.dll libmysql.dll tbb.dll tier0_s.dll vstdlib_s.dll crashsender.exe ospacegame.exe crashrpt_lang.ini reshacker.ini spaceresources/enginesettings.ini' ## TODO: Check if the Steam libraries are required CONTENT_GAME0_BIN_FILES=' steam.dll steam_api.dll steamclient.dll' CONTENT_GAME_DATA_FILES=' spaceresources' USER_PERSISTENT_DIRECTORIES=' Save' USER_PERSISTENT_FILES=' reshacker.ini spaceresources/enginesettings.ini' ## Work around the broken in-game language selection USER_PERSISTENT_FILES="${USER_PERSISTENT_FILES:-} localization.cfg" APP_MAIN_EXE='ospacegame.exe' ## Work around the broken in-game language selection APP_MAIN_PRERUN=' # Work around the broken in-game language selection LANG=$(cat localization.cfg) export LANG ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Work around the broken in-game language selection config_path="$(package_path 'PKG_BIN')$(path_game_data)/localization.cfg" cat > "$config_path" << EOF en EOF # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-star-wars-galactic-battlegrounds.sh0000755000000000000000000000755514471751340020537 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=20241021.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='star-wars-galactic-battlegrounds' GAME_NAME='Star Wars: Galactic Battlegrounds' ARCHIVE_BASE_EN_0_NAME='setup_sw_galactic_battlegrounds_saga_2.0.0.4.exe' ARCHIVE_BASE_EN_0_MD5='6af25835c5f240914cb04f7b4f741813' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='819518' ARCHIVE_BASE_EN_0_VERSION='1.1-gog2.0.0.4' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/star_wars_galactic_battlegrounds_saga' ARCHIVE_BASE_FR_0_NAME='setup_sw_galactic_battlegrounds_saga_french_2.0.0.4.exe' ARCHIVE_BASE_FR_0_MD5='b30458033e825ad252e2d5b3dc8a7845' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_SIZE='807572' ARCHIVE_BASE_FR_0_VERSION='1.1-gog2.0.0.4' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/star_wars_galactic_battlegrounds_saga' CONTENT_PATH_DEFAULT='app/game' CONTENT_GAME_BIN_FILES=' libogg-0.dll libvorbis-0.dll libvorbisfile-3.dll win32.dll *.exe' CONTENT_GAME_L10N_FILES=' history taunt sound/campaign sound/scenario campaign/media/1c2s6_end.mm data/gamedata_x1.drs scenario/default0.scx data/list*.crx data/genie*.dat language*.dll data/sounds.*drs' CONTENT_GAME_DATA_FILES=' ai campaign data extras music random savegame scenario sound *.avi' CONTENT_DOC_DATA_PATH="${CONTENT_PATH_DEFAULT}/.." CONTENT_DOC_DATA_FILES=' *.pdf' USER_PERSISTENT_DIRECTORIES=' ai campaign random savegame scenario' USER_PERSISTENT_FILES=' data/*.dat player.nf*' ## Without a WINE virtual desktop, only a black screen is rendered. WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='battlegrounds.exe' APP_ADDON_ID="${GAME_ID}-clone-wars" APP_ADDON_NAME="$GAME_NAME - Clone Wars" APP_ADDON_EXE='battlegrounds_x1.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Work around CD check registry_dump_nocd_file='registry-dumps/no-cd-check.reg' registry_dump_nocd_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\LucasArts Entertainment Company LLC\Star Wars Galactic Battlegrounds\1.0] "CDPath"="C:"' CONTENT_GAME_BIN_FILES="${CONTENT_GAME_BIN_FILES:-} $registry_dump_nocd_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_nocd_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Work around CD check. mkdir --parents "$(dirname "$registry_dump_nocd_file")" printf '%s' "$registry_dump_nocd_content" | \ iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_nocd_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-star-wars-knights-of-the-old-republic-series.sh0000755000000000000000000002333314471751340022603 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 # - Star Wars: Knights of the Old Republic 2 ### script_version=20250102.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' 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 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 binkw32.dll mss32.dll mss32midi.dll patchw32.dll swconfig.exe swkotor.exe swkotor2.exe' CONTENT_GAME_L10N_FILES=' patch.erf lips override streamwaves streamsounds streamvoice movies/01a.bik movies/02.bik movies/09.bik movies/31a.bik movies/50.bik movies/56b.bik movies/kre* movies/leclogo.bik movies/legal.bik movies/permov01.bik movies/scn* movies/trailer.bik *.tlk' CONTENT_GAME_DATA_FILES=' chitin.key data modules rims streammusic texturepacks movies' CONTENT_GAME0_DATA_PATH='__support/app' CONTENT_GAME0_DATA_FILES=' *.ini' CONTENT_DOC_L10N_FILES=' docs *.pdf *.txt' # Applications USER_PERSISTENT_DIRECTORIES=' saves' USER_PERSISTENT_FILES=' *.ini' APP_CONFIG_CAT='Settings' APP_CONFIG_EXE='swconfig.exe' ## Star Wars: Knights of the Old Republic APP_MAIN_EXE_KOTOR1='swkotor.exe' APP_CONFIG_ID_KOTOR1="${GAME_ID_KOTOR1}-config" APP_CONFIG_NAME_KOTOR1="$GAME_NAME_KOTOR1 - Configuration" ## Star Wars: Knights of the Old Republic 2 APP_MAIN_EXE_KOTOR2='swkotor2.exe' APP_CONFIG_ID_KOTOR2="${GAME_ID_KOTOR2}-config" APP_CONFIG_NAME_KOTOR2="$GAME_NAME_KOTOR2 - configuration" # Packages PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_L10N_DESCRIPTION_DE='German localization' PKG_DATA_DESCRIPTION='data' ## Star Wars: Knights of the Old Republic PKG_L10N_BASE_ID_KOTOR1="${GAME_ID_KOTOR1}-l10n" PKG_L10N_ID_KOTOR1_EN="${PKG_L10N_BASE_ID_KOTOR1}-en" PKG_L10N_ID_KOTOR1_FR="${PKG_L10N_BASE_ID_KOTOR1}-fr" PKG_L10N_ID_KOTOR1_DE="${PKG_L10N_BASE_ID_KOTOR1}-de" PKG_L10N_PROVIDES_KOTOR1=" $PKG_L10N_BASE_ID_KOTOR1" PKG_L10N_DESCRIPTION_KOTOR1_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_KOTOR1_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_KOTOR1_DE="$PKG_L10N_DESCRIPTION_DE" PKG_DATA_ID_KOTOR1="${GAME_ID_KOTOR1}-data" ## Star Wars: Knights of the Old Republic 2 PKG_L10N_BASE_ID_KOTOR2="${GAME_ID_KOTOR2}-l10n" PKG_L10N_ID_KOTOR2_EN="${PKG_L10N_BASE_ID_KOTOR2}-en" PKG_L10N_ID_KOTOR2_FR="${PKG_L10N_BASE_ID_KOTOR2}-fr" PKG_L10N_ID_KOTOR2_DE="${PKG_L10N_BASE_ID_KOTOR2}-de" PKG_L10N_PROVIDES_KOTOR2=" $PKG_L10N_BASE_ID_KOTOR2" PKG_L10N_DESCRIPTION_KOTOR2_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_KOTOR2_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_KOTOR2_DE="$PKG_L10N_DESCRIPTION_DE" PKG_DATA_ID_KOTOR2="${GAME_ID_KOTOR2}-data" # Ensure ability fo fully control the camera with the mouse registry_dump_mouse_grab_file='registry-dumps/mouse-grab.reg' registry_dump_mouse_grab_content='Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\X11 Driver] "GrabFullscreen"="Y"' CONTENT_GAME_BIN_FILES="${CONTENT_GAME_BIN_FILES:-} $registry_dump_mouse_grab_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_mouse_grab_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Ensure ability fo fully control the camera with the mouse mkdir --parents "$(dirname "$registry_dump_mouse_grab_file")" printf '%s' "$registry_dump_mouse_grab_content" | iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_mouse_grab_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-starcraft.sh0000755000000000000000000001120314471751340014146 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # StarCraft ### script_version=20241108.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='starcraft' GAME_NAME='StarCraft' ARCHIVE_BASE_EN_0_NAME='Installer Tome.mpq' ARCHIVE_BASE_EN_0_MD5='209b1757b3d10aad3e5055e7d11d7599' ARCHIVE_BASE_EN_0_PART1_NAME='Installer Tome 2.mpq' ARCHIVE_BASE_EN_0_PART1_MD5='d3d1bb36d4d256693a1df430d853cfe9' ARCHIVE_BASE_EN_0_SIZE='1294777' ARCHIVE_BASE_EN_0_VERSION='1.15.2-blizzard1' ARCHIVE_BASE_EN_0_URL='https://eu.battle.net/download/getLegacy?os=win&locale=enUS&product=STAR' ARCHIVE_BASE_FR_0_NAME='Installer Tome.mpq' ARCHIVE_BASE_FR_0_MD5='5f94ac518b98829cc5a8078fc13f0b6f' ARCHIVE_BASE_FR_0_PART1_NAME='Installer Tome 2.mpq' ARCHIVE_BASE_FR_0_PART1_MD5='57f632256a23caaf19457773832027f7' ARCHIVE_BASE_FR_0_SIZE='1314699' ARCHIVE_BASE_FR_0_VERSION='1.15.2-blizzard1' ARCHIVE_BASE_FR_0_URL='https://eu.battle.net/download/getLegacy?os=win&locale=frF&product=STAR' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_PATH='PC' CONTENT_GAME_BIN_FILES=' *.snp *.dll *.exe *.loc *.mpq' CONTENT_GAME_DATA_PATH='Common' CONTENT_GAME_DATA_FILES=' Maps *.mpq' CONTENT_DOC_DATA_PATH='PC' CONTENT_DOC_DATA_FILES=' *.cnt *.hlp *.pdf *.txt *.url' APP_MAIN_EXE='StarCraft.exe' APP_MAIN_ICON='PC/StarCraft.exe' USER_PERSISTENT_DIRECTORIES=' Characters Maps' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA_BASE' PKG_DATA_BASE_ID="${GAME_ID}-data" PKG_DATA_ID_EN="${PKG_DATA_BASE_ID}-en" PKG_DATA_ID_FR="${PKG_DATA_BASE_ID}-fr" PKG_DATA_PROVIDES=" $PKG_DATA_BASE_ID" PKG_DATA_DESCRIPTION='data' # Set list of requirements to extract the archive data REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} smpq" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Check for the presence of the CD key files # See notes/starcraft 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 mkdir --parents "${PLAYIT_WORKDIR}/gamedata" ( cd "${PLAYIT_WORKDIR}/gamedata" # Extract the content from the installer information_archive_data_extraction "$(archive_name "$(current_archive)")" smpq --extract "$(archive_path "$(current_archive)")" information_archive_data_extraction "$(archive_name "$(current_archive)_PART1")" smpq --extract --overwrite "$(archive_path "$(current_archive)_PART1")" # Include the CD key files install -D --mode=644 \ "$(archive_path 'ARCHIVE_CDKEY_1')" \ "${PLAYIT_WORKDIR}/gamedata/Files/font/font.clh" install -D --mode=644 \ "$(archive_path 'ARCHIVE_CDKEY_2')" \ "${PLAYIT_WORKDIR}/gamedata/Files/font/font.gid" # Update the main .mpq file ( cd 'PC' smpq --append ../Common/StarDat.mpq \ StarEdit.cnt \ EditLocal.dll \ Local.dll \ Riched20.dll \ Smackw32.dll ) ( cd 'PC-100' smpq --append ../Common/StarDat.mpq \ Readme.cnt \ storm.dll \ StarCraft.exe \ StarEdit.exe \ battle.snp \ standard.snp \ License.txt \ ./*.hlp ## This file is only included in the English build of the game case "$(current_archive)" in ('ARCHIVE_BASE_EN_'*) smpq --append ../Common/StarDat.mpq \ rez/License.txt ;; esac ## Compression must be disabled when adding this file to the .mpq archive, to prevent a crash on launch smpq --append --compression none ../Common/StarDat.mpq \ Smk/Blizzard.smk ) ( cd 'Files' ## Compression must be disabled when adding these files to the .mpq archive, to prevent a crash on launch smpq --append --compression none ../Common/StarDat.mpq \ font/*.fnt \ font/font.ccd \ font/font.clh \ font/font.gid ) ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-startopia.sh0000755000000000000000000000624714471751340014177 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Startopia ### script_version=20250123.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='startopia' GAME_NAME='Startopia' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ## Archives ### Full game ARCHIVE_BASE_0_NAME='setup_startopia_2.0.0.17.exe' ARCHIVE_BASE_0_MD5='4fe8d194afc1012e136ed3e82f1de171' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='600000' ARCHIVE_BASE_0_VERSION='1.01b-gog2.0.0.17' ARCHIVE_BASE_0_URL='https://www.gog.com/game/startopia' ### Free demo ARCHIVE_BASE_DEMO_0_NAME='startopia_demo.exe' ARCHIVE_BASE_DEMO_0_MD5='2e170f8c4700b2d271ac2a6fac23920a' ARCHIVE_BASE_DEMO_0_EXTRACTOR='unzip' ARCHIVE_BASE_DEMO_0_SIZE='149364' ARCHIVE_BASE_DEMO_0_VERSION='2001.5.15.1-archive.org' ARCHIVE_BASE_DEMO_0_URL='https://archive.org/details/startopia_demo' CONTENT_PATH_DEFAULT='app' CONTENT_PATH_DEFAULT_DEMO='.' CONTENT_GAME_BIN_FILES=' binkw32.dll startopia.exe' CONTENT_GAME_L10N_FILES=' data/speech/english text/english startopia.ini' CONTENT_GAME_DATA_FILES=' startopia.jpg cardid.tom data intro languageinis missions' CONTENT_DOC_DATA_FILES=' eula weblinks *.doc *.html *.pdf *.rtf *.txt' USER_PERSISTENT_DIRECTORIES=' profiles' USER_PERSISTENT_FILES=' startopia.ini' WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='startopia.exe' APP_MAIN_EXE_DEMO='StarTopia.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_ID_DEMO="${GAME_ID_DEMO}-l10n" PKG_L10N_DESCRIPTION='English localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Generate a minimal configuration file game_path="C:\\$(game_id)" intro_path="${game_path}\\intro\\" drive_path_music="${game_path}\\data\\" drive_path_sound="${game_path}\\data\\" sound_path_voice="${game_path}\\data\\" config_file="$(package_path 'PKG_L10N')$(path_game_data)/startopia.ini" cat > "$config_file" <<- EOF [Intro] IntroPath=$intro_path [Sound] DrivePathMusic=$drive_path_music DrivePathSound=$drive_path_sound SoundPathVoice=$sound_path_voice [Language] TextLanguage=English SpeechLanguage=English EOF # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-stellaris-expansions-extra.sh0000755000000000000000000002531014471751340017471 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=20241215.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_63_NAME='stellaris_arachnoid_portrait_pack_3_14_15926_78464.sh' ARCHIVE_BASE_ARACHNOID_63_MD5='9da0b12f862958f4af43ae7612445adb' ARCHIVE_BASE_ARACHNOID_63_SIZE='817' ARCHIVE_BASE_ARACHNOID_63_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_ARACHNOID_63_URL='https://www.gog.com/game/stellaris_galaxy_edition_upgrade_pack' ARCHIVE_BASE_ARACHNOID_62_NAME='stellaris_arachnoid_portrait_pack_3_13_2_0_76713.sh' ARCHIVE_BASE_ARACHNOID_62_MD5='6584255df86295e64f59c6e9c1b69503' ARCHIVE_BASE_ARACHNOID_62_SIZE='817' ARCHIVE_BASE_ARACHNOID_62_VERSION='3.13.2-gog76713' ARCHIVE_BASE_ARACHNOID_59_NAME='stellaris_arachnoid_portrait_pack_3_12_5_74193.sh' ARCHIVE_BASE_ARACHNOID_59_MD5='f753906a3ff33592d853b6634d14cfb9' ARCHIVE_BASE_ARACHNOID_59_SIZE='817' ARCHIVE_BASE_ARACHNOID_59_VERSION='3.12.5-gog74193' ARCHIVE_BASE_ARACHNOID_55_NAME='stellaris_arachnoid_portrait_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_ARACHNOID_55_MD5='5e073b99755aa71fa8b4063e53b4335c' ARCHIVE_BASE_ARACHNOID_55_SIZE='817' ARCHIVE_BASE_ARACHNOID_55_VERSION='3.11.3-gog72561' ARCHIVE_BASE_ARACHNOID_52_NAME='stellaris_arachnoid_portrait_pack_3_10_4_70670.sh' ARCHIVE_BASE_ARACHNOID_52_MD5='a1adad0576df7d51e3035c0f1ad23c1b' ARCHIVE_BASE_ARACHNOID_52_SIZE='817' ARCHIVE_BASE_ARACHNOID_52_VERSION='3.10.4-gog70670' ARCHIVE_BASE_ARACHNOID_46_NAME='stellaris_arachnoid_portrait_pack_3_9_3_68314.sh' ARCHIVE_BASE_ARACHNOID_46_MD5='7e9c3036c905d049728186576f8a56eb' ARCHIVE_BASE_ARACHNOID_46_SIZE='1136' ARCHIVE_BASE_ARACHNOID_46_VERSION='3.9.3-gog68314' ARCHIVE_BASE_ARACHNOID_43_NAME='stellaris_arachnoid_portrait_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_ARACHNOID_43_MD5='3c4a57c69955b4b7fc63e46ea06684a5' ARCHIVE_BASE_ARACHNOID_43_SIZE='1200' ARCHIVE_BASE_ARACHNOID_43_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_ARACHNOID_39_NAME='stellaris_arachnoid_portrait_pack_3_7_4_63489.sh' ARCHIVE_BASE_ARACHNOID_39_MD5='e4d76799d90bf18a2666460bae14db93' ARCHIVE_BASE_ARACHNOID_39_SIZE='1200' ARCHIVE_BASE_ARACHNOID_39_VERSION='3.7.4-gog63489' ARCHIVE_BASE_ARACHNOID_36_NAME='stellaris_arachnoid_portrait_pack_3_6_1_60754.sh' ARCHIVE_BASE_ARACHNOID_36_MD5='41240ed75d7100557b57914ee66c1f49' ARCHIVE_BASE_ARACHNOID_36_SIZE='1200' ARCHIVE_BASE_ARACHNOID_36_VERSION='3.6.1-gog60754' ARCHIVE_BASE_ARACHNOID_34_NAME='stellaris_arachnoid_portrait_pack_3_5_3_59410.sh' ARCHIVE_BASE_ARACHNOID_34_MD5='6aff6463161944a265b502f434577fc9' ARCHIVE_BASE_ARACHNOID_34_SIZE='1200' ARCHIVE_BASE_ARACHNOID_34_VERSION='3.5.3-gog59410' ARCHIVE_BASE_ARACHNOID_32_NAME='stellaris_arachnoid_portrait_pack_3_4_5_56913.sh' ARCHIVE_BASE_ARACHNOID_32_MD5='ace768013cc7aaa46182586349432ddf' ARCHIVE_BASE_ARACHNOID_32_SIZE='1200' ARCHIVE_BASE_ARACHNOID_32_VERSION='3.4.5-gog56913' ARCHIVE_BASE_ARACHNOID_28_NAME='stellaris_arachnoid_portrait_pack_3_3_4_54421.sh' ARCHIVE_BASE_ARACHNOID_28_MD5='2d7bd0d2246fcec48ca8bbf8cdb456e8' ARCHIVE_BASE_ARACHNOID_28_SIZE='1200' ARCHIVE_BASE_ARACHNOID_28_VERSION='3.3.4-gog54421' ARCHIVE_BASE_ARACHNOID_24_NAME='stellaris_arachnoid_portrait_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_ARACHNOID_24_MD5='fab840f6c4a70dcb7c19c913d711af20' ARCHIVE_BASE_ARACHNOID_24_SIZE='1200' ARCHIVE_BASE_ARACHNOID_24_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_ARACHNOID_23_NAME='stellaris_arachnoid_portrait_pack_3_1_1_50008.sh' ARCHIVE_BASE_ARACHNOID_23_MD5='0ccdf6386dc2b9c062e9d272550392a1' ARCHIVE_BASE_ARACHNOID_23_SIZE='1200' ARCHIVE_BASE_ARACHNOID_23_VERSION='3.1.1-gog50008' ARCHIVE_BASE_ARACHNOID_22_NAME='stellaris_arachnoid_portrait_pack_3_0_3_47193.sh' ARCHIVE_BASE_ARACHNOID_22_MD5='d9619c256ed79a50cce26398b9ac8c11' ARCHIVE_BASE_ARACHNOID_22_SIZE='1200' ARCHIVE_BASE_ARACHNOID_22_VERSION='3.0.3-gog47193' ## Horizon Signal ARCHIVE_BASE_HORIZONSIGNAL_63_NAME='stellaris_horizon_signal_3_14_15926_78464.sh' ARCHIVE_BASE_HORIZONSIGNAL_63_MD5='2e1dd57ce9e7f96216b7afd9ac2ad81b' ARCHIVE_BASE_HORIZONSIGNAL_63_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_63_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_HORIZONSIGNAL_63_URL='https://www.gog.com/game/stellaris_horizon_signal' ARCHIVE_BASE_HORIZONSIGNAL_62_NAME='stellaris_horizon_signal_3_13_2_0_76713.sh' ARCHIVE_BASE_HORIZONSIGNAL_62_MD5='9719994a74b4778c50a5a9a0a1390d4a' ARCHIVE_BASE_HORIZONSIGNAL_62_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_62_VERSION='3.13.2-gog76713' ARCHIVE_BASE_HORIZONSIGNAL_59_NAME='stellaris_horizon_signal_3_12_5_74193.sh' ARCHIVE_BASE_HORIZONSIGNAL_59_MD5='e0f7d5e0308ee01cd9fd4f3bc787e1b9' ARCHIVE_BASE_HORIZONSIGNAL_59_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_59_VERSION='3.12.5-gog74193' ARCHIVE_BASE_HORIZONSIGNAL_55_NAME='stellaris_horizon_signal_3_11_3_0_72561.sh' ARCHIVE_BASE_HORIZONSIGNAL_55_MD5='d9074aa886455537cbeffb4364164b10' ARCHIVE_BASE_HORIZONSIGNAL_55_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_55_VERSION='3.11.3-gog72561' ARCHIVE_BASE_HORIZONSIGNAL_52_NAME='stellaris_horizon_signal_3_10_4_70670.sh' ARCHIVE_BASE_HORIZONSIGNAL_52_MD5='d81d5a8fcf2a2d406d9670530e80c4ea' ARCHIVE_BASE_HORIZONSIGNAL_52_SIZE='817' ARCHIVE_BASE_HORIZONSIGNAL_52_VERSION='3.10.4-gog70670' ARCHIVE_BASE_HORIZONSIGNAL_46_NAME='stellaris_horizon_signal_3_9_3_68314.sh' ARCHIVE_BASE_HORIZONSIGNAL_46_MD5='b3b8eb00b7ca9c70445bf8b13641ae5e' ARCHIVE_BASE_HORIZONSIGNAL_46_SIZE='1136' ARCHIVE_BASE_HORIZONSIGNAL_46_VERSION='3.9.3-gog68314' ARCHIVE_BASE_HORIZONSIGNAL_43_NAME='stellaris_horizon_signal_3_8_4_1_65337.sh' ARCHIVE_BASE_HORIZONSIGNAL_43_MD5='97befa175f3b19a1bb0457ef9342b477' ARCHIVE_BASE_HORIZONSIGNAL_43_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_43_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_HORIZONSIGNAL_39_NAME='stellaris_horizon_signal_3_7_4_63489.sh' ARCHIVE_BASE_HORIZONSIGNAL_39_MD5='2c110df9fde65ba833611299f9089f11' ARCHIVE_BASE_HORIZONSIGNAL_39_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_39_VERSION='3.7.4-gog63489' ARCHIVE_BASE_HORIZONSIGNAL_36_NAME='stellaris_horizon_signal_3_6_1_60754.sh' ARCHIVE_BASE_HORIZONSIGNAL_36_MD5='2aa466583664f7849a8887288cc11c64' ARCHIVE_BASE_HORIZONSIGNAL_36_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_36_VERSION='3.6.1-gog60754' ARCHIVE_BASE_HORIZONSIGNAL_34_NAME='stellaris_horizon_signal_3_5_3_59410.sh' ARCHIVE_BASE_HORIZONSIGNAL_34_MD5='d8ed88b305b2b59eff219050dfefaaeb' ARCHIVE_BASE_HORIZONSIGNAL_34_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_34_VERSION='3.5.3-gog59410' ARCHIVE_BASE_HORIZONSIGNAL_32_NAME='stellaris_horizon_signal_3_4_5_56913.sh' ARCHIVE_BASE_HORIZONSIGNAL_32_MD5='6799f7b49323c768c3db7a2744e07e09' ARCHIVE_BASE_HORIZONSIGNAL_32_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_32_VERSION='3.4.5-gog56913' ARCHIVE_BASE_HORIZONSIGNAL_28_NAME='stellaris_horizon_signal_3_3_4_54421.sh' ARCHIVE_BASE_HORIZONSIGNAL_28_MD5='80c81dc86845976789437875b8fd3b2e' ARCHIVE_BASE_HORIZONSIGNAL_28_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_28_VERSION='3.3.4-gog54421' ARCHIVE_BASE_HORIZONSIGNAL_24_NAME='stellaris_horizon_signal_3_2_1_1_51520.sh' ARCHIVE_BASE_HORIZONSIGNAL_24_MD5='d9153fc1cf20a225e55cb001aa6b8c51' ARCHIVE_BASE_HORIZONSIGNAL_24_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_24_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_HORIZONSIGNAL_23_NAME='stellaris_horizon_signal_3_1_1_50008.sh' ARCHIVE_BASE_HORIZONSIGNAL_23_MD5='5c64e490ee6ac5e72816be2530e90f2b' ARCHIVE_BASE_HORIZONSIGNAL_23_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_23_VERSION='3.1.1-gog50008' ARCHIVE_BASE_HORIZONSIGNAL_22_NAME='stellaris_horizon_signal_3_0_3_47193.sh' ARCHIVE_BASE_HORIZONSIGNAL_22_MD5='40ddcd078680c3ab2bb5e98d7658bfa9' ARCHIVE_BASE_HORIZONSIGNAL_22_SIZE='1200' ARCHIVE_BASE_HORIZONSIGNAL_22_VERSION='3.0.3-gog47193' ## Anniversary Portraits ### Starting with game release 3.7.2, ### this expansion is included in the base game. ARCHIVE_BASE_ANNIVERSARY_35_NAME='stellaris_anniversary_portraits_3_6_1_60754.sh' ARCHIVE_BASE_ANNIVERSARY_35_MD5='13d5ed75ed18ae47fd8377a3c0f58eec' ARCHIVE_BASE_ANNIVERSARY_35_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_35_VERSION='3.6.1-gog60754' ARCHIVE_BASE_ANNIVERSARY_33_NAME='stellaris_anniversary_portraits_3_5_3_59410.sh' ARCHIVE_BASE_ANNIVERSARY_33_MD5='7fb42ed038df8658a160a1a575e92ca4' ARCHIVE_BASE_ANNIVERSARY_33_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_33_VERSION='3.5.3-gog59410' ARCHIVE_BASE_ANNIVERSARY_31_NAME='stellaris_anniversary_portraits_3_4_5_56913.sh' ARCHIVE_BASE_ANNIVERSARY_31_MD5='3e31e34d9abb5118a704b904275a14c5' ARCHIVE_BASE_ANNIVERSARY_31_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_31_VERSION='3.4.5-gog56913' ARCHIVE_BASE_ANNIVERSARY_27_NAME='stellaris_anniversary_portraits_3_3_4_54421.sh' ARCHIVE_BASE_ANNIVERSARY_27_MD5='d61fc4a3daaebdfa73b002e1865d65f8' ARCHIVE_BASE_ANNIVERSARY_27_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_27_VERSION='3.3.4-gog54421' ARCHIVE_BASE_ANNIVERSARY_23_NAME='stellaris_anniversary_portraits_3_2_1_1_51520.sh' ARCHIVE_BASE_ANNIVERSARY_23_MD5='8ef72fb6a3a0f648d5c484bad729194c' ARCHIVE_BASE_ANNIVERSARY_23_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_23_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_ANNIVERSARY_22_NAME='stellaris_anniversary_portraits_3_1_1_50008.sh' ARCHIVE_BASE_ANNIVERSARY_22_MD5='d6a97a96a73effc93e41f247b86db8e3' ARCHIVE_BASE_ANNIVERSARY_22_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_22_VERSION='3.1.1-gog50008' ARCHIVE_BASE_ANNIVERSARY_21_NAME='stellaris_anniversary_portraits_3_0_3_47193.sh' ARCHIVE_BASE_ANNIVERSARY_21_MD5='53b0dd554774acd8aa821b5be741b4d8' ARCHIVE_BASE_ANNIVERSARY_21_SIZE='1200' ARCHIVE_BASE_ANNIVERSARY_21_VERSION='3.0.3-gog47193' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-stellaris-expansions-mechanical.sh0000755000000000000000000000361014471751340020431 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Stellaris expansions (mechanical expansions): # - Cosmic Storms ### script_version=20241215.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='stellaris' GAME_NAME='Stellaris' EXPANSION_ID_STORMS='cosmic-storms' EXPANSION_NAME_STORMS='Cosmic Storms' # Archives ## Cosmic Storms ARCHIVE_BASE_STORMS_3_NAME='stellaris_cosmic_storms_3_14_15926_78464.sh' ARCHIVE_BASE_STORMS_3_MD5='6cf3fcb0ef883746b11eb3dd55c67a89' ARCHIVE_BASE_STORMS_3_SIZE='829' ARCHIVE_BASE_STORMS_3_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_STORMS_3_URL='https://www.gog.com/game/stellaris_cosmic_storms' ARCHIVE_BASE_STORMS_2_NAME='stellaris_cosmic_storms_3_13_2_0_76713.sh' ARCHIVE_BASE_STORMS_2_MD5='a011e1ef5f111c624be7cbbcd5a924fa' ARCHIVE_BASE_STORMS_2_SIZE='829' ARCHIVE_BASE_STORMS_2_VERSION='3.13.2-gog76713' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-stellaris-expansions-narrative.sh0000755000000000000000000000503414471751340020342 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Stellaris expansions (narrative expansions): # - Astral Planes ### script_version=20241215.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='stellaris' GAME_NAME='Stellaris' EXPANSION_ID_PLANES='astral-planes' EXPANSION_NAME_PLANES='Astral Planes' # Archives ## Astral Planes ARCHIVE_BASE_PLANES_16_NAME='stellaris_astral_planes_3_14_15926_78464.sh' ARCHIVE_BASE_PLANES_16_MD5='d59eceb01b9846df80331cd57e41c899' ARCHIVE_BASE_PLANES_16_SIZE='46789' ARCHIVE_BASE_PLANES_16_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_PLANES_16_URL='https://www.gog.com/game/stellaris_astral_planes' ARCHIVE_BASE_PLANES_15_NAME='stellaris_astral_planes_3_13_2_0_76713.sh' ARCHIVE_BASE_PLANES_15_MD5='8350550427b8df4980d5b10b680f8068' ARCHIVE_BASE_PLANES_15_SIZE='46789' ARCHIVE_BASE_PLANES_15_VERSION='3.13.2-gog76713' ARCHIVE_BASE_PLANES_12_NAME='stellaris_astral_planes_3_12_5_74193.sh' ARCHIVE_BASE_PLANES_12_MD5='8cbaaaa68306cc90effacd2510cbe089' ARCHIVE_BASE_PLANES_12_SIZE='46789' ARCHIVE_BASE_PLANES_12_VERSION='3.12.5-gog74193' ARCHIVE_BASE_PLANES_8_NAME='stellaris_astral_planes_3_11_3_0_72561.sh' ARCHIVE_BASE_PLANES_8_MD5='7d43cac5e6dd18238fff6f06b82be7c1' ARCHIVE_BASE_PLANES_8_SIZE='46789' ARCHIVE_BASE_PLANES_8_VERSION='3.11.3-gog72561' ARCHIVE_BASE_PLANES_5_NAME='stellaris_astral_planes_3_10_4_70670.sh' ARCHIVE_BASE_PLANES_5_MD5='fab105e52dffbf0ec425d4cedf89feae' ARCHIVE_BASE_PLANES_5_SIZE='46789' ARCHIVE_BASE_PLANES_5_VERSION='3.10.4-gog70670' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-stellaris-expansions-species-packs.sh0000755000000000000000000004746514471751340021117 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=20241215.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_60_NAME='stellaris_plantoids_species_pack_3_14_15926_78464.sh' ARCHIVE_BASE_PLANTOID_60_MD5='d35b66bc263d6111755f070bd9029832' ARCHIVE_BASE_PLANTOID_60_SIZE='837' ARCHIVE_BASE_PLANTOID_60_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_PLANTOID_60_URL='https://www.gog.com/game/stellaris_plantoids_species_pack' ARCHIVE_BASE_PLANTOID_59_NAME='stellaris_plantoids_species_pack_3_13_2_0_76713.sh' ARCHIVE_BASE_PLANTOID_59_MD5='3b5da3bbc12bef1778070cb48c0d5b5e' ARCHIVE_BASE_PLANTOID_59_SIZE='837' ARCHIVE_BASE_PLANTOID_59_VERSION='3.13.2-gog76713' ARCHIVE_BASE_PLANTOID_56_NAME='stellaris_plantoids_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_PLANTOID_56_MD5='c97796440232a0afa39a793efae40c67' ARCHIVE_BASE_PLANTOID_56_SIZE='837' ARCHIVE_BASE_PLANTOID_56_VERSION='3.12.5-gog74193' ARCHIVE_BASE_PLANTOID_52_NAME='stellaris_plantoids_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_PLANTOID_52_MD5='c301172fde38bcd14b9e7546f35e49d2' ARCHIVE_BASE_PLANTOID_52_SIZE='837' ARCHIVE_BASE_PLANTOID_52_VERSION='3.11.3-gog72561' ARCHIVE_BASE_PLANTOID_49_NAME='stellaris_plantoids_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_PLANTOID_49_MD5='fc70ea7215520e885c61d072463b9be4' ARCHIVE_BASE_PLANTOID_49_SIZE='837' ARCHIVE_BASE_PLANTOID_49_VERSION='3.10.4-gog70670' ARCHIVE_BASE_PLANTOID_43_NAME='stellaris_plantoids_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_PLANTOID_43_MD5='f38e8c826f876f52cea68b69f85ca079' ARCHIVE_BASE_PLANTOID_43_SIZE='1156' ARCHIVE_BASE_PLANTOID_43_VERSION='3.9.3-gog68314' ARCHIVE_BASE_PLANTOID_40_NAME='stellaris_plantoids_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_PLANTOID_40_MD5='c64fed3a260b17bdb07e439dc20304c7' ARCHIVE_BASE_PLANTOID_40_SIZE='1200' ARCHIVE_BASE_PLANTOID_40_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_PLANTOID_39_NAME='stellaris_plantoids_species_pack_3_8_3_1_64953.sh' ARCHIVE_BASE_PLANTOID_39_MD5='7b0cec949d962b027bc7bd108d79eeaf' ARCHIVE_BASE_PLANTOID_39_SIZE='1200' ARCHIVE_BASE_PLANTOID_39_VERSION='3.8.3.1-gog64953' ARCHIVE_BASE_PLANTOID_36_NAME='stellaris_plantoids_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_PLANTOID_36_MD5='5a2a9101e09cddc83e29c802b33639ed' ARCHIVE_BASE_PLANTOID_36_SIZE='1200' ARCHIVE_BASE_PLANTOID_36_VERSION='3.7.4-gog63489' ARCHIVE_BASE_PLANTOID_33_NAME='stellaris_plantoids_species_pack_3_6_1_60754.sh' ARCHIVE_BASE_PLANTOID_33_MD5='298bdd7c0f717f90c2045d0c9a68c1c9' ARCHIVE_BASE_PLANTOID_33_SIZE='1200' ARCHIVE_BASE_PLANTOID_33_VERSION='3.6.1-gog60754' ARCHIVE_BASE_PLANTOID_31_NAME='stellaris_plantoids_species_pack_3_5_3_59410.sh' ARCHIVE_BASE_PLANTOID_31_MD5='fabc6b9d5580dac6a456da962a765709' ARCHIVE_BASE_PLANTOID_31_SIZE='1200' ARCHIVE_BASE_PLANTOID_31_VERSION='3.5.3-gog59410' ARCHIVE_BASE_PLANTOID_29_NAME='stellaris_plantoids_species_pack_3_4_5_56913.sh' ARCHIVE_BASE_PLANTOID_29_MD5='b2b5023834509b4a5c2a12bb345380a1' ARCHIVE_BASE_PLANTOID_29_SIZE='1200' ARCHIVE_BASE_PLANTOID_29_VERSION='3.4.5-gog56913' ARCHIVE_BASE_PLANTOID_25_NAME='stellaris_plantoids_species_pack_3_3_4_54421.sh' ARCHIVE_BASE_PLANTOID_25_MD5='b8ea82b781639c7031ea53d4e155c5d1' ARCHIVE_BASE_PLANTOID_25_SIZE='1200' ARCHIVE_BASE_PLANTOID_25_VERSION='3.3.4-gog54421' ARCHIVE_BASE_PLANTOID_21_NAME='stellaris_plantoids_species_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_PLANTOID_21_MD5='260d8bc704b93f307d31807efbb5568f' ARCHIVE_BASE_PLANTOID_21_SIZE='1200' ARCHIVE_BASE_PLANTOID_21_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_PLANTOID_20_NAME='stellaris_plantoids_species_pack_3_1_1_50008.sh' ARCHIVE_BASE_PLANTOID_20_MD5='fb947af6a98e45645b482a484bd6d42e' ARCHIVE_BASE_PLANTOID_20_SIZE='1200' ARCHIVE_BASE_PLANTOID_20_VERSION='3.1.1-gog50008' ARCHIVE_BASE_PLANTOID_19_NAME='stellaris_plantoids_species_pack_3_0_3_47193.sh' ARCHIVE_BASE_PLANTOID_19_MD5='d1dc616e45d6d035ed3414687228f95a' ARCHIVE_BASE_PLANTOID_19_SIZE='1200' ARCHIVE_BASE_PLANTOID_19_VERSION='3.0.3-gog47193' ## Humanoids ARCHIVE_BASE_HUMANOIDS_60_NAME='stellaris_humanoids_species_pack_3_14_15926_78464.sh' ARCHIVE_BASE_HUMANOIDS_60_MD5='783bfe3b3ddc324fc0b8d29b2e41a56a' ARCHIVE_BASE_HUMANOIDS_60_SIZE='84675' ARCHIVE_BASE_HUMANOIDS_60_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_HUMANOIDS_60_URL='https://www.gog.com/game/stellaris_humanoids_species_pack' ARCHIVE_BASE_HUMANOIDS_59_NAME='stellaris_humanoids_species_pack_3_13_2_0_76713.sh' ARCHIVE_BASE_HUMANOIDS_59_MD5='ae7cc19055d5cdcad0642008cb75bd93' ARCHIVE_BASE_HUMANOIDS_59_SIZE='84675' ARCHIVE_BASE_HUMANOIDS_59_VERSION='3.13.2-gog76713' ARCHIVE_BASE_HUMANOIDS_56_NAME='stellaris_humanoids_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_HUMANOIDS_56_MD5='f7fa5900c87f3fb8cd43d9dcead97de2' ARCHIVE_BASE_HUMANOIDS_56_SIZE='116312' ARCHIVE_BASE_HUMANOIDS_56_VERSION='3.12.5-gog74193' ARCHIVE_BASE_HUMANOIDS_52_NAME='stellaris_humanoids_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_HUMANOIDS_52_MD5='833ef910df4b00cfb7e3177b7525bee9' ARCHIVE_BASE_HUMANOIDS_52_SIZE='116312' ARCHIVE_BASE_HUMANOIDS_52_VERSION='3.11.3-gog72561' ARCHIVE_BASE_HUMANOIDS_49_NAME='stellaris_humanoids_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_HUMANOIDS_49_MD5='515dd7f2ae1c68fe53a589f77b7af19c' ARCHIVE_BASE_HUMANOIDS_49_SIZE='116312' ARCHIVE_BASE_HUMANOIDS_49_VERSION='3.10.4-gog70670' ARCHIVE_BASE_HUMANOIDS_43_NAME='stellaris_humanoids_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_HUMANOIDS_43_MD5='d970689331dfae6ad559b4dd8d146080' ARCHIVE_BASE_HUMANOIDS_43_SIZE='116636' ARCHIVE_BASE_HUMANOIDS_43_VERSION='3.9.3-gog68314' ARCHIVE_BASE_HUMANOIDS_40_NAME='stellaris_humanoids_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_HUMANOIDS_40_MD5='435cdbbe3a8affded29b3b6f9d36125a' ARCHIVE_BASE_HUMANOIDS_40_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_40_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_HUMANOIDS_36_NAME='stellaris_humanoids_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_HUMANOIDS_36_MD5='de7661496eba8a9d125b44f3075a71b7' ARCHIVE_BASE_HUMANOIDS_36_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_36_VERSION='3.7.4-gog63489' ARCHIVE_BASE_HUMANOIDS_33_NAME='stellaris_humanoids_species_pack_3_6_1_60754.sh' ARCHIVE_BASE_HUMANOIDS_33_MD5='5124b47dce3c7a7282087e521920fee9' ARCHIVE_BASE_HUMANOIDS_33_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_33_VERSION='3.6.1-gog60754' ARCHIVE_BASE_HUMANOIDS_31_NAME='stellaris_humanoids_species_pack_3_5_3_59410.sh' ARCHIVE_BASE_HUMANOIDS_31_MD5='9f92e8b6853b26bc31da38b5a0991a37' ARCHIVE_BASE_HUMANOIDS_31_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_31_VERSION='3.5.3-gog59410' ARCHIVE_BASE_HUMANOIDS_29_NAME='stellaris_humanoids_species_pack_3_4_5_56913.sh' ARCHIVE_BASE_HUMANOIDS_29_MD5='5fcd93a54b01f93bae743d49bf61860b' ARCHIVE_BASE_HUMANOIDS_29_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_29_VERSION='3.4.5-gog56913' ARCHIVE_BASE_HUMANOIDS_25_NAME='stellaris_humanoids_species_pack_3_3_4_54421.sh' ARCHIVE_BASE_HUMANOIDS_25_MD5='b7ccaa9303516274f7945882bd6a2d2f' ARCHIVE_BASE_HUMANOIDS_25_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_25_VERSION='3.3.4-gog54421' ARCHIVE_BASE_HUMANOIDS_21_NAME='stellaris_humanoids_species_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_HUMANOIDS_21_MD5='d56625b5ce55405530929bea32852f54' ARCHIVE_BASE_HUMANOIDS_21_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_21_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_HUMANOIDS_20_NAME='stellaris_humanoids_species_pack_3_1_1_50008.sh' ARCHIVE_BASE_HUMANOIDS_20_MD5='974908ceeb80ade57dfa00c957604d06' ARCHIVE_BASE_HUMANOIDS_20_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_20_VERSION='3.1.1-gog50008' ARCHIVE_BASE_HUMANOIDS_19_NAME='stellaris_humanoids_species_pack_3_0_3_47193.sh' ARCHIVE_BASE_HUMANOIDS_19_MD5='9dc8511383a7c36c54660d6d77d61117' ARCHIVE_BASE_HUMANOIDS_19_SIZE='120000' ARCHIVE_BASE_HUMANOIDS_19_VERSION='3.0.3-gog47193' ## Lithoids ARCHIVE_BASE_LITHOIDS_48_NAME='stellaris_lithoids_species_pack_3_14_15926_78464.sh' ARCHIVE_BASE_LITHOIDS_48_MD5='588c9fe39ff00c406bdb731808c1d43d' ARCHIVE_BASE_LITHOIDS_48_SIZE='25612' ARCHIVE_BASE_LITHOIDS_48_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_LITHOIDS_48_URL='https://www.gog.com/game/stellaris_lithoids_species_pack' ARCHIVE_BASE_LITHOIDS_47_NAME='stellaris_lithoids_species_pack_3_13_2_0_76713.sh' ARCHIVE_BASE_LITHOIDS_47_MD5='4fba44ef615444494f99af497e4d2b5f' ARCHIVE_BASE_LITHOIDS_47_SIZE='25612' ARCHIVE_BASE_LITHOIDS_47_VERSION='3.13.2-gog76713' ARCHIVE_BASE_LITHOIDS_44_NAME='stellaris_lithoids_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_LITHOIDS_44_MD5='bc4810ff3047e688c1ec0ae0991987ae' ARCHIVE_BASE_LITHOIDS_44_SIZE='52603' ARCHIVE_BASE_LITHOIDS_44_VERSION='3.12.5-gog74193' ARCHIVE_BASE_LITHOIDS_40_NAME='stellaris_lithoids_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_LITHOIDS_40_MD5='8ca00268fd2b3b4fb611b65bc2f4edb7' ARCHIVE_BASE_LITHOIDS_40_SIZE='52603' ARCHIVE_BASE_LITHOIDS_40_VERSION='3.11.3-gog72561' ARCHIVE_BASE_LITHOIDS_37_NAME='stellaris_lithoids_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_LITHOIDS_37_MD5='96caaa7c76349f34823372cc7f9dc769' ARCHIVE_BASE_LITHOIDS_37_SIZE='52603' ARCHIVE_BASE_LITHOIDS_37_VERSION='3.10.4-gog70670' ARCHIVE_BASE_LITHOIDS_31_NAME='stellaris_lithoids_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_LITHOIDS_31_MD5='baecdaa00168fe891ff419b71334f313' ARCHIVE_BASE_LITHOIDS_31_SIZE='52924' ARCHIVE_BASE_LITHOIDS_31_VERSION='3.9.3-gog68314' ARCHIVE_BASE_LITHOIDS_28_NAME='stellaris_lithoids_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_LITHOIDS_28_MD5='65723d6948a9380c1397b280f9bc20f4' ARCHIVE_BASE_LITHOIDS_28_SIZE='53000' ARCHIVE_BASE_LITHOIDS_28_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_LITHOIDS_24_NAME='stellaris_lithoids_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_LITHOIDS_24_MD5='bfc5632131852032fda229260aa179d6' ARCHIVE_BASE_LITHOIDS_24_SIZE='53000' ARCHIVE_BASE_LITHOIDS_24_VERSION='3.7.4-gog63489' ARCHIVE_BASE_LITHOIDS_21_NAME='stellaris_lithoids_species_pack_3_6_1_60754.sh' ARCHIVE_BASE_LITHOIDS_21_MD5='0adc3e342f420e26a04b256595eee248' ARCHIVE_BASE_LITHOIDS_21_SIZE='53000' ARCHIVE_BASE_LITHOIDS_21_VERSION='3.6.1-gog60754' ARCHIVE_BASE_LITHOIDS_19_NAME='stellaris_lithoids_species_pack_3_5_3_59410.sh' ARCHIVE_BASE_LITHOIDS_19_MD5='30bac0aa5302f556fb13511df2e8194b' ARCHIVE_BASE_LITHOIDS_19_SIZE='53000' ARCHIVE_BASE_LITHOIDS_19_VERSION='3.5.3-gog59410' ARCHIVE_BASE_LITHOIDS_17_NAME='stellaris_lithoids_species_pack_3_4_5_56913.sh' ARCHIVE_BASE_LITHOIDS_17_MD5='54fb17af3ed8b442074c83cf2b818693' ARCHIVE_BASE_LITHOIDS_17_SIZE='53000' ARCHIVE_BASE_LITHOIDS_17_VERSION='3.4.5-gog56913' ARCHIVE_BASE_LITHOIDS_13_NAME='stellaris_lithoids_species_pack_3_3_4_54421.sh' ARCHIVE_BASE_LITHOIDS_13_MD5='cde1e9ed0deaeff8850242e4157783be' ARCHIVE_BASE_LITHOIDS_13_SIZE='53000' ARCHIVE_BASE_LITHOIDS_13_VERSION='3.3.4-gog54421' ARCHIVE_BASE_LITHOIDS_9_NAME='stellaris_lithoids_species_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_LITHOIDS_9_MD5='ed5aca5df6d72a84f0572200e1d432fe' ARCHIVE_BASE_LITHOIDS_9_SIZE='53000' ARCHIVE_BASE_LITHOIDS_9_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_LITHOIDS_8_NAME='stellaris_lithoids_species_pack_3_1_1_50008.sh' ARCHIVE_BASE_LITHOIDS_8_MD5='c935a54a2e9ac78d195440d7ca1391f9' ARCHIVE_BASE_LITHOIDS_8_SIZE='53000' ARCHIVE_BASE_LITHOIDS_8_VERSION='3.1.1-gog50008' ARCHIVE_BASE_LITHOIDS_7_NAME='stellaris_lithoids_species_pack_3_0_3_47193.sh' ARCHIVE_BASE_LITHOIDS_7_MD5='44a8e1008468825af82ec138be388fe9' ARCHIVE_BASE_LITHOIDS_7_SIZE='53000' ARCHIVE_BASE_LITHOIDS_7_VERSION='3.0.3-gog47193' ## Necroids ARCHIVE_BASE_NECROIDS_33_NAME='stellaris_necroids_species_pack_3_14_15926_78464.sh' ARCHIVE_BASE_NECROIDS_33_MD5='fea1b49566e99f4e1b008c31a85b9bd1' ARCHIVE_BASE_NECROIDS_33_SIZE='24881' ARCHIVE_BASE_NECROIDS_33_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_NECROIDS_33_URL='https://www.gog.com/game/stellaris_necroids_species_pack' ARCHIVE_BASE_NECROIDS_32_NAME='stellaris_necroids_species_pack_3_13_2_0_76713.sh' ARCHIVE_BASE_NECROIDS_32_MD5='0d3e8d5a8614c7b327584add2c38d13b' ARCHIVE_BASE_NECROIDS_32_SIZE='24881' ARCHIVE_BASE_NECROIDS_32_VERSION='3.13.2-gog76713' ARCHIVE_BASE_NECROIDS_29_NAME='stellaris_necroids_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_NECROIDS_29_MD5='3df3d9f80ed1d79a2f0f412535b77d54' ARCHIVE_BASE_NECROIDS_29_SIZE='49209' ARCHIVE_BASE_NECROIDS_29_VERSION='3.12.5-gog74193' ARCHIVE_BASE_NECROIDS_25_NAME='stellaris_necroids_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_NECROIDS_25_MD5='d0f677482b688ebe46e0abf20ece8477' ARCHIVE_BASE_NECROIDS_25_SIZE='49209' ARCHIVE_BASE_NECROIDS_25_VERSION='3.11.3-gog72561' ARCHIVE_BASE_NECROIDS_22_NAME='stellaris_necroids_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_NECROIDS_22_MD5='5549b1dfec82af2de64537ed751a1920' ARCHIVE_BASE_NECROIDS_22_SIZE='49209' ARCHIVE_BASE_NECROIDS_22_VERSION='3.10.4-gog70670' ARCHIVE_BASE_NECROIDS_16_NAME='stellaris_necroids_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_NECROIDS_16_MD5='8afbc28fb3af625dd145381e44fe7bde' ARCHIVE_BASE_NECROIDS_16_SIZE='49524' ARCHIVE_BASE_NECROIDS_16_VERSION='3.9.3-gog68314' ARCHIVE_BASE_NECROIDS_13_NAME='stellaris_necroids_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_NECROIDS_13_MD5='2614b147a120b97e0d5e4f0a24719f82' ARCHIVE_BASE_NECROIDS_13_SIZE='50000' ARCHIVE_BASE_NECROIDS_13_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_NECROIDS_9_NAME='stellaris_necroids_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_NECROIDS_9_MD5='631269beefca458e901a727af53e09d0' ARCHIVE_BASE_NECROIDS_9_SIZE='50000' ARCHIVE_BASE_NECROIDS_9_VERSION='3.7.4-gog63489' ARCHIVE_BASE_NECROIDS_6_NAME='stellaris_necroids_species_pack_3_6_1_60754.sh' ARCHIVE_BASE_NECROIDS_6_MD5='13605c18c7d483b3c8abeff2d60c65f7' ARCHIVE_BASE_NECROIDS_6_SIZE='50000' ARCHIVE_BASE_NECROIDS_6_VERSION='3.6.1-gog60754' ARCHIVE_BASE_NECROIDS_4_NAME='stellaris_necroids_species_pack_3_5_3_59410.sh' ARCHIVE_BASE_NECROIDS_4_MD5='23faec896d52d6f2773e19838f365113' ARCHIVE_BASE_NECROIDS_4_SIZE='50000' ARCHIVE_BASE_NECROIDS_4_VERSION='3.5.3-gog59410' ARCHIVE_BASE_NECROIDS_2_NAME='stellaris_necroids_species_pack_3_4_5_56913.sh' ARCHIVE_BASE_NECROIDS_2_MD5='e64ecf03e49671cedf3e164709a5837a' ARCHIVE_BASE_NECROIDS_2_SIZE='50000' ARCHIVE_BASE_NECROIDS_2_VERSION='3.4.5-gog56913' ## Aquatics ARCHIVE_BASE_AQUATICS_31_NAME='stellaris_aquatics_species_pack_3_14_15926_78464.sh' ARCHIVE_BASE_AQUATICS_31_MD5='9d08da8254187e23fb6334972edd881f' ARCHIVE_BASE_AQUATICS_31_SIZE='29883' ARCHIVE_BASE_AQUATICS_31_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_AQUATICS_31_URL='https://www.gog.com/game/stellaris_aquatics_species_pack' ARCHIVE_BASE_AQUATICS_30_NAME='stellaris_aquatics_species_pack_3_13_2_0_76713.sh' ARCHIVE_BASE_AQUATICS_30_MD5='fc83fab4aa3748870d373f1fe24f0be3' ARCHIVE_BASE_AQUATICS_30_SIZE='29883' ARCHIVE_BASE_AQUATICS_30_VERSION='3.13.2-gog76713' ARCHIVE_BASE_AQUATICS_27_NAME='stellaris_aquatics_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_AQUATICS_27_MD5='0d9d2d2a38c60025b79e72011b52837c' ARCHIVE_BASE_AQUATICS_27_SIZE='57544' ARCHIVE_BASE_AQUATICS_27_VERSION='3.12.5-gog74193' ARCHIVE_BASE_AQUATICS_23_NAME='stellaris_aquatics_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_AQUATICS_23_MD5='818beaf18d82951df0b1028eb0d7f78a' ARCHIVE_BASE_AQUATICS_23_SIZE='120876' ARCHIVE_BASE_AQUATICS_23_VERSION='3.11.3-gog72561' ARCHIVE_BASE_AQUATICS_20_NAME='stellaris_aquatics_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_AQUATICS_20_MD5='335d95744fa5467cad87e276fb8d6997' ARCHIVE_BASE_AQUATICS_20_SIZE='120876' ARCHIVE_BASE_AQUATICS_20_VERSION='3.10.4-gog70670' ARCHIVE_BASE_AQUATICS_14_NAME='stellaris_aquatics_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_AQUATICS_14_MD5='39294019e3f068916fea06f68e35b1ee' ARCHIVE_BASE_AQUATICS_14_SIZE='121448' ARCHIVE_BASE_AQUATICS_14_VERSION='3.9.3-gog68314' ARCHIVE_BASE_AQUATICS_11_NAME='stellaris_aquatics_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_AQUATICS_11_MD5='34a45daa4a4d1bf204dc9798917692b5' ARCHIVE_BASE_AQUATICS_11_SIZE='130000' ARCHIVE_BASE_AQUATICS_11_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_AQUATICS_7_NAME='stellaris_aquatics_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_AQUATICS_7_MD5='f825b3f150a7d936b04b3f5bd35d9f5b' ARCHIVE_BASE_AQUATICS_7_SIZE='130000' ARCHIVE_BASE_AQUATICS_7_VERSION='3.7.4-gog63489' ARCHIVE_BASE_AQUATICS_4_NAME='stellaris_aquatics_species_pack_3_6_1_60754.sh' ARCHIVE_BASE_AQUATICS_4_MD5='5cfdb2861b8c3de9c83798799b477ad6' ARCHIVE_BASE_AQUATICS_4_SIZE='130000' ARCHIVE_BASE_AQUATICS_4_VERSION='3.6.1-gog60754' ARCHIVE_BASE_AQUATICS_2_NAME='stellaris_aquatics_species_pack_3_5_3_59410.sh' ARCHIVE_BASE_AQUATICS_2_MD5='7e3210b2d64b851907a97ed3455ad035' ARCHIVE_BASE_AQUATICS_2_SIZE='130000' ARCHIVE_BASE_AQUATICS_2_VERSION='3.5.3-gog59410' ARCHIVE_BASE_AQUATICS_0_NAME='stellaris_aquatics_species_pack_3_4_5_56913.sh' ARCHIVE_BASE_AQUATICS_0_MD5='0d6fe86d3ec24b114742a333b8de4a3b' ARCHIVE_BASE_AQUATICS_0_SIZE='130000' ARCHIVE_BASE_AQUATICS_0_VERSION='3.4.5-gog56913' ## Toxoids ARCHIVE_BASE_TOXOIDS_24_NAME='stellaris_toxoids_species_pack_3_14_15926_78464.sh' ARCHIVE_BASE_TOXOIDS_24_MD5='eb217db0b1389b6e62e228fe216391ed' ARCHIVE_BASE_TOXOIDS_24_SIZE='21991' ARCHIVE_BASE_TOXOIDS_24_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_TOXOIDS_24_URL='https://www.gog.com/game/stellaris_toxoids_species_pack' ARCHIVE_BASE_TOXOIDS_23_NAME='stellaris_toxoids_species_pack_3_13_2_0_76713.sh' ARCHIVE_BASE_TOXOIDS_23_MD5='a201f70c2f26f9945459e0a9db4a3ea6' ARCHIVE_BASE_TOXOIDS_23_SIZE='21991' ARCHIVE_BASE_TOXOIDS_23_VERSION='3.13.2-gog76713' ARCHIVE_BASE_TOXOIDS_20_NAME='stellaris_toxoids_species_pack_3_12_5_74193.sh' ARCHIVE_BASE_TOXOIDS_20_MD5='788f0afe85d1f90c91567e3958ddcae1' ARCHIVE_BASE_TOXOIDS_20_SIZE='41495' ARCHIVE_BASE_TOXOIDS_20_VERSION='3.12.5-gog74193' ARCHIVE_BASE_TOXOIDS_16_NAME='stellaris_toxoids_species_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_TOXOIDS_16_MD5='4dc7bf366e2e84febbe88f77057c018c' ARCHIVE_BASE_TOXOIDS_16_SIZE='41495' ARCHIVE_BASE_TOXOIDS_16_VERSION='3.11.3-gog72561' ARCHIVE_BASE_TOXOIDS_13_NAME='stellaris_toxoids_species_pack_3_10_4_70670.sh' ARCHIVE_BASE_TOXOIDS_13_MD5='ee41aba19af2f2f91bbe3c156bf614f5' ARCHIVE_BASE_TOXOIDS_13_SIZE='41495' ARCHIVE_BASE_TOXOIDS_13_VERSION='3.10.4-gog70670' ARCHIVE_BASE_TOXOIDS_7_NAME='stellaris_toxoids_species_pack_3_9_3_68314.sh' ARCHIVE_BASE_TOXOIDS_7_MD5='69ee5d18ffe310c64ee61934ec64aa1f' ARCHIVE_BASE_TOXOIDS_7_SIZE='41812' ARCHIVE_BASE_TOXOIDS_7_VERSION='3.9.3-gog68314' ARCHIVE_BASE_TOXOIDS_4_NAME='stellaris_toxoids_species_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_TOXOIDS_4_MD5='90926bd74621bf180a074d4721b594f9' ARCHIVE_BASE_TOXOIDS_4_SIZE='42000' ARCHIVE_BASE_TOXOIDS_4_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_TOXOIDS_0_NAME='stellaris_toxoids_species_pack_3_7_4_63489.sh' ARCHIVE_BASE_TOXOIDS_0_MD5='e6af2b93063b67bc78d6a44c70caee1c' ARCHIVE_BASE_TOXOIDS_0_SIZE='42000' ARCHIVE_BASE_TOXOIDS_0_VERSION='3.7.4-gog63489' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-stellaris-expansions-story-packs.sh0000755000000000000000000004536314471751340020637 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=20241215.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_60_NAME='stellaris_leviathans_story_pack_3_14_15926_78464.sh' ARCHIVE_BASE_LEVIATHANS_60_MD5='ae80f10988cea54f567a8d9bbc34b6d9' ARCHIVE_BASE_LEVIATHANS_60_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_60_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_LEVIATHANS_60_URL='https://www.gog.com/game/stellaris_leviathans_story_pack' ARCHIVE_BASE_LEVIATHANS_59_NAME='stellaris_leviathans_story_pack_3_13_2_0_76713.sh' ARCHIVE_BASE_LEVIATHANS_59_MD5='07773ecc28478515fc25fd000941fd38' ARCHIVE_BASE_LEVIATHANS_59_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_59_VERSION='3.13.2-gog76713' ARCHIVE_BASE_LEVIATHANS_56_NAME='stellaris_leviathans_story_pack_3_12_5_74193.sh' ARCHIVE_BASE_LEVIATHANS_56_MD5='8ab8f647d2405c443ee699b1ec3e17b4' ARCHIVE_BASE_LEVIATHANS_56_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_56_VERSION='3.12.5-gog74193' ARCHIVE_BASE_LEVIATHANS_52_NAME='stellaris_leviathans_story_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_LEVIATHANS_52_MD5='bbdede0f81d260b3225f671518d6f135' ARCHIVE_BASE_LEVIATHANS_52_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_52_VERSION='3.11.3-gog72561' ARCHIVE_BASE_LEVIATHANS_49_NAME='stellaris_leviathans_story_pack_3_10_4_70670.sh' ARCHIVE_BASE_LEVIATHANS_49_MD5='ca7bd55fd1121dff315cf4bdc748ce5c' ARCHIVE_BASE_LEVIATHANS_49_SIZE='58426' ARCHIVE_BASE_LEVIATHANS_49_VERSION='3.10.4-gog70670' ARCHIVE_BASE_LEVIATHANS_43_NAME='stellaris_leviathans_story_pack_3_9_3_68314.sh' ARCHIVE_BASE_LEVIATHANS_43_MD5='12ed6b4e72c61d7d5a2223acfe3dec45' ARCHIVE_BASE_LEVIATHANS_43_SIZE='58744' ARCHIVE_BASE_LEVIATHANS_43_VERSION='3.9.3-gog68314' ARCHIVE_BASE_LEVIATHANS_40_NAME='stellaris_leviathans_story_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_LEVIATHANS_40_MD5='575490fe9da72c0211e65e42e2667544' ARCHIVE_BASE_LEVIATHANS_40_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_40_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_LEVIATHANS_36_NAME='stellaris_leviathans_story_pack_3_7_4_63489.sh' ARCHIVE_BASE_LEVIATHANS_36_MD5='e9bc3c4a49159663d905892a0f7f5a75' ARCHIVE_BASE_LEVIATHANS_36_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_36_VERSION='3.7.4-gog63489' ARCHIVE_BASE_LEVIATHANS_33_NAME='stellaris_leviathans_story_pack_3_6_1_60754.sh' ARCHIVE_BASE_LEVIATHANS_33_MD5='9ef91ba3bb1633cf4cb907f5de892817' ARCHIVE_BASE_LEVIATHANS_33_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_33_VERSION='3.6.1-gog60754' ARCHIVE_BASE_LEVIATHANS_31_NAME='stellaris_leviathans_story_pack_3_5_3_59410.sh' ARCHIVE_BASE_LEVIATHANS_31_MD5='46f80e45435155c5c94aa1f3bbabf797' ARCHIVE_BASE_LEVIATHANS_31_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_31_VERSION='3.5.3-gog59410' ARCHIVE_BASE_LEVIATHANS_29_NAME='stellaris_leviathans_story_pack_3_4_5_56913.sh' ARCHIVE_BASE_LEVIATHANS_29_MD5='514ca47c97e6edf951697ba361df53bd' ARCHIVE_BASE_LEVIATHANS_29_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_29_VERSION='3.4.5-gog56913' ARCHIVE_BASE_LEVIATHANS_25_NAME='stellaris_leviathans_story_pack_3_3_4_54421.sh' ARCHIVE_BASE_LEVIATHANS_25_MD5='367a1abfe37c32461302cf84c9bdd551' ARCHIVE_BASE_LEVIATHANS_25_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_25_VERSION='3.3.4-gog54421' ARCHIVE_BASE_LEVIATHANS_21_NAME='stellaris_leviathans_story_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_LEVIATHANS_21_MD5='33a7db46efae680eb6718ccd6c386e53' ARCHIVE_BASE_LEVIATHANS_21_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_21_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_LEVIATHANS_20_NAME='stellaris_leviathans_story_pack_3_1_1_50008.sh' ARCHIVE_BASE_LEVIATHANS_20_MD5='162521d883f491fcb4e397b9a60c46fd' ARCHIVE_BASE_LEVIATHANS_20_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_20_VERSION='3.1.1-gog50008' ARCHIVE_BASE_LEVIATHANS_19_NAME='stellaris_leviathans_story_pack_3_0_3_47193.sh' ARCHIVE_BASE_LEVIATHANS_19_MD5='70f70d4656a3b3069bec4b138b1c27d5' ARCHIVE_BASE_LEVIATHANS_19_SIZE='59000' ARCHIVE_BASE_LEVIATHANS_19_VERSION='3.0.3-gog47193' ## Synthetic Dawn ARCHIVE_BASE_SYNTHETICDAWN_59_NAME='stellaris_synthetic_dawn_story_pack_3_14_15926_78464.sh' ARCHIVE_BASE_SYNTHETICDAWN_59_MD5='6f0eed28ff1d4ed3e0ca8a0470e04b8a' ARCHIVE_BASE_SYNTHETICDAWN_59_SIZE='48245' ARCHIVE_BASE_SYNTHETICDAWN_59_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_SYNTHETICDAWN_59_URL='https://www.gog.com/game/stellaris_synthetic_dawn_story_pack' ARCHIVE_BASE_SYNTHETICDAWN_58_NAME='stellaris_synthetic_dawn_story_pack_3_13_2_0_76713.sh' ARCHIVE_BASE_SYNTHETICDAWN_58_MD5='2d9bc46f1afe830229ac56b7800a1aba' ARCHIVE_BASE_SYNTHETICDAWN_58_SIZE='48245' ARCHIVE_BASE_SYNTHETICDAWN_58_VERSION='3.13.2-gog76713' ARCHIVE_BASE_SYNTHETICDAWN_55_NAME='stellaris_synthetic_dawn_story_pack_3_12_5_74193.sh' ARCHIVE_BASE_SYNTHETICDAWN_55_MD5='28f5282f2422cce01ca868a906eb499c' ARCHIVE_BASE_SYNTHETICDAWN_55_SIZE='48244' ARCHIVE_BASE_SYNTHETICDAWN_55_VERSION='3.12.5-gog74193' ARCHIVE_BASE_SYNTHETICDAWN_51_NAME='stellaris_synthetic_dawn_story_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_SYNTHETICDAWN_51_MD5='dacbf32f6358906934c4168ad06fff0d' ARCHIVE_BASE_SYNTHETICDAWN_51_SIZE='48244' ARCHIVE_BASE_SYNTHETICDAWN_51_VERSION='3.11.3-gog72561' ARCHIVE_BASE_SYNTHETICDAWN_48_NAME='stellaris_synthetic_dawn_story_pack_3_10_4_70670.sh' ARCHIVE_BASE_SYNTHETICDAWN_48_MD5='4b16f920acc6b2257386f020192aafce' ARCHIVE_BASE_SYNTHETICDAWN_48_SIZE='48244' ARCHIVE_BASE_SYNTHETICDAWN_48_VERSION='3.10.4-gog70670' ARCHIVE_BASE_SYNTHETICDAWN_42_NAME='stellaris_synthetic_dawn_story_pack_3_9_3_68314.sh' ARCHIVE_BASE_SYNTHETICDAWN_42_MD5='b2f35b4c887634e98fbce5e737dd78d1' ARCHIVE_BASE_SYNTHETICDAWN_42_SIZE='48564' ARCHIVE_BASE_SYNTHETICDAWN_42_VERSION='3.9.3-gog68314' ARCHIVE_BASE_SYNTHETICDAWN_39_NAME='stellaris_synthetic_dawn_story_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_SYNTHETICDAWN_39_MD5='8752ebda6f3ff2a6f1f3ae38ee50e3e8' ARCHIVE_BASE_SYNTHETICDAWN_39_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_39_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_SYNTHETICDAWN_35_NAME='stellaris_synthetic_dawn_story_pack_3_7_4_63489.sh' ARCHIVE_BASE_SYNTHETICDAWN_35_MD5='09458636f871c76f7e22cc468a7a9f41' ARCHIVE_BASE_SYNTHETICDAWN_35_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_35_VERSION='3.7.4-gog63489' ARCHIVE_BASE_SYNTHETICDAWN_32_NAME='stellaris_synthetic_dawn_story_pack_3_6_1_60754.sh' ARCHIVE_BASE_SYNTHETICDAWN_32_MD5='1e203e5c19fe5c63400cf566fea62164' ARCHIVE_BASE_SYNTHETICDAWN_32_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_32_VERSION='3.6.1-gog60754' ARCHIVE_BASE_SYNTHETICDAWN_30_NAME='stellaris_synthetic_dawn_story_pack_3_5_3_59410.sh' ARCHIVE_BASE_SYNTHETICDAWN_30_MD5='8f6b7a85ca65572e15f61d724ea99317' ARCHIVE_BASE_SYNTHETICDAWN_30_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_30_VERSION='3.5.3-gog59410' ARCHIVE_BASE_SYNTHETICDAWN_28_NAME='stellaris_synthetic_dawn_story_pack_3_4_5_56913.sh' ARCHIVE_BASE_SYNTHETICDAWN_28_MD5='cbcd2a2c6d1b088b634842b9d4abb941' ARCHIVE_BASE_SYNTHETICDAWN_28_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_28_VERSION='3.4.5-gog56913' ARCHIVE_BASE_SYNTHETICDAWN_24_NAME='stellaris_synthetic_dawn_story_pack_3_3_4_54421.sh' ARCHIVE_BASE_SYNTHETICDAWN_24_MD5='b89665cf745898060051099d606a889d' ARCHIVE_BASE_SYNTHETICDAWN_24_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_24_VERSION='3.3.4-gog54421' ARCHIVE_BASE_SYNTHETICDAWN_20_NAME='stellaris_synthetic_dawn_story_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_SYNTHETICDAWN_20_MD5='9b00445bf6b381832f6de06e2f5b7827' ARCHIVE_BASE_SYNTHETICDAWN_20_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_20_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_SYNTHETICDAWN_19_NAME='stellaris_synthetic_dawn_story_pack_3_1_1_50008.sh' ARCHIVE_BASE_SYNTHETICDAWN_19_MD5='69ba65596bc537841adc7c70ff0778a9' ARCHIVE_BASE_SYNTHETICDAWN_19_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_19_VERSION='3.1.1-gog50008' ARCHIVE_BASE_SYNTHETICDAWN_18_NAME='stellaris_synthetic_dawn_story_pack_3_0_3_47193.sh' ARCHIVE_BASE_SYNTHETICDAWN_18_MD5='b4231ca3b95b4bdb9e9a2e33c747d8c5' ARCHIVE_BASE_SYNTHETICDAWN_18_SIZE='49000' ARCHIVE_BASE_SYNTHETICDAWN_18_VERSION='3.0.3-gog47193' ## Distant Stars ARCHIVE_BASE_DISTANTSTARS_59_NAME='stellaris_distant_stars_story_pack_3_14_15926_78464.sh' ARCHIVE_BASE_DISTANTSTARS_59_MD5='1249e6a985f8cd62ecfa37a27b14e877' ARCHIVE_BASE_DISTANTSTARS_59_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_59_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_DISTANTSTARS_59_URL='https://www.gog.com/game/stellaris_distant_stars_story_pack' ARCHIVE_BASE_DISTANTSTARS_58_NAME='stellaris_distant_stars_story_pack_3_13_2_0_76713.sh' ARCHIVE_BASE_DISTANTSTARS_58_MD5='ee7f70b07d50956b05d0eb64ae752222' ARCHIVE_BASE_DISTANTSTARS_58_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_58_VERSION='3.13.2-gog76713' ARCHIVE_BASE_DISTANTSTARS_55_NAME='stellaris_distant_stars_story_pack_3_12_5_74193.sh' ARCHIVE_BASE_DISTANTSTARS_55_MD5='be7d046f1e0165f607e0d19cf28eddc9' ARCHIVE_BASE_DISTANTSTARS_55_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_55_VERSION='3.12.5-gog74193' ARCHIVE_BASE_DISTANTSTARS_51_NAME='stellaris_distant_stars_story_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_DISTANTSTARS_51_MD5='1c05d748caac4118b22b1e7524936427' ARCHIVE_BASE_DISTANTSTARS_51_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_51_VERSION='3.11.3-gog72561' ARCHIVE_BASE_DISTANTSTARS_48_NAME='stellaris_distant_stars_story_pack_3_10_4_70670.sh' ARCHIVE_BASE_DISTANTSTARS_48_MD5='35b7b4c4e536fdefae1668c74e3932cc' ARCHIVE_BASE_DISTANTSTARS_48_SIZE='20832' ARCHIVE_BASE_DISTANTSTARS_48_VERSION='3.10.4-gog70670' ARCHIVE_BASE_DISTANTSTARS_42_NAME='stellaris_distant_stars_story_pack_3_9_3_68314.sh' ARCHIVE_BASE_DISTANTSTARS_42_MD5='9a03b641cc29f77008530d21e64f5232' ARCHIVE_BASE_DISTANTSTARS_42_SIZE='21148' ARCHIVE_BASE_DISTANTSTARS_42_VERSION='3.9.3-gog68314' ARCHIVE_BASE_DISTANTSTARS_39_NAME='stellaris_distant_stars_story_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_DISTANTSTARS_39_MD5='dcbb606208a16bc8f5f413239bfe69a4' ARCHIVE_BASE_DISTANTSTARS_39_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_39_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_DISTANTSTARS_35_NAME='stellaris_distant_stars_story_pack_3_7_4_63489.sh' ARCHIVE_BASE_DISTANTSTARS_35_MD5='d2989715cc656a73c1e2ca922bba10aa' ARCHIVE_BASE_DISTANTSTARS_35_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_35_VERSION='3.7.4-gog63489' ARCHIVE_BASE_DISTANTSTARS_32_NAME='stellaris_distant_stars_story_pack_3_6_1_60754.sh' ARCHIVE_BASE_DISTANTSTARS_32_MD5='1581145f5d4f4dbb491f3d3e1624577d' ARCHIVE_BASE_DISTANTSTARS_32_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_32_VERSION='3.6.1-gog60754' ARCHIVE_BASE_DISTANTSTARS_30_NAME='stellaris_distant_stars_story_pack_3_5_3_59410.sh' ARCHIVE_BASE_DISTANTSTARS_30_MD5='5ca6cc0d7554484af76e491211d75233' ARCHIVE_BASE_DISTANTSTARS_30_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_30_VERSION='3.5.3-gog59410' ARCHIVE_BASE_DISTANTSTARS_28_NAME='stellaris_distant_stars_story_pack_3_4_5_56913.sh' ARCHIVE_BASE_DISTANTSTARS_28_MD5='b2e6d53683346c48d44a058abd18eff9' ARCHIVE_BASE_DISTANTSTARS_28_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_28_VERSION='3.4.5-gog56913' ARCHIVE_BASE_DISTANTSTARS_24_NAME='stellaris_distant_stars_story_pack_3_3_4_54421.sh' ARCHIVE_BASE_DISTANTSTARS_24_MD5='1ca0abfacce33943685ad442ebf9d81a' ARCHIVE_BASE_DISTANTSTARS_24_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_24_VERSION='3.3.4-gog54421' ARCHIVE_BASE_DISTANTSTARS_20_NAME='stellaris_distant_stars_story_pack_3_2_1_1_51520.sh' ARCHIVE_BASE_DISTANTSTARS_20_MD5='a24264507765c470fa5d579b02fc8e32' ARCHIVE_BASE_DISTANTSTARS_20_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_20_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_DISTANTSTARS_19_NAME='stellaris_distant_stars_story_pack_3_1_1_50008.sh' ARCHIVE_BASE_DISTANTSTARS_19_MD5='31eeae1be998363fec20a8a09affd7b4' ARCHIVE_BASE_DISTANTSTARS_19_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_19_VERSION='3.1.1-gog50008' ARCHIVE_BASE_DISTANTSTARS_18_NAME='stellaris_distant_stars_story_pack_3_0_3_47193.sh' ARCHIVE_BASE_DISTANTSTARS_18_MD5='a19db33750977b3334a553f8c4259bf4' ARCHIVE_BASE_DISTANTSTARS_18_SIZE='22000' ARCHIVE_BASE_DISTANTSTARS_18_VERSION='3.0.3-gog47193' ## Ancient Relics ARCHIVE_BASE_ANCIENTRELICS_48_NAME='stellaris_ancient_relics_3_14_15926_78464.sh' ARCHIVE_BASE_ANCIENTRELICS_48_MD5='df19c65b00fa9fe93f07bd78896a7840' ARCHIVE_BASE_ANCIENTRELICS_48_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_48_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_ANCIENTRELICS_48_URL='https://www.gog.com/game/stellaris_ancient_relics_story_pack' ARCHIVE_BASE_ANCIENTRELICS_47_NAME='stellaris_ancient_relics_3_13_2_0_76713.sh' ARCHIVE_BASE_ANCIENTRELICS_47_MD5='a5154d3b51af853b0c45eeb0685a7f7d' ARCHIVE_BASE_ANCIENTRELICS_47_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_47_VERSION='3.13.2-gog76713' ARCHIVE_BASE_ANCIENTRELICS_44_NAME='stellaris_ancient_relics_3_12_5_74193.sh' ARCHIVE_BASE_ANCIENTRELICS_44_MD5='35a896e2d8a9044a15898e9f55a39d47' ARCHIVE_BASE_ANCIENTRELICS_44_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_44_VERSION='3.12.5-gog74193' ARCHIVE_BASE_ANCIENTRELICS_40_NAME='stellaris_ancient_relics_3_11_3_0_72561.sh' ARCHIVE_BASE_ANCIENTRELICS_40_MD5='a1468916582d7e7ad9c73ad58d2a37ec' ARCHIVE_BASE_ANCIENTRELICS_40_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_40_VERSION='3.11.3-gog72561' ARCHIVE_BASE_ANCIENTRELICS_37_NAME='stellaris_ancient_relics_3_10_4_70670.sh' ARCHIVE_BASE_ANCIENTRELICS_37_MD5='dacebe45d724aa535d28dc73fd2b78ab' ARCHIVE_BASE_ANCIENTRELICS_37_SIZE='32739' ARCHIVE_BASE_ANCIENTRELICS_37_VERSION='3.10.4-gog70670' ARCHIVE_BASE_ANCIENTRELICS_31_NAME='stellaris_ancient_relics_3_9_3_68314.sh' ARCHIVE_BASE_ANCIENTRELICS_31_MD5='19909812633ca0d83ad774683f60451f' ARCHIVE_BASE_ANCIENTRELICS_31_SIZE='33060' ARCHIVE_BASE_ANCIENTRELICS_31_VERSION='3.9.3-gog68314' ARCHIVE_BASE_ANCIENTRELICS_28_NAME='stellaris_ancient_relics_3_8_4_1_65337.sh' ARCHIVE_BASE_ANCIENTRELICS_28_MD5='491929cb272a6a866020c69a94f3e01b' ARCHIVE_BASE_ANCIENTRELICS_28_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_28_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_ANCIENTRELICS_24_NAME='stellaris_ancient_relics_3_7_4_63489.sh' ARCHIVE_BASE_ANCIENTRELICS_24_MD5='51f5bc20188137581737a446b1b7498b' ARCHIVE_BASE_ANCIENTRELICS_24_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_24_VERSION='3.7.4-gog63489' ARCHIVE_BASE_ANCIENTRELICS_21_NAME='stellaris_ancient_relics_3_6_1_60754.sh' ARCHIVE_BASE_ANCIENTRELICS_21_MD5='40806c04f94d933aa555bc9d9605396c' ARCHIVE_BASE_ANCIENTRELICS_21_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_21_VERSION='3.6.1-gog60754' ARCHIVE_BASE_ANCIENTRELICS_19_NAME='stellaris_ancient_relics_3_5_3_59410.sh' ARCHIVE_BASE_ANCIENTRELICS_19_MD5='1052a7d2b77ba0ebbd8af19767952b47' ARCHIVE_BASE_ANCIENTRELICS_19_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_19_VERSION='3.5.3-gog59410' ARCHIVE_BASE_ANCIENTRELICS_17_NAME='stellaris_ancient_relics_3_4_5_56913.sh' ARCHIVE_BASE_ANCIENTRELICS_17_MD5='b7536ac852bebe9b12a359c4c0a6ca5e' ARCHIVE_BASE_ANCIENTRELICS_17_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_17_VERSION='3.4.5-gog56913' ARCHIVE_BASE_ANCIENTRELICS_13_NAME='stellaris_ancient_relics_3_3_4_54421.sh' ARCHIVE_BASE_ANCIENTRELICS_13_MD5='c09ef087df7e271758b4b8a47a1353bd' ARCHIVE_BASE_ANCIENTRELICS_13_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_13_VERSION='3.3.4-gog54421' ARCHIVE_BASE_ANCIENTRELICS_9_NAME='stellaris_ancient_relics_3_2_1_1_51520.sh' ARCHIVE_BASE_ANCIENTRELICS_9_MD5='45de001d3d2b3999d6c4c8948fc22458' ARCHIVE_BASE_ANCIENTRELICS_9_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_9_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_ANCIENTRELICS_8_NAME='stellaris_ancient_relics_3_1_1_50008.sh' ARCHIVE_BASE_ANCIENTRELICS_8_MD5='ec441d202f321a3d8b23af35fed33531' ARCHIVE_BASE_ANCIENTRELICS_8_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_8_VERSION='3.1.1-gog50008' ARCHIVE_BASE_ANCIENTRELICS_7_NAME='stellaris_ancient_relics_3_0_3_47193.sh' ARCHIVE_BASE_ANCIENTRELICS_7_MD5='d98a169dca98257b3944517d98cd17a0' ARCHIVE_BASE_ANCIENTRELICS_7_SIZE='34000' ARCHIVE_BASE_ANCIENTRELICS_7_VERSION='3.0.3-gog47193' ## First Contact ARCHIVE_BASE_FIRSTCONTACT_22_NAME='stellaris_first_contact_story_pack_3_14_15926_78464.sh' ARCHIVE_BASE_FIRSTCONTACT_22_MD5='b7e4021113960f1ca6a26db56a7d13fb' ARCHIVE_BASE_FIRSTCONTACT_22_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_22_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_FIRSTCONTACT_22_URL='https://www.gog.com/game/stellaris_first_contact_story_pack' ARCHIVE_BASE_FIRSTCONTACT_21_NAME='stellaris_first_contact_story_pack_3_13_2_0_76713.sh' ARCHIVE_BASE_FIRSTCONTACT_21_MD5='12877f96dc523f3328a8f8231ebb2d84' ARCHIVE_BASE_FIRSTCONTACT_21_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_21_VERSION='3.13.2-gog76713' ARCHIVE_BASE_FIRSTCONTACT_18_NAME='stellaris_first_contact_story_pack_3_12_5_74193.sh' ARCHIVE_BASE_FIRSTCONTACT_18_MD5='d3e6622881abe21c5883e5fa61988f6b' ARCHIVE_BASE_FIRSTCONTACT_18_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_18_VERSION='3.12.5-gog74193' ARCHIVE_BASE_FIRSTCONTACT_14_NAME='stellaris_first_contact_story_pack_3_11_3_0_72561.sh' ARCHIVE_BASE_FIRSTCONTACT_14_MD5='946d0530c559cc4275177143f808a4e6' ARCHIVE_BASE_FIRSTCONTACT_14_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_14_VERSION='3.11.3-gog72561' ARCHIVE_BASE_FIRSTCONTACT_11_NAME='stellaris_first_contact_story_pack_3_10_4_70670.sh' ARCHIVE_BASE_FIRSTCONTACT_11_MD5='aa77a6af433d0ed023357b1af69876ce' ARCHIVE_BASE_FIRSTCONTACT_11_SIZE='832' ARCHIVE_BASE_FIRSTCONTACT_11_VERSION='3.10.4-gog70670' ARCHIVE_BASE_FIRSTCONTACT_5_NAME='stellaris_first_contact_story_pack_3_9_3_68314.sh' ARCHIVE_BASE_FIRSTCONTACT_5_MD5='870a8a53a98f020d9cb55e2b962b6172' ARCHIVE_BASE_FIRSTCONTACT_5_SIZE='1152' ARCHIVE_BASE_FIRSTCONTACT_5_VERSION='3.9.3-gog68314' ARCHIVE_BASE_FIRSTCONTACT_2_NAME='stellaris_first_contact_story_pack_3_8_4_1_65337.sh' ARCHIVE_BASE_FIRSTCONTACT_2_MD5='dd862bf0d12f5bf0a7a7c116a57f2bbb' ARCHIVE_BASE_FIRSTCONTACT_2_SIZE='1200' ARCHIVE_BASE_FIRSTCONTACT_2_VERSION='3.8.4.1-gog65337' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-stellaris-expansions.sh0000755000000000000000000005200614471751340016352 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 # - The Machine Age ### script_version=20241215.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_MACHINE='the-machine-age' EXPANSION_NAME_MACHINE='The Machine Age' # Archives ## Utopia ARCHIVE_BASE_UTOPIA_58_NAME='stellaris_utopia_3_14_15926_78464.sh' ARCHIVE_BASE_UTOPIA_58_MD5='62b9c4f468f049c1943cfcda6ff8c79e' ARCHIVE_BASE_UTOPIA_58_SIZE='75007' ARCHIVE_BASE_UTOPIA_58_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_UTOPIA_58_URL='https://www.gog.com/game/stellaris_utopia' ARCHIVE_BASE_UTOPIA_57_NAME='stellaris_utopia_3_13_2_0_76713.sh' ARCHIVE_BASE_UTOPIA_57_MD5='12459f9b139ca756b2c19a5755e41b67' ARCHIVE_BASE_UTOPIA_57_SIZE='75007' ARCHIVE_BASE_UTOPIA_57_VERSION='3.13.2-gog76713' ARCHIVE_BASE_UTOPIA_54_NAME='stellaris_utopia_3_12_5_74193.sh' ARCHIVE_BASE_UTOPIA_54_MD5='94ce113fad5b52d0464bfa48905412cc' ARCHIVE_BASE_UTOPIA_54_SIZE='75007' ARCHIVE_BASE_UTOPIA_54_VERSION='3.12.5-gog74193' ARCHIVE_BASE_UTOPIA_50_NAME='stellaris_utopia_3_11_3_0_72561.sh' ARCHIVE_BASE_UTOPIA_50_MD5='b459de0ff28f660f9f9f6a38b5963df8' ARCHIVE_BASE_UTOPIA_50_SIZE='75007' ARCHIVE_BASE_UTOPIA_50_VERSION='3.11.3-gog72561' ARCHIVE_BASE_UTOPIA_47_NAME='stellaris_utopia_3_10_4_70670.sh' ARCHIVE_BASE_UTOPIA_47_MD5='34740602274bd7cb248a25dbcf68ae50' ARCHIVE_BASE_UTOPIA_47_SIZE='75007' ARCHIVE_BASE_UTOPIA_47_VERSION='3.10.4-gog70670' ARCHIVE_BASE_UTOPIA_41_NAME='stellaris_utopia_3_9_3_68314.sh' ARCHIVE_BASE_UTOPIA_41_MD5='b720f9ac6deec5dda989e0b52c2cee80' ARCHIVE_BASE_UTOPIA_41_SIZE='75324' ARCHIVE_BASE_UTOPIA_41_VERSION='3.9.3-gog68314' ARCHIVE_BASE_UTOPIA_38_NAME='stellaris_utopia_3_8_4_1_65337.sh' ARCHIVE_BASE_UTOPIA_38_MD5='f37db816affaea32fa037afcf05e6f5c' ARCHIVE_BASE_UTOPIA_38_SIZE='76000' ARCHIVE_BASE_UTOPIA_38_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_UTOPIA_34_NAME='stellaris_utopia_3_7_4_63489.sh' ARCHIVE_BASE_UTOPIA_34_MD5='757c0a5000d03c0c977ea3feb4ac4bec' ARCHIVE_BASE_UTOPIA_34_SIZE='76000' ARCHIVE_BASE_UTOPIA_34_VERSION='3.7.4-gog63489' ARCHIVE_BASE_UTOPIA_31_NAME='stellaris_utopia_3_6_1_60754.sh' ARCHIVE_BASE_UTOPIA_31_MD5='6942f80fac13261e2de34e350d96e6b8' ARCHIVE_BASE_UTOPIA_31_SIZE='76000' ARCHIVE_BASE_UTOPIA_31_VERSION='3.6.1-gog60754' ARCHIVE_BASE_UTOPIA_29_NAME='stellaris_utopia_3_5_3_59410.sh' ARCHIVE_BASE_UTOPIA_29_MD5='b71a7c123fa029a65fdeee0f46112560' ARCHIVE_BASE_UTOPIA_29_SIZE='76000' ARCHIVE_BASE_UTOPIA_29_VERSION='3.5.3-gog59410' ARCHIVE_BASE_UTOPIA_27_NAME='stellaris_utopia_3_4_5_56913.sh' ARCHIVE_BASE_UTOPIA_27_MD5='c78bbd8859e22b93534f8aeec16ef08f' ARCHIVE_BASE_UTOPIA_27_SIZE='76000' ARCHIVE_BASE_UTOPIA_27_VERSION='3.4.5-gog56913' ARCHIVE_BASE_UTOPIA_23_NAME='stellaris_utopia_3_3_4_54421.sh' ARCHIVE_BASE_UTOPIA_23_MD5='9b4715a94ffdca001ff56e6e6d9a807d' ARCHIVE_BASE_UTOPIA_23_SIZE='76000' ARCHIVE_BASE_UTOPIA_23_VERSION='3.3.4-gog54421' ARCHIVE_BASE_UTOPIA_19_NAME='stellaris_utopia_3_2_1_1_51520.sh' ARCHIVE_BASE_UTOPIA_19_MD5='bb6b18eabd4e45d846468e1c38d2e7ea' ARCHIVE_BASE_UTOPIA_19_SIZE='76000' ARCHIVE_BASE_UTOPIA_19_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_UTOPIA_18_NAME='stellaris_utopia_3_1_1_50008.sh' ARCHIVE_BASE_UTOPIA_18_MD5='129501ad6bf862bc04aa775f6538e7fe' ARCHIVE_BASE_UTOPIA_18_SIZE='76000' ARCHIVE_BASE_UTOPIA_18_VERSION='3.1.1-gog50008' ARCHIVE_BASE_UTOPIA_17_NAME='stellaris_utopia_3_0_3_47193.sh' ARCHIVE_BASE_UTOPIA_17_MD5='0987db58e4cb8629714bbe9b2d01906e' ARCHIVE_BASE_UTOPIA_17_SIZE='76000' ARCHIVE_BASE_UTOPIA_17_VERSION='3.0.3-gog47193' ## Apocalypse ARCHIVE_BASE_APOCALYPSE_48_NAME='stellaris_apocalypse_3_14_15926_78464.sh' ARCHIVE_BASE_APOCALYPSE_48_MD5='fe095847b18e9279daca3f2eb407cc2b' ARCHIVE_BASE_APOCALYPSE_48_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_48_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_APOCALYPSE_48_URL='https://www.gog.com/game/stellaris_apocalypse' ARCHIVE_BASE_APOCALYPSE_47_NAME='stellaris_apocalypse_3_13_2_0_76713.sh' ARCHIVE_BASE_APOCALYPSE_47_MD5='ee89fa59d427166031964f106053fd39' ARCHIVE_BASE_APOCALYPSE_47_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_47_VERSION='3.13.2-gog76713' ARCHIVE_BASE_APOCALYPSE_44_NAME='stellaris_apocalypse_3_12_5_74193.sh' ARCHIVE_BASE_APOCALYPSE_44_MD5='72c6721003d27d922fd134210da8b82f' ARCHIVE_BASE_APOCALYPSE_44_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_44_VERSION='3.12.5-gog74193' ARCHIVE_BASE_APOCALYPSE_40_NAME='stellaris_apocalypse_3_11_3_0_72561.sh' ARCHIVE_BASE_APOCALYPSE_40_MD5='5865125d875c8ddc549b8f0f4fd79ebd' ARCHIVE_BASE_APOCALYPSE_40_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_40_VERSION='3.11.3-gog72561' ARCHIVE_BASE_APOCALYPSE_37_NAME='stellaris_apocalypse_3_10_4_70670.sh' ARCHIVE_BASE_APOCALYPSE_37_MD5='77856badbd6716a8d4b2b7c3d50dac7d' ARCHIVE_BASE_APOCALYPSE_37_SIZE='37877' ARCHIVE_BASE_APOCALYPSE_37_VERSION='3.10.4-gog70670' ARCHIVE_BASE_APOCALYPSE_31_NAME='stellaris_apocalypse_3_9_3_68314.sh' ARCHIVE_BASE_APOCALYPSE_31_MD5='1e81c558321b0c494118f5eaa320a31a' ARCHIVE_BASE_APOCALYPSE_31_SIZE='38196' ARCHIVE_BASE_APOCALYPSE_31_VERSION='3.9.3-gog68314' ARCHIVE_BASE_APOCALYPSE_28_NAME='stellaris_apocalypse_3_8_4_1_65337.sh' ARCHIVE_BASE_APOCALYPSE_28_MD5='a01fd114beedaae30f8036532aeaa3a5' ARCHIVE_BASE_APOCALYPSE_28_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_28_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_APOCALYPSE_24_NAME='stellaris_apocalypse_3_7_4_63489.sh' ARCHIVE_BASE_APOCALYPSE_24_MD5='635fad17d0a6dbcb51bc4bc134f7a2fc' ARCHIVE_BASE_APOCALYPSE_24_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_24_VERSION='3.7.4-gog63489' ARCHIVE_BASE_APOCALYPSE_21_NAME='stellaris_apocalypse_3_6_1_60754.sh' ARCHIVE_BASE_APOCALYPSE_21_MD5='ba7aa69bc21ddc041767975d6891c394' ARCHIVE_BASE_APOCALYPSE_21_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_21_VERSION='3.6.1-gog60754' ARCHIVE_BASE_APOCALYPSE_19_NAME='stellaris_apocalypse_3_5_3_59410.sh' ARCHIVE_BASE_APOCALYPSE_19_MD5='40e997269f2806e26c3cef5b604009e2' ARCHIVE_BASE_APOCALYPSE_19_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_19_VERSION='3.5.3-gog59410' ARCHIVE_BASE_APOCALYPSE_17_NAME='stellaris_apocalypse_3_4_5_56913.sh' ARCHIVE_BASE_APOCALYPSE_17_MD5='2294a815d331a90c2a226ea679d1b9c2' ARCHIVE_BASE_APOCALYPSE_17_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_17_VERSION='3.4.5-gog56913' ARCHIVE_BASE_APOCALYPSE_13_NAME='stellaris_apocalypse_3_3_4_54421.sh' ARCHIVE_BASE_APOCALYPSE_13_MD5='df86d7aa67f4be37822523fef72d15ee' ARCHIVE_BASE_APOCALYPSE_13_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_13_VERSION='3.3.4-gog54421' ARCHIVE_BASE_APOCALYPSE_9_NAME='stellaris_apocalypse_3_2_1_1_51520.sh' ARCHIVE_BASE_APOCALYPSE_9_MD5='0db5f6b23432efa4941f7e4e89ff9488' ARCHIVE_BASE_APOCALYPSE_9_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_9_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_APOCALYPSE_8_NAME='stellaris_apocalypse_3_1_1_50008.sh' ARCHIVE_BASE_APOCALYPSE_8_MD5='a4d25b308d2daf3c81fef2aef33727da' ARCHIVE_BASE_APOCALYPSE_8_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_8_VERSION='3.1.1-gog50008' ARCHIVE_BASE_APOCALYPSE_7_NAME='stellaris_apocalypse_3_0_3_47193.sh' ARCHIVE_BASE_APOCALYPSE_7_MD5='3cdf97dedf2514fbb1e9fd123cb253b7' ARCHIVE_BASE_APOCALYPSE_7_SIZE='39000' ARCHIVE_BASE_APOCALYPSE_7_VERSION='3.0.3-gog47193' ## MegaCorp ARCHIVE_BASE_MEGACORP_45_NAME='stellaris_megacorp_3_14_15926_78464.sh' ARCHIVE_BASE_MEGACORP_45_MD5='a16aec518e86ad716206899230871099' ARCHIVE_BASE_MEGACORP_45_SIZE='90404' ARCHIVE_BASE_MEGACORP_45_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_MEGACORP_45_URL='https://www.gog.com/game/stellaris_megacorp' ARCHIVE_BASE_MEGACORP_44_NAME='stellaris_megacorp_3_13_2_0_76713.sh' ARCHIVE_BASE_MEGACORP_44_MD5='e6b76bb98c26ec597e3a37b3aa915f46' ARCHIVE_BASE_MEGACORP_44_SIZE='90404' ARCHIVE_BASE_MEGACORP_44_VERSION='3.13.2-gog76713' ARCHIVE_BASE_MEGACORP_41_NAME='stellaris_megacorp_3_12_5_74193.sh' ARCHIVE_BASE_MEGACORP_41_MD5='056684f8cabd2bff919a6f1e1b12837a' ARCHIVE_BASE_MEGACORP_41_SIZE='130614' ARCHIVE_BASE_MEGACORP_41_VERSION='3.12.5-gog74193' ARCHIVE_BASE_MEGACORP_37_NAME='stellaris_megacorp_3_11_3_0_72561.sh' ARCHIVE_BASE_MEGACORP_37_MD5='9c9fda0324405590e48d4da9741dcdb0' ARCHIVE_BASE_MEGACORP_37_SIZE='130614' ARCHIVE_BASE_MEGACORP_37_VERSION='3.11.3-gog72561' ARCHIVE_BASE_MEGACORP_34_NAME='stellaris_megacorp_3_10_4_70670.sh' ARCHIVE_BASE_MEGACORP_34_MD5='c155eb5f1b6f3283e068b17574107070' ARCHIVE_BASE_MEGACORP_34_SIZE='130614' ARCHIVE_BASE_MEGACORP_34_VERSION='3.10.4-gog70670' ARCHIVE_BASE_MEGACORP_28_NAME='stellaris_megacorp_3_9_3_68314.sh' ARCHIVE_BASE_MEGACORP_28_MD5='b4bf123675295aa81910698500cdd33b' ARCHIVE_BASE_MEGACORP_28_SIZE='130940' ARCHIVE_BASE_MEGACORP_28_VERSION='3.9.3-gog68314' ARCHIVE_BASE_MEGACORP_25_NAME='stellaris_megacorp_3_8_4_1_65337.sh' ARCHIVE_BASE_MEGACORP_25_MD5='3b00aacd428ef943bbbd7a4d0e6b50b2' ARCHIVE_BASE_MEGACORP_25_SIZE='140000' ARCHIVE_BASE_MEGACORP_25_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_MEGACORP_21_NAME='stellaris_megacorp_3_7_4_63489.sh' ARCHIVE_BASE_MEGACORP_21_MD5='5b9573bb4261bd177dad3f4acc74a6a1' ARCHIVE_BASE_MEGACORP_21_SIZE='140000' ARCHIVE_BASE_MEGACORP_21_VERSION='3.7.4-gog63489' ARCHIVE_BASE_MEGACORP_18_NAME='stellaris_megacorp_3_6_1_60754.sh' ARCHIVE_BASE_MEGACORP_18_MD5='af184beefdd7efc6f2d3973bf0d50c71' ARCHIVE_BASE_MEGACORP_18_SIZE='140000' ARCHIVE_BASE_MEGACORP_18_VERSION='3.6.1-gog60754' ARCHIVE_BASE_MEGACORP_16_NAME='stellaris_megacorp_3_5_3_59410.sh' ARCHIVE_BASE_MEGACORP_16_MD5='2a95d9ff26ed58860be33c860c41fd63' ARCHIVE_BASE_MEGACORP_16_SIZE='140000' ARCHIVE_BASE_MEGACORP_16_VERSION='3.5.3-gog59410' ARCHIVE_BASE_MEGACORP_14_NAME='stellaris_megacorp_3_4_5_56913.sh' ARCHIVE_BASE_MEGACORP_14_MD5='893df0403e44e6e36060756740230147' ARCHIVE_BASE_MEGACORP_14_SIZE='140000' ARCHIVE_BASE_MEGACORP_14_VERSION='3.4.5-gog56913' ARCHIVE_BASE_MEGACORP_10_NAME='stellaris_megacorp_3_3_4_54421.sh' ARCHIVE_BASE_MEGACORP_10_MD5='44fb07a81f15d0954088f4bfd88fb933' ARCHIVE_BASE_MEGACORP_10_SIZE='140000' ARCHIVE_BASE_MEGACORP_10_VERSION='3.3.4-gog54421' ARCHIVE_BASE_MEGACORP_6_NAME='stellaris_megacorp_3_2_1_1_51520.sh' ARCHIVE_BASE_MEGACORP_6_MD5='5965b8b2b51ae9e3dca5726c5d466792' ARCHIVE_BASE_MEGACORP_6_SIZE='140000' ARCHIVE_BASE_MEGACORP_6_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_MEGACORP_5_NAME='stellaris_megacorp_3_1_1_50008.sh' ARCHIVE_BASE_MEGACORP_5_MD5='fa01a1fb786ae3625437bd23275ac401' ARCHIVE_BASE_MEGACORP_5_SIZE='140000' ARCHIVE_BASE_MEGACORP_5_VERSION='3.1.1-gog50008' ARCHIVE_BASE_MEGACORP_4_NAME='stellaris_megacorp_3_0_3_47193.sh' ARCHIVE_BASE_MEGACORP_4_MD5='8992c77ac7de034c7d3deceb656fb3f6' ARCHIVE_BASE_MEGACORP_4_SIZE='140000' ARCHIVE_BASE_MEGACORP_4_VERSION='3.0.3-gog47193' ## Federations ARCHIVE_BASE_FEDERATIONS_40_NAME='stellaris_federations_3_14_15926_78464.sh' ARCHIVE_BASE_FEDERATIONS_40_MD5='11fb43cc5b19aebd6bbece34c75492c5' ARCHIVE_BASE_FEDERATIONS_40_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_40_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_FEDERATIONS_40_URL='https://www.gog.com/game/stellaris_federations' ARCHIVE_BASE_FEDERATIONS_39_NAME='stellaris_federations_3_13_2_0_76713.sh' ARCHIVE_BASE_FEDERATIONS_39_MD5='48ff77ab8c028f6088a0c6743da2bbed' ARCHIVE_BASE_FEDERATIONS_39_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_39_VERSION='3.13.2-gog76713' ARCHIVE_BASE_FEDERATIONS_36_NAME='stellaris_federations_3_12_5_74193.sh' ARCHIVE_BASE_FEDERATIONS_36_MD5='77b14499ea1a8fe7d643e3881a473d0d' ARCHIVE_BASE_FEDERATIONS_36_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_36_VERSION='3.12.5-gog74193' ARCHIVE_BASE_FEDERATIONS_32_NAME='stellaris_federations_3_11_3_0_72561.sh' ARCHIVE_BASE_FEDERATIONS_32_MD5='de18cbab731d65f25fcc58ea98a16a12' ARCHIVE_BASE_FEDERATIONS_32_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_32_VERSION='3.11.3-gog72561' ARCHIVE_BASE_FEDERATIONS_29_NAME='stellaris_federations_3_10_4_70670.sh' ARCHIVE_BASE_FEDERATIONS_29_MD5='00836b70d3d84d95de238c607e25e309' ARCHIVE_BASE_FEDERATIONS_29_SIZE='14433' ARCHIVE_BASE_FEDERATIONS_29_VERSION='3.10.4-gog70670' ARCHIVE_BASE_FEDERATIONS_23_NAME='stellaris_federations_3_9_3_68314.sh' ARCHIVE_BASE_FEDERATIONS_23_MD5='5c2ecccea91eeeea578cd2925a5621eb' ARCHIVE_BASE_FEDERATIONS_23_SIZE='14752' ARCHIVE_BASE_FEDERATIONS_23_VERSION='3.9.3-gog68314' ARCHIVE_BASE_FEDERATIONS_20_NAME='stellaris_federations_3_8_4_1_65337.sh' ARCHIVE_BASE_FEDERATIONS_20_MD5='6fd1449caf09cfd06baff37237aff954' ARCHIVE_BASE_FEDERATIONS_20_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_20_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_FEDERATIONS_16_NAME='stellaris_federations_3_7_4_63489.sh' ARCHIVE_BASE_FEDERATIONS_16_MD5='df6d008a05e26559ba65d184e52d5926' ARCHIVE_BASE_FEDERATIONS_16_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_16_VERSION='3.7.4-gog63489' ARCHIVE_BASE_FEDERATIONS_13_NAME='stellaris_federations_3_6_1_60754.sh' ARCHIVE_BASE_FEDERATIONS_13_MD5='7f86c6a7c6d13946528a58c90c7eebc8' ARCHIVE_BASE_FEDERATIONS_13_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_13_VERSION='3.6.1-gog60754' ARCHIVE_BASE_FEDERATIONS_11_NAME='stellaris_federations_3_5_3_59410.sh' ARCHIVE_BASE_FEDERATIONS_11_MD5='02dee79bf1c26ba1b1cfca5103dccdca' ARCHIVE_BASE_FEDERATIONS_11_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_11_VERSION='3.5.3-gog59410' ARCHIVE_BASE_FEDERATIONS_9_NAME='stellaris_federations_3_4_5_56913.sh' ARCHIVE_BASE_FEDERATIONS_9_MD5='96170769d5fef74f2aedf9f3fd85f656' ARCHIVE_BASE_FEDERATIONS_9_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_9_VERSION='3.4.5-gog56913' ARCHIVE_BASE_FEDERATIONS_5_NAME='stellaris_federations_3_3_4_54421.sh' ARCHIVE_BASE_FEDERATIONS_5_MD5='d0dcbaef570563bb87dd16e600e162bd' ARCHIVE_BASE_FEDERATIONS_5_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_5_VERSION='3.3.4-gog54421' ARCHIVE_BASE_FEDERATIONS_1_NAME='stellaris_federations_3_2_2_51685.sh' ARCHIVE_BASE_FEDERATIONS_1_MD5='df17fc878abd4eb957e147feb5b7e39b' ARCHIVE_BASE_FEDERATIONS_1_SIZE='15000' ARCHIVE_BASE_FEDERATIONS_1_VERSION='3.2.2-gog51685' ## Nemesis ARCHIVE_BASE_NEMESIS_27_NAME='stellaris_nemesis_3_14_15926_78464.sh' ARCHIVE_BASE_NEMESIS_27_MD5='d950bf759ba6311143b1be3ec6811fd7' ARCHIVE_BASE_NEMESIS_27_SIZE='38539' ARCHIVE_BASE_NEMESIS_27_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_NEMESIS_27_URL='https://www.gog.com/game/stellaris_nemesis' ARCHIVE_BASE_NEMESIS_26_NAME='stellaris_nemesis_3_13_2_0_76713.sh' ARCHIVE_BASE_NEMESIS_26_MD5='3ab5141b829c7747c4622b92789fbe43' ARCHIVE_BASE_NEMESIS_26_SIZE='38539' ARCHIVE_BASE_NEMESIS_26_VERSION='3.13.2-gog76713' ARCHIVE_BASE_NEMESIS_23_NAME='stellaris_nemesis_3_12_5_74193.sh' ARCHIVE_BASE_NEMESIS_23_MD5='30187118ff7f8fed4db3b453f2b1a467' ARCHIVE_BASE_NEMESIS_23_SIZE='38539' ARCHIVE_BASE_NEMESIS_23_VERSION='3.12.5-gog74193' ARCHIVE_BASE_NEMESIS_19_NAME='stellaris_nemesis_3_11_3_0_72561.sh' ARCHIVE_BASE_NEMESIS_19_MD5='a6380543924bf1479101511337238f29' ARCHIVE_BASE_NEMESIS_19_SIZE='38539' ARCHIVE_BASE_NEMESIS_19_VERSION='3.11.3-gog72561' ARCHIVE_BASE_NEMESIS_16_NAME='stellaris_nemesis_3_10_4_70670.sh' ARCHIVE_BASE_NEMESIS_16_MD5='749b70150b8b77b9f905d50b641594c7' ARCHIVE_BASE_NEMESIS_16_SIZE='38539' ARCHIVE_BASE_NEMESIS_16_VERSION='3.10.4-gog70670' ARCHIVE_BASE_NEMESIS_10_NAME='stellaris_nemesis_3_9_3_68314.sh' ARCHIVE_BASE_NEMESIS_10_MD5='105f2c56365c3b2b3c329806e4b5272b' ARCHIVE_BASE_NEMESIS_10_SIZE='38856' ARCHIVE_BASE_NEMESIS_10_VERSION='3.9.3-gog68314' ARCHIVE_BASE_NEMESIS_7_NAME='stellaris_nemesis_3_8_4_1_65337.sh' ARCHIVE_BASE_NEMESIS_7_MD5='ea624db6ea0f9f485cb194c1358dda62' ARCHIVE_BASE_NEMESIS_7_SIZE='40000' ARCHIVE_BASE_NEMESIS_7_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_NEMESIS_3_NAME='stellaris_nemesis_3_7_4_63489.sh' ARCHIVE_BASE_NEMESIS_3_MD5='9fa7ca1ebe2ffb736787f18bf2611311' ARCHIVE_BASE_NEMESIS_3_SIZE='40000' ARCHIVE_BASE_NEMESIS_3_VERSION='3.7.4-gog63489' ARCHIVE_BASE_NEMESIS_0_NAME='stellaris_nemesis_3_6_1_60754.sh' ARCHIVE_BASE_NEMESIS_0_MD5='ec08053da0ef60ea42a974b26892031a' ARCHIVE_BASE_NEMESIS_0_SIZE='40000' ARCHIVE_BASE_NEMESIS_0_VERSION='3.6.1-gog60754' ## Overlord ARCHIVE_BASE_OVERLORD_22_NAME='stellaris_overlord_3_14_15926_78464.sh' ARCHIVE_BASE_OVERLORD_22_MD5='cbc6247838f41c5d8f78c6fb6dba8ac4' ARCHIVE_BASE_OVERLORD_22_SIZE='99860' ARCHIVE_BASE_OVERLORD_22_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_OVERLORD_22_URL='https://www.gog.com/game/stellaris_overlord' ARCHIVE_BASE_OVERLORD_21_NAME='stellaris_overlord_3_13_2_0_76713.sh' ARCHIVE_BASE_OVERLORD_21_MD5='dbf1a321e0fe23a463030e436dafcda2' ARCHIVE_BASE_OVERLORD_21_SIZE='99860' ARCHIVE_BASE_OVERLORD_21_VERSION='3.13.2-gog76713' ARCHIVE_BASE_OVERLORD_18_NAME='stellaris_overlord_3_12_5_74193.sh' ARCHIVE_BASE_OVERLORD_18_MD5='62f8f8bf6a5f9774bd1fb036d73e2843' ARCHIVE_BASE_OVERLORD_18_SIZE='99860' ARCHIVE_BASE_OVERLORD_18_VERSION='3.12.5-gog74193' ARCHIVE_BASE_OVERLORD_14_NAME='stellaris_overlord_3_11_3_0_72561.sh' ARCHIVE_BASE_OVERLORD_14_MD5='dd8189cd8134fc866c374864d0700b83' ARCHIVE_BASE_OVERLORD_14_SIZE='99860' ARCHIVE_BASE_OVERLORD_14_VERSION='3.11.3-gog72561' ARCHIVE_BASE_OVERLORD_11_NAME='stellaris_overlord_3_10_4_70670.sh' ARCHIVE_BASE_OVERLORD_11_MD5='a6bf968c0f6c7dc75998884b333025ec' ARCHIVE_BASE_OVERLORD_11_SIZE='99860' ARCHIVE_BASE_OVERLORD_11_VERSION='3.10.4-gog70670' ARCHIVE_BASE_OVERLORD_5_NAME='stellaris_overlord_3_9_3_68314.sh' ARCHIVE_BASE_OVERLORD_5_MD5='580bcbdf375ead938c80956f27e1069d' ARCHIVE_BASE_OVERLORD_5_SIZE='100180' ARCHIVE_BASE_OVERLORD_5_VERSION='3.9.3-gog68314' ARCHIVE_BASE_OVERLORD_2_NAME='stellaris_overlord_3_8_4_1_65337.sh' ARCHIVE_BASE_OVERLORD_2_MD5='e1c1700fa00f2c2d0c86ec4d7d1d63ea' ARCHIVE_BASE_OVERLORD_2_SIZE='110000' ARCHIVE_BASE_OVERLORD_2_VERSION='3.8.4.1-gog65337' ## Galactic Paragons ARCHIVE_BASE_PARAGONS_22_NAME='stellaris_galactic_paragons_3_14_15926_78464.sh' ARCHIVE_BASE_PARAGONS_22_MD5='fd01b388fa76e46e8739a70d26c682f0' ARCHIVE_BASE_PARAGONS_22_SIZE='832' ARCHIVE_BASE_PARAGONS_22_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_PARAGONS_22_URL='https://www.gog.com/game/stellaris_galactic_paragons' ARCHIVE_BASE_PARAGONS_21_NAME='stellaris_galactic_paragons_3_13_2_0_76713.sh' ARCHIVE_BASE_PARAGONS_21_MD5='ce85a2dffe8e2f5dc5fd691622d96518' ARCHIVE_BASE_PARAGONS_21_SIZE='832' ARCHIVE_BASE_PARAGONS_21_VERSION='3.13.2-gog76713' ARCHIVE_BASE_PARAGONS_18_NAME='stellaris_galactic_paragons_3_12_5_74193.sh' ARCHIVE_BASE_PARAGONS_18_MD5='00b9ebf125e6812ccd02840db3f7bcd7' ARCHIVE_BASE_PARAGONS_18_SIZE='832' ARCHIVE_BASE_PARAGONS_18_VERSION='3.12.5-gog74193' ARCHIVE_BASE_PARAGONS_14_NAME='stellaris_galactic_paragons_3_11_3_0_72561.sh' ARCHIVE_BASE_PARAGONS_14_MD5='ee6878f407ab24721974463a3c957d68' ARCHIVE_BASE_PARAGONS_14_SIZE='832' ARCHIVE_BASE_PARAGONS_14_VERSION='3.11.3-gog72561' ARCHIVE_BASE_PARAGONS_11_NAME='stellaris_galactic_paragons_3_10_4_70670.sh' ARCHIVE_BASE_PARAGONS_11_MD5='e081e220e0a862bd8adc42860b9bd1f4' ARCHIVE_BASE_PARAGONS_11_SIZE='832' ARCHIVE_BASE_PARAGONS_11_VERSION='3.10.4-gog70670' ARCHIVE_BASE_PARAGONS_5_NAME='stellaris_galactic_paragons_3_9_3_68314.sh' ARCHIVE_BASE_PARAGONS_5_MD5='4e1ad6ceb7a5e3bb6d55d1bc7547954e' ARCHIVE_BASE_PARAGONS_5_SIZE='1152' ARCHIVE_BASE_PARAGONS_5_VERSION='3.9.3-gog68314' ARCHIVE_BASE_PARAGONS_2_NAME='stellaris_galactic_paragons_3_8_4_1_65337.sh' ARCHIVE_BASE_PARAGONS_2_MD5='e47a7ab7c264021f49b8419e1aedc580' ARCHIVE_BASE_PARAGONS_2_SIZE='1200' ARCHIVE_BASE_PARAGONS_2_VERSION='3.8.4.1-gog65337' ## The Machine Age ARCHIVE_BASE_MACHINE_7_NAME='stellaris_the_machine_age_3_14_15926_78464.sh' ARCHIVE_BASE_MACHINE_7_MD5='ab74106e42a9b5525ae852ca27b7020f' ARCHIVE_BASE_MACHINE_7_SIZE='100390' ARCHIVE_BASE_MACHINE_7_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_MACHINE_7_URL='https://www.gog.com/game/stellaris_the_machine_age' ARCHIVE_BASE_MACHINE_6_NAME='stellaris_the_machine_age_3_13_2_0_76713.sh' ARCHIVE_BASE_MACHINE_6_MD5='113ee29d7d37fc5de99f1716114a12f3' ARCHIVE_BASE_MACHINE_6_SIZE='100390' ARCHIVE_BASE_MACHINE_6_VERSION='3.13.2-gog76713' ARCHIVE_BASE_MACHINE_3_NAME='stellaris_the_machine_age_3_12_5_74193.sh' ARCHIVE_BASE_MACHINE_3_MD5='06614dbbb8a94b20449f6a3a6f863347' ARCHIVE_BASE_MACHINE_3_SIZE='118726' ARCHIVE_BASE_MACHINE_3_VERSION='3.12.5-gog74193' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-stellaris.sh0000755000000000000000000001355714471751340014175 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Stellaris ### script_version=20250227.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='stellaris' GAME_NAME='Stellaris' ARCHIVE_BASE_59_NAME='stellaris_3_14_15926_78464.sh' ARCHIVE_BASE_59_MD5='0e93163e55e8bddbcdfd6c7c9c0307bd' ARCHIVE_BASE_59_SIZE='20344787' ARCHIVE_BASE_59_VERSION='3.14.15926-gog78464' ARCHIVE_BASE_59_URL='https://www.gog.com/game/stellaris' ARCHIVE_BASE_58_NAME='stellaris_3_13_2_0_76713.sh' ARCHIVE_BASE_58_MD5='e8a71267c39846f3fa51a7f14f0d2177' ARCHIVE_BASE_58_SIZE='19165769' ARCHIVE_BASE_58_VERSION='3.13.2-gog76713' ARCHIVE_BASE_55_NAME='stellaris_3_12_5_74193.sh' ARCHIVE_BASE_55_MD5='bb1b18f25732a09a6f257554a1d98375' ARCHIVE_BASE_55_SIZE='18792782' ARCHIVE_BASE_55_VERSION='3.12.5-gog74193' ARCHIVE_BASE_51_NAME='stellaris_3_11_3_0_72561.sh' ARCHIVE_BASE_51_MD5='a03584bd08d67544607fade70c8cb157' ARCHIVE_BASE_51_SIZE='16450506' ARCHIVE_BASE_51_VERSION='3.11.3-gog72561' ARCHIVE_BASE_48_NAME='stellaris_3_10_4_70670.sh' ARCHIVE_BASE_48_MD5='8703e439a2588f88987ad7d600674714' ARCHIVE_BASE_48_SIZE='16449439' ARCHIVE_BASE_48_VERSION='3.10.4-gog70670' ARCHIVE_BASE_42_NAME='stellaris_3_9_3_68314.sh' ARCHIVE_BASE_42_MD5='fb96d68d043643b032328023c09bbb53' ARCHIVE_BASE_42_SIZE='16222112' ARCHIVE_BASE_42_VERSION='3.9.3-gog68314' ARCHIVE_BASE_39_NAME='stellaris_3_8_4_1_65337.sh' ARCHIVE_BASE_39_MD5='95e375ad5250a5ecc525e9f873edf642' ARCHIVE_BASE_39_SIZE='17000000' ARCHIVE_BASE_39_VERSION='3.8.4.1-gog65337' ARCHIVE_BASE_35_NAME='stellaris_3_7_4_63489.sh' ARCHIVE_BASE_35_MD5='2c0200a3eac988cf300b259ec0e75745' ARCHIVE_BASE_35_SIZE='16000000' ARCHIVE_BASE_35_VERSION='3.7.4-gog63489' ARCHIVE_BASE_32_NAME='stellaris_3_6_1_60754.sh' ARCHIVE_BASE_32_MD5='d2a56659e3ff14f1916e54cda1848efb' ARCHIVE_BASE_32_SIZE='16000000' ARCHIVE_BASE_32_VERSION='3.6.1-gog60754' ARCHIVE_BASE_30_NAME='stellaris_3_5_3_59410.sh' ARCHIVE_BASE_30_MD5='4476050de7a99e8de7dfb9674d770ab4' ARCHIVE_BASE_30_SIZE='16000000' ARCHIVE_BASE_30_VERSION='3.5.3-gog59410' ARCHIVE_BASE_28_NAME='stellaris_3_4_5_56913.sh' ARCHIVE_BASE_28_MD5='aadcdd3e618635fe0a014ee649ed9204' ARCHIVE_BASE_28_SIZE='16000000' ARCHIVE_BASE_28_VERSION='3.4.5-gog56913' ARCHIVE_BASE_24_NAME='stellaris_3_3_4_54421.sh' ARCHIVE_BASE_24_MD5='2fe3bf9955468eed06bfaaf6e8e48f89' ARCHIVE_BASE_24_SIZE='15000000' ARCHIVE_BASE_24_VERSION='3.3.4-gog54421' ARCHIVE_BASE_20_NAME='stellaris_3_2_1_1_51520.sh' ARCHIVE_BASE_20_MD5='91d1173e84573c04b4b84978dfe068e5' ARCHIVE_BASE_20_SIZE='15000000' ARCHIVE_BASE_20_VERSION='3.2.1.1-gog51520' ARCHIVE_BASE_19_NAME='stellaris_3_1_1_50008.sh' ARCHIVE_BASE_19_MD5='157bbf508ea354ced1cbbf0d06c15b0f' ARCHIVE_BASE_19_SIZE='12000000' ARCHIVE_BASE_19_VERSION='3.1.1-gog50008' ARCHIVE_BASE_18_NAME='stellaris_3_0_3_47193.sh' ARCHIVE_BASE_18_MD5='3c818f2b540998ddcc9c18dd98e15cba' ARCHIVE_BASE_18_SIZE='12000000' ARCHIVE_BASE_18_VERSION='3.0.3-gog47193' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libnakama-cpp.so libpops_api.so' CONTENT_GAME_BIN_FILES=' crash_reporter tools stellaris' CONTENT_GAME_DATA_MODELS_SHIPS_FILES=' gfx/models/ships' CONTENT_GAME_DATA_MODELS_FILES=' gfx/models' CONTENT_GAME_DATA_FILES=' common curated_save_games dlc dlc_metadata events flags fonts gfx interface licenses locales localisation localisation_synced map music prescripted_countries previewer_assets sound tweakergui_assets unchecked_defines ChangeLog.txt ChangeLogBlank.txt checksum_manifest.txt ThirdPartyLicenses.txt' CONTENT_GAME_MULTIPLAYER_FILES=' launcher-assets livepp pdx_launcher pdx_online_assets dowser launcher-installer-linux_2024.14 pdx_core_test launcher-settings.json' ## TODO: Check why a symlinks farm prefix can not be used APP_MAIN_PREFIX_TYPE='none' APP_MAIN_EXE='stellaris' APP_MAIN_ICON='gfx/exe_icon.bmp' PACKAGES_LIST=' PKG_BIN PKG_DATA_MODELS_SHIPS PKG_DATA_MODELS PKG_DATA PKG_MULTIPLAYER' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 libresolv.so.2 libSDL2-2.0.so.0 libstdc++.so.6 libuuid.so.1 libX11.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_MODELS' PKG_DATA_MODELS_ID="${PKG_DATA_ID}-models" PKG_DATA_MODELS_DESCRIPTION="${PKG_DATA_DESCRIPTION} - models" PKG_DATA_MODELS_DEPENDENCIES_SIBLINGS=' PKG_DATA_MODELS_SHIPS' PKG_DATA_MODELS_SHIPS_ID="${PKG_DATA_MODELS_ID}-ships" PKG_DATA_MODELS_SHIPS_DESCRIPTION="${PKG_DATA_MODELS_DESCRIPTION} - ships" PKG_MULTIPLAYER_ID="${GAME_ID}-multiplayer" PKG_MULTIPLAYER_DESCRIPTION='Paradox launcher' PKG_MULTIPLAYER_ARCH='64' PKG_MULTIPLAYER_DEPENDENCIES_SIBLINGS=' PKG_BIN' PKG_MULTIPLAYER_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 libstdc++.so.6 libX11.so.6' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Force the use of system-provided SDL APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-sunless-sea.sh0000755000000000000000000001707714471751340014436 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=20241021.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_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" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # humblebundle.com - Check that tools required to handle the inner archive are available. case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_'*) REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} $(archive_requirements_mojosetup_list)" requirements_check ;; esac # Extract game data archive_extraction_default case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_'*) ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/Sunless Sea.sh" archive_extraction 'ARCHIVE_INNER' rm "$(archive_path 'ARCHIVE_INNER')" ;; esac ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## humblebundle.com - Some arch-specific files in the archive are stored in the arch-independent path. case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_'*) cp --link --parents --recursive \ "$(unity3d_name)_Data/Mono/x86_64" \ "$(unity3d_name)_Data/Plugins/x86_64" \ "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN64')" cp --link --parents --recursive \ "$(unity3d_name)_Data/Mono/x86" \ "$(unity3d_name)_Data/Plugins/x86" \ "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN32')" rm --recursive \ "$(unity3d_name)_Data/Mono/x86_64" \ "$(unity3d_name)_Data/Mono/x86" \ "$(unity3d_name)_Data/Plugins/x86_64" \ "$(unity3d_name)_Data/Plugins/x86" rmdir "$(unity3d_name)_Data/Plugins" ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-sunless-skies-expansions.sh0000755000000000000000000000417514471751340017164 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=20241126.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='sunless-skies' GAME_NAME='Sunless Skies' EXPANSION_ID_OWL='cyclopean-owl' EXPANSION_NAME_OWL='Cyclopean Owl' ## Cyclopean Owl ARCHIVE_BASE_OWL_3_NAME='sunless_skies_cyclopean_owl_2_0_5_6e8c8ff_74416.sh' ARCHIVE_BASE_OWL_3_MD5='163712d560736a51eb51fda83cee7336' ARCHIVE_BASE_OWL_3_SIZE='899' ARCHIVE_BASE_OWL_3_VERSION='2.0.5-gog74416' ARCHIVE_BASE_OWL_2_NAME='sunless_skies_cyclopean_owl_2_0_4_fcf0af7a_52215.sh' ARCHIVE_BASE_OWL_2_MD5='c3749871147607f488f58881b30b9600' ARCHIVE_BASE_OWL_2_SIZE='1300' ARCHIVE_BASE_OWL_2_VERSION='2.0.4-gog52215' ARCHIVE_BASE_OWL_0_NAME='sunless_skies_cyclopean_owl_2_0_2_9bcd3d8c_48199.sh' ARCHIVE_BASE_OWL_0_MD5='9d0dee370093bce46c35dc114c0d6241' ARCHIVE_BASE_OWL_0_SIZE='1300' ARCHIVE_BASE_OWL_0_VERSION='2.0.2-gog48199' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Work around directory name case mismatch. if [ -e 'DLC' ]; then mv 'DLC' 'dlc' fi ) # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-sunless-skies.sh0000755000000000000000000000465214471751340014777 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Sunless Skies ### script_version=20241126.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='sunless-skies' GAME_NAME='Sunless Skies' ARCHIVE_BASE_2_NAME='sunless_skies_sovereign_edition_2_0_5_6e8c8ff_74416.sh' ARCHIVE_BASE_2_MD5='3405edfa656734537b13b253748fc556' ARCHIVE_BASE_2_SIZE='3276986' ARCHIVE_BASE_2_VERSION='2.0.5-gog74416' ARCHIVE_BASE_2_URL='https://www.gog.com/game/sunless_skies' ARCHIVE_BASE_1_NAME='sunless_skies_sovereign_edition_2_0_4_fcf0af7a_52215.sh' ARCHIVE_BASE_1_MD5='0d92a8c235d610e6ec560c25179c529a' ARCHIVE_BASE_1_SIZE='3300000' ARCHIVE_BASE_1_VERSION='2.0.4-gog52215' ARCHIVE_BASE_0_NAME='sunless_skies_sovereign_edition_2_0_2_9bcd3d8c_48199.sh' ARCHIVE_BASE_0_MD5='f99de4c6a893be6f7fcb8170c94478f4' ARCHIVE_BASE_0_SIZE='3300000' ARCHIVE_BASE_0_VERSION='2.0.2-gog48199' UNITY3D_NAME='Sunless Skies' CONTENT_PATH_DEFAULT='data/noarch/game' ## Without write access to the "dlc" directory, the game fails to load properly. USER_PERSISTENT_DIRECTORIES=' dlc' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Drop empty "Plugins" directory. rmdir "$(unity3d_name)_Data/Plugins" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-superflu-riteurnz.sh0000755000000000000000000001304014471751340015703 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Superflu Riteurnz ### script_version=20241021.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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' 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_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' 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" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data ## An alternative icon path is used for < 1.6 game builds. case "$(current_archive)" in ('ARCHIVE_BASE_0'|'ARCHIVE_BASE_MONOARCH_'*) icon_path_source="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/share/icons/hicolor/scalable/apps/superfluous-returnz.svg" ;; (*) icon_path_source="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/share/icons/superfluous-returnz.svg" ;; esac install -D --mode=644 --no-target-directory \ "$icon_path_source" \ "$(package_path 'PKG_DATA')$(path_icons)/scalable/apps/$(game_id).svg" content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-the-elder-scrolls-3.sh0000755000000000000000000001373714471751340015663 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=20241121.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='the-elder-scrolls-3' GAME_NAME='The Elder Scrolls Ⅲ: Morrowind' ARCHIVE_BASE_EN_1_NAME='setup_the_elder_scrolls_iii_morrowind_goty_1.6.0.1820_gog_0.1_(77582).exe' ARCHIVE_BASE_EN_1_MD5='c3ea7739b81d457e4c7d91758b762f4e' ## Do not convert file paths to lowercase, as it causes problems when importing morrowind.ini default settings ARCHIVE_BASE_EN_1_EXTRACTOR='innoextract' ARCHIVE_BASE_EN_1_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_EN_1_PART1_NAME='setup_the_elder_scrolls_iii_morrowind_goty_1.6.0.1820_gog_0.1_(77582)-1.bin' ARCHIVE_BASE_EN_1_PART1_MD5='1158ea779b50c704c17bedee0ad2612c' ARCHIVE_BASE_EN_1_SIZE='2209531' ARCHIVE_BASE_EN_1_VERSION='1.6.0.1820-gog77582' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/the_elder_scrolls_iii_morrowind_goty_edition' ARCHIVE_BASE_FR_1_NAME='setup_the_elder_scrolls_iii_morrowind_goty_1.6.0.1820_gog_0.1_(french)_(77582).exe' ARCHIVE_BASE_FR_1_MD5='5f56a00e9256d930f63ab677c43c8b75' ## Do not convert file paths to lowercase, as it causes problems when importing morrowind.ini default settings ARCHIVE_BASE_FR_1_EXTRACTOR='innoextract' ARCHIVE_BASE_FR_1_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_FR_1_PART1_NAME='setup_the_elder_scrolls_iii_morrowind_goty_1.6.0.1820_gog_0.1_(french)_(77582)-1.bin' ARCHIVE_BASE_FR_1_PART1_MD5='38571e142c67f9c8edd433902abe1454' ARCHIVE_BASE_FR_1_SIZE='2239754' ARCHIVE_BASE_FR_1_VERSION='1.6.0.1820-gog77582' ARCHIVE_BASE_FR_1_URL='https://www.gog.com/game/the_elder_scrolls_iii_morrowind_goty_edition' 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 problems 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_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 problems 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' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_EN_0='app' CONTENT_PATH_DEFAULT_FR_0='app' CONTENT_GAME_L10N_FILES=' Morrowind.ini Data Files/BookArt Data Files/Sound/Vo Data Files/Splash Data Files/Video Data Files/*.bsa Data Files/*.esm' CONTENT_GAME_DATA_FILES=' Data Files Knife.ico' CONTENT_GAME_DATAFILES_DATA_RELATIVE_PATH='_OfficialPlugins/_unpacked_files' CONTENT_GAME_DATAFILES_DATA_FILES=' Icons Meshes Sound Textures *.esp *.txt' CONTENT_DOC_L10N_FILES=' *.txt' CONTENT_DOC_DATA_FILES=' *.pdf' APP_MAIN_TYPE='custom' APP_MAIN_ICON='Morrowind.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_BIN_DEPENDENCIES_COMMANDS=' openmw-iniimporter openmw-launcher' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Fix .bsa/.esm dates on French version. case "$(current_archive)" in ('ARCHIVE_BASE_FR_'*) touch --date='2002-06-21 17:31:46.000000000 +0200' \ 'Data Files/Morrowind.bsa' touch --date='2002-07-17 18:59:22.000000000 +0200' \ 'Data Files/Morrowind.esm' touch --date='2002-10-29 21:22:06.000000000 +0100' \ 'Data Files/Tribunal.bsa' touch --date='2003-06-26 20:05:06.000000000 +0200' \ 'Data Files/Tribunal.esm' touch --date='2003-05-01 13:37:30.000000000 +0200' \ 'Data Files/Bloodmoon.bsa' touch --date='2003-07-07 17:27:56.000000000 +0200' \ 'Data Files/Bloodmoon.esm' ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion 'GAME_DATAFILES_DATA' 'PKG_DATA' "$(path_game_data)/Data Files" content_inclusion_default # Write launchers custom_launcher() { launcher_headers cat <<- EOF PATH_GAME_DATA="$(path_game_data)" EOF cat <<- 'OUTEREOF' OPENMW_CONFIG_PATH="${XDG_CONFIG_HOME:=${HOME}/.config}/openmw" OPENMW_CONFIG_FILE="${OPENMW_CONFIG_PATH}/openmw.cfg" OPENMW_CONFIG_LAUNCHER_FILE="${OPENMW_CONFIG_PATH}/launcher.cfg" # Initialize OpenMW configuration on first launch if [ ! -e "$OPENMW_CONFIG_FILE" ]; then mkdir --parents "$OPENMW_CONFIG_PATH" cat > "$OPENMW_CONFIG_FILE" <<- EOF data="${PATH_GAME_DATA}/Data Files" content=Morrowind.esm EOF openmw-iniimporter --ini "${PATH_GAME_DATA}/Morrowind.ini" --cfg "$OPENMW_CONFIG_FILE" if [ ! -e "$OPENMW_CONFIG_LAUNCHER_FILE" ]; then cat > "$OPENMW_CONFIG_LAUNCHER_FILE" <<- EOF [General] firstrun=false EOF fi fi openmw-launcher exit 0 OUTEREOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-the-fertile-crescent.sh0000755000000000000000000000503514471751340016177 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Fertile Crescent ### script_version=20241120.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='the-fertile-crescent' GAME_NAME='The Fertile Crescent' ARCHIVE_BASE_3_NAME='tfc_the_fertile_crescent_1_1001_77568.sh' ARCHIVE_BASE_3_MD5='f6a3809b43dd63f226fe47c756e915f5' ARCHIVE_BASE_3_SIZE='524869' ARCHIVE_BASE_3_VERSION='1.1001-gog77568' ARCHIVE_BASE_3_URL='https://www.gog.com/game/tfc_the_fertile_crescent' ARCHIVE_BASE_2_NAME='tfc_the_fertile_crescent_1_1000_75581.sh' ARCHIVE_BASE_2_MD5='2410c776006d758dfcdfb0d961bb906f' ARCHIVE_BASE_2_SIZE='524869' ARCHIVE_BASE_2_VERSION='1.1000-gog75581' ARCHIVE_BASE_1_NAME='tfc_the_fertile_crescent_1_0014_74208.sh' ARCHIVE_BASE_1_MD5='9255deccb43f9eda5062614d0d6cf9d7' ARCHIVE_BASE_1_SIZE='524857' ARCHIVE_BASE_1_VERSION='1.0014-gog74208' ARCHIVE_BASE_0_NAME='tfc_the_fertile_crescent_1_0010b_74071.sh' ARCHIVE_BASE_0_MD5='619d9bbccea8d3b05037dacde8684533' ARCHIVE_BASE_0_SIZE='525376' ARCHIVE_BASE_0_VERSION='1.0010b-gog74071' UNITY3D_NAME='game' UNITY3D_PLUGINS=' libfmodL.so libfmod.so libfmodstudio.so libresonanceaudio.so' ## The game crashes on launch if the Steam library is missing. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-the-lamplighters-league.sh0000755000000000000000000000674014471751340016700 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Lamplighters League ### script_version=20241229.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='the-lamplighters-league' GAME_NAME='The Lamplighters League' ARCHIVE_BASE_0_NAME='setup_the_lamplighters_league_1.3.1-67360_(75947).exe' ARCHIVE_BASE_0_MD5='bc06890044afe8cd3395249a4553c1f7' ## Do not convert the file paths to lowercase, ## otherwise the engine would fail to fetch localized strings. ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_PART1_NAME='setup_the_lamplighters_league_1.3.1-67360_(75947)-1.bin' ARCHIVE_BASE_0_PART1_MD5='6a217c893d0cc2b93ec561ad0880eb73' ARCHIVE_BASE_0_PART2_NAME='setup_the_lamplighters_league_1.3.1-67360_(75947)-2.bin' ARCHIVE_BASE_0_PART2_MD5='2a56f3cdc2bd2898fb7bc3eacedefec7' ARCHIVE_BASE_0_PART3_NAME='setup_the_lamplighters_league_1.3.1-67360_(75947)-3.bin' ARCHIVE_BASE_0_PART3_MD5='e398fc1ae766a81f1374f971be55929e' ARCHIVE_BASE_0_SIZE='15634809' ARCHIVE_BASE_0_VERSION='1.3.1-gog75947' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_lamplighters_league' UNITY3D_NAME='LamplightersLeague' CONTENT_PATH_DEFAULT='.' ## The game fails to start if this GOG Galaxy setting file is not included, ## as it then expects to be running from Steam. CONTENT_GAME0_BIN_FILES=' galaxyconfig.json' CONTENT_GAME_DATA_BUNDLES_1_FILES=" ${UNITY3D_NAME}_data/streamingassets/aa/standalonewindows64/[0-7]*.bundle" CONTENT_GAME_DATA_BUNDLES_2_FILES=" ${UNITY3D_NAME}_data/streamingassets/aa/standalonewindows64/[8,9a-f]*.bundle" ## Prevent rendering problems, including flashing bright colours (WINE 8.0) ## Due to the flashes being potentially harmful, this should not be removed ## at least until a WINE build not triggering them reaches Debian oldstable. WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/HarebrainedSchemes/LamplightersLeague' PACKAGES_LIST=' PKG_BIN PKG_DATA_BUNDLES_1 PKG_DATA_BUNDLES_2 PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_BUNDLES_1 PKG_DATA_BUNDLES_2' PKG_DATA_BUNDLES_ID="${PKG_DATA_ID}-bundles" PKG_DATA_BUNDLES_1_ID="${PKG_DATA_BUNDLES_ID}-1" PKG_DATA_BUNDLES_2_ID="${PKG_DATA_BUNDLES_ID}-2" PKG_DATA_BUNDLES_DESCRIPTION="$PKG_DATA_DESCRIPTION - bundles" PKG_DATA_BUNDLES_1_DESCRIPTION="$PKG_BUNDLES_DESCRIPTION - part 1" PKG_DATA_BUNDLES_2_DESCRIPTION="$PKG_BUNDLES_DESCRIPTION - part 2" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-the-settlers-2.sh0000755000000000000000000001415714471751340014752 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # The Settlers 2 ### script_version=20241027.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='the-settlers-2' GAME_NAME='The Settlers Ⅱ' # Archives ## German version ARCHIVE_BASE_DE_1_NAME='setup_the_settlers_2_gold_1.5.1_(german)_(30319).exe' ARCHIVE_BASE_DE_1_MD5='c360aaabd05e99b0f0752e52dd105107' ARCHIVE_BASE_DE_1_TYPE='innosetup' ARCHIVE_BASE_DE_1_SIZE='358538' ARCHIVE_BASE_DE_1_VERSION='1.5.1-gog30319' ARCHIVE_BASE_DE_1_URL='https://www.gog.com/game/the_settlers_2_gold_edition' ARCHIVE_BASE_DE_0_NAME='setup_settlers2_gold_german_2.1.0.17.exe' ARCHIVE_BASE_DE_0_MD5='f87a8fded6de455af4e6a284b3c4ed5e' ARCHIVE_BASE_DE_0_TYPE='innosetup' ARCHIVE_BASE_DE_0_SIZE='370000' ARCHIVE_BASE_DE_0_VERSION='1.5.1-gog2.1.0.17' ## English version ARCHIVE_BASE_EN_1_NAME='setup_the_settlers_2_gold_1.5.1_(30319).exe' ARCHIVE_BASE_EN_1_MD5='8381240ee580a298798b6afe863bac52' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_SIZE='359765' ARCHIVE_BASE_EN_1_VERSION='1.5.1-gog30319' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/the_settlers_2_gold_edition' ARCHIVE_BASE_EN_0_NAME='setup_settlers2_gold_2.0.0.14.exe' ARCHIVE_BASE_EN_0_MD5='6f64b47b15f6ba5d43670504dd0bb229' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='370000' ARCHIVE_BASE_EN_0_VERSION='1.5.1-gog2.0.0.14' ## French version ARCHIVE_BASE_FR_1_NAME='setup_the_settlers_2_gold_1.5.1_(french)_(30319).exe' ARCHIVE_BASE_FR_1_MD5='55a9d15f1260de5e711ea649120ece50' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_SIZE='395295' ARCHIVE_BASE_FR_1_VERSION='1.5.1-gog30319' ARCHIVE_BASE_FR_1_URL='https://www.gog.com/game/the_settlers_2_gold_edition' ARCHIVE_BASE_FR_0_NAME='setup_settlers2_gold_french_2.1.0.16.exe' ARCHIVE_BASE_FR_0_MD5='1eca72ca45d63e4390590d495657d213' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_SIZE='410000' ARCHIVE_BASE_FR_0_VERSION='1.5.1-gog2.1.0.16' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_DE_0='app' CONTENT_PATH_DEFAULT_EN_0='app' CONTENT_PATH_DEFAULT_FR_0='app' CONTENT_GAME_COMMON_FILES=' DOS4GW.EXE SETTLER2.VMC SETTLERS2.GOG SETTLERS2.INS DATA/*.DAT DATA/EDITRES.IDX DATA/ANIMDAT DATA/BOBS DATA/CBOB DATA/IO/*.DAT DATA/IO/*.FNT DATA/*.LST DATA/MASKS DATA/MBOB DATA/MISSIONS/MIS_00*.RTX DATA/MISSIONS/MIS_10*.RTX DATA/SOUNDDAT/SNG DATA/SOUNDDAT/SOUND.LST DATA/TEXTURES DRIVERS/*.AD DRIVERS/*.DIG DRIVERS/DIG.INI DRIVERS/*.EXE DRIVERS/*.LST DRIVERS/*.MDI DRIVERS/*.OPL GFX/PALETTE GFX/PICS2 GFX/PICS/INSTALL.LBM GFX/PICS/MISSION GFX/PICS/SETUP013.LBM GFX/PICS/SETUP015.LBM GFX/PICS/SETUP666.LBM GFX/PICS/SETUP667.LBM GFX/PICS/SETUP801.LBM GFX/PICS/SETUP802.LBM GFX/PICS/SETUP803.LBM GFX/PICS/SETUP804.LBM GFX/PICS/SETUP805.LBM GFX/PICS/SETUP806.LBM GFX/PICS/SETUP810.LBM GFX/PICS/SETUP811.LBM GFX/PICS/SETUP895.LBM GFX/PICS/SETUP896.LBM GFX/PICS/SETUP899.LBM GFX/PICS/SETUP990.LBM GFX/PICS/WORLD.LBM GFX/PICS/WORLDMSK.LBM GFX/TEXTURES VIDEO/SMACKPLY.EXE' CONTENT_GAME_MAIN_FILES=' DATA/RESOURCE.IDX DATA/IO/*.IDX DATA/MAPS* DATA/MISSIONS/MIS_0100.RTX DATA/ONLINE DATA/TXT* DRIVERS/MDI.INI GFX/PICS/SETUP000.LBM GFX/PICS/SETUP010.LBM GFX/PICS/SETUP011.LBM GFX/PICS/SETUP012.LBM GFX/PICS/SETUP014.LBM GFX/PICS/SETUP897.LBM GFX/PICS/SETUP898.LBM GFX/PICS/SETUP900.LBM GFX/PICS/SETUP901.LBM GFX/PICS/SETUP996.LBM GFX/PICS/SETUP997.LBM GFX/PICS/SETUP998.LBM SAVE/MISSION.DAT VIDEO/*.SMK *.EXE *.INI *.SCR' CONTENT_GAME0_MAIN_RELATIVE_PATH='__SUPPORT/SAVE' CONTENT_GAME0_MAIN_FILES=' SAVE/MISSION.DAT' CONTENT_DOC_MAIN_FILES=' EULA *.TXT' USER_PERSISTENT_FILES=' SETUP.INI' USER_PERSISTENT_DIRECTORIES=' DATA GFX SAVE WORLDS' GAME_IMAGE='SETTLERS2.INS' GAME_IMAGE_TYPE='iso' APP_MAIN_EXE='S2.EXE' APP_MAIN_ICON='APP/GOGGAME-1207658786.ICO' ## Play the intro movie before starting the game. APP_MAIN_DOSBOX_PRERUN=' @VIDEO\SMACKPLY VIDEO\INTRO.SMK' APP_EDITOR_ID="${GAME_ID}-editor" APP_EDITOR_EXE='S2EDIT.EXE' APP_EDITOR_NAME="$GAME_NAME - Editor" APP_EDITOR_ICON="$APP_MAIN_ICON" APP_SETUP_ID="${GAME_ID}-setup" APP_SETUP_EXE='SETUP.EXE' APP_SETUP_NAME="$GAME_NAME - Setup" APP_SETUP_CAT='Settings' APP_SETUP_ICON="$APP_MAIN_ICON" PACKAGES_LIST=' PKG_COMMON PKG_MAIN' PKG_COMMON_ID="${GAME_ID}-common" PKG_COMMON_DESCRIPTION='common data' PKG_MAIN_ID="$GAME_ID" PKG_MAIN_ID_DE="${GAME_ID}-de" PKG_MAIN_ID_EN="${GAME_ID}-en" PKG_MAIN_ID_FR="${GAME_ID}-fr" PKG_MAIN_PROVIDES=" $PKG_MAIN_ID" PKG_MAIN_DESCRIPTION_DE='German version' PKG_MAIN_DESCRIPTION_EN='English version' PKG_MAIN_DESCRIPTION_FR='French version' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_COMMON' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Convert all file paths to uppercase. toupper . ## Enforce disk image name. if [ -e 'SETTLERS2.INST' ]; then mv 'SETTLERS2.INST' "$GAME_IMAGE" fi ## Ensure case consistency in disk image table of contents. sed_pattern='settlers2.gog' sed_replacement='SETTLERS2.GOG' sed_expression="s/${sed_pattern}/${sed_replacement}/i" sed --in-place --expression="$sed_expression" "$GAME_IMAGE" ## Enforce icon name and path. for icon_path in \ 'GOGGAME-1207658786.ICO' \ 'GFW_HIGH.ICO' do if [ -e "$icon_path" ]; then mkdir --parents 'APP' mv "$icon_path" "$(icon_path 'APP_MAIN_ICON')" fi done ) # Include game data content_inclusion_icons 'PKG_COMMON' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-the-witcher-1.sh0000755000000000000000000001237414471751340014550 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays set -o errexit ### # The Witcher ### script_version=20241121.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='the-witcher-1' GAME_NAME='The Witcher' ARCHIVE_BASE_1_NAME='setup_the_witcher_enhanced_edition_directors_cut_1.5_(cs)_gog_0.2_(77554).exe' ARCHIVE_BASE_1_MD5='3d8467c76abe8cd16711ada268e1600f' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_the_witcher_enhanced_edition_directors_cut_1.5_(cs)_gog_0.2_(77554)-1.bin' ARCHIVE_BASE_1_PART1_MD5='149adafe38e79c246103e664613558c7' ARCHIVE_BASE_1_PART2_NAME='setup_the_witcher_enhanced_edition_directors_cut_1.5_(cs)_gog_0.2_(77554)-2.bin' ARCHIVE_BASE_1_PART2_MD5='baa94a6d83dc3a4703d8c414b4442ce5' ARCHIVE_BASE_1_PART3_NAME='setup_the_witcher_enhanced_edition_directors_cut_1.5_(cs)_gog_0.2_(77554)-3.bin' ARCHIVE_BASE_1_PART3_MD5='5b74090cd3314dd0db1849c0dce5aa84' ARCHIVE_BASE_1_SIZE='14781823' ARCHIVE_BASE_1_VERSION='1.5.726-gog77554' ARCHIVE_BASE_1_URL='https://www.gog.com/game/the_witcher' ARCHIVE_BASE_0_NAME='setup_the_witcher_enhanced_edition_1.5_(a)_(10712).exe' ARCHIVE_BASE_0_MD5='2440cfb5fb4890ff4b9bc4b88b434d38' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_the_witcher_enhanced_edition_1.5_(a)_(10712)-1.bin' ARCHIVE_BASE_0_PART1_MD5='e530a1a2e86094740b45a14f63260804' ARCHIVE_BASE_0_PART2_NAME='setup_the_witcher_enhanced_edition_1.5_(a)_(10712)-2.bin' ARCHIVE_BASE_0_PART2_MD5='fb3a478bcb6e4702e1e8d392cb55391d' ARCHIVE_BASE_0_PART3_NAME='setup_the_witcher_enhanced_edition_1.5_(a)_(10712)-3.bin' ARCHIVE_BASE_0_PART3_MD5='2df8369af401815a736f5d88f85fbf8d' ARCHIVE_BASE_0_SIZE='15000000' ARCHIVE_BASE_0_VERSION='1.5.726-gog10712' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_witcher' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' installed launcher register system thewitchergdf.dll' ## TODO: Check if these binaries are required CONTENT_GAME0_BIN_FILES=' launcher.exe register.exe' CONTENT_GAME_VOICES_FILES=' data/voices_*.bif' CONTENT_GAME_DATA_FILES=' data' CONTENT_DOC_DATA_FILES=' manual.pdf readme.rtf release.txt' ## TODO: Move the add-ons to a dedicated package. CONTENT_ADDONS_DATA_RELATIVE_PATH='__support/add/the witcher' CONTENT_ADDONS_DATA_FILES=' *.adv' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/The Witcher' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\CD Projekt RED\Witcher\Bindings HKEY_CURRENT_USER\Software\CD Projekt RED\Witcher\Settings' ## Work around texture display problems. ## cf. https://bugs.winehq.org/show_bug.cgi?id=46553 WINE_WINETRICKS_VERBS='d3dx9_35' ## Work around invisible models and flickering. ## cf. https://bugs.winehq.org/show_bug.cgi?id=34052 WINE_WINETRICKS_VERBS="${WINE_WINETRICKS_VERBS:-} cfc=enabled" APP_MAIN_EXE='system/witcher.exe' ## Include "Enhanced Edition" add-ons APP_MAIN_PRERUN='# Include "Enhanced Edition" add-ons addons_destination="${WINEPREFIX}/drive_c/users/Public/Documents/the witcher" if [ ! -e "$addons_destination" ]; then install -D --mode=644 \ --target-directory="$addons_destination" \ "${PATH_GAME_DATA}/addons"/*.adv fi ' PACKAGES_LIST=' PKG_BIN PKG_VOICES PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_VOICES_ID="${GAME_ID}-voices" PKG_VOICES_DESCRIPTION='voices' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_VOICES' # Set required registry keys # shellcheck disable=SC1003 install_folder='C:\\'"${GAME_ID}"'\\' registry_dump_init_file='registry-dumps/init.reg' registry_dump_init_content='Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\CD Projekt Red\The Witcher] "InstallFolder"="'"${install_folder}"'" "IsDjinniInstalled"=dword:00000001 "Language"="3" "RegionVersion"="WE"' CONTENT_GAME_BIN_FILES="${CONTENT_GAME_BIN_FILES:-} $registry_dump_init_file" APP_REGEDIT="${APP_REGEDIT:-} $registry_dump_init_file" REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} iconv" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Set required registry keys mkdir --parents "$(dirname "$registry_dump_init_file")" printf '%s' "$registry_dump_init_content" | iconv --from-code=UTF-8 --to-code=UTF-16 --output="$registry_dump_init_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion 'ADDONS_DATA' 'PKG_DATA' "$(path_game_data)/addons" content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-titan-quest-expansions.sh0000755000000000000000000000562114471751340016627 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=20241229.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='titan-quest' GAME_NAME='Titan Quest' EXPANSION_ID_RAGNAROK='ragnarok' EXPANSION_NAME_RAGNAROK='Ragnarök' EXPANSION_ID_ATLANTIS='atlantis' EXPANSION_NAME_ATLANTIS='Atlantis' # Archives ## Ragnarök ARCHIVE_BASE_RAGNAROK_0_NAME='setup_titan_quest_ragnarok_2.10.6_(59562).exe' ARCHIVE_BASE_RAGNAROK_0_MD5='cb8f5a3f5567d9f84ad3add23347ad07' ARCHIVE_BASE_RAGNAROK_0_TYPE='innosetup' ARCHIVE_BASE_RAGNAROK_0_PART1_NAME='setup_titan_quest_ragnarok_2.10.6_(59562)-1.bin' ARCHIVE_BASE_RAGNAROK_0_PART1_MD5='e4a5d3bb1264c1a3881e2263cd3d6af3' ARCHIVE_BASE_RAGNAROK_0_SIZE='2553284' ARCHIVE_BASE_RAGNAROK_0_VERSION='2.10.6-gog59562' ARCHIVE_BASE_RAGNAROK_0_URL='https://www.gog.com/game/titan_quest_ragnarok' ## Atlantis ARCHIVE_BASE_ATLANTIS_0_NAME='setup_titan_quest_atlantis_2.10.6_(59562).exe' ARCHIVE_BASE_ATLANTIS_0_MD5='6924de3dc1dd15eec6f1e4e6d465f33c' ARCHIVE_BASE_ATLANTIS_0_TYPE='innosetup' ARCHIVE_BASE_ATLANTIS_0_PART1_NAME='setup_titan_quest_atlantis_2.10.6_(59562)-1.bin' ARCHIVE_BASE_ATLANTIS_0_PART1_MD5='2ad964c3cf35c13a0e05b7680b62d718' ARCHIVE_BASE_ATLANTIS_0_SIZE='2265041' ARCHIVE_BASE_ATLANTIS_0_VERSION='2.10.6-gog59562' ARCHIVE_BASE_ATLANTIS_0_URL='https://www.gog.com/game/titan_quest_atlantis' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES_RAGNAROK=' resources/quests.arc resources/xpack2/dialog.arc resources/xpack2/dialog_de.arc resources/xpack2/dialog_fr.arc resources/xpack2/dialog_ru.arc resources/xpack2/menu.arc resources/xpack2/quests.arc' CONTENT_GAME_MAIN_FILES_ATLANTIS=' resources/xpack3/dialog.arc resources/xpack3/dialog_de.arc resources/xpack3/dialog_fr.arc resources/xpack3/dialog_ru.arc resources/xpack3/menu.arc resources/xpack3/quests.arc resources/xpack3/system.arc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' PKG_MAIN_PROVIDES_RAGNAROK=" ${GAME_ID}-data-xpack2" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-titan-quest.sh0000755000000000000000000000764614471751340014453 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Titan Quest ### script_version=20241229.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='titan-quest' GAME_NAME='Titan Quest' ARCHIVE_BASE_0_NAME='setup_titan_quest_-_anniversary_edition_2.10.6_(59562).exe' ARCHIVE_BASE_0_MD5='a8b9399e2f968ca819c7138ff2ce5ab1' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_titan_quest_-_anniversary_edition_2.10.6_(59562)-1.bin' ARCHIVE_BASE_0_PART1_MD5='7164d6f1cf600aaa17101b4a263d4a70' ARCHIVE_BASE_0_PART2_NAME='setup_titan_quest_-_anniversary_edition_2.10.6_(59562)-2.bin' ARCHIVE_BASE_0_PART2_MD5='b8b5821c04bfed43068e02b5a1431511' ARCHIVE_BASE_0_PART3_NAME='setup_titan_quest_-_anniversary_edition_2.10.6_(59562)-3.bin' ARCHIVE_BASE_0_PART3_MD5='bb6bcb03b2ef688ef57d46d12d4b1233' ARCHIVE_BASE_0_PART4_NAME='setup_titan_quest_-_anniversary_edition_2.10.6_(59562)-4.bin' ARCHIVE_BASE_0_PART4_MD5='2a61ebe44e9424cdbad29f14e072c743' ARCHIVE_BASE_0_SIZE='13753628' ARCHIVE_BASE_0_VERSION='2.10.21415-gog59562' ARCHIVE_BASE_0_URL='https://www.gog.com/game/titan_quest_anniversary_edition' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' milesredist settings binkw32.dll concrt140.dll devil.dll direct3d11.dll direct3d.dll engine.dll game.dll gfsdk_ssao_d3d11.win32.dll libcurl.dll libeay32.dll libfbxsdk.dll memorymgr.dll mss32.dll msvcp140.dll msvcp71.dll msvcr71.dll natlib.dll pathengine.dll sourcecontrol.dll ssleay32.dll thqgdscore.dll thqno_api.dll vcruntime140.dll widget.dll zlib1.dll maxplugins.dlo aifeditor.exe animationcompiler.exe archivetool.exe artmanager.exe bitmapcreator.exe editor.exe fbxexporter.exe fontcompiler.exe mapcompiler.exe modelcompiler.exe pseditor.exe questeditor.exe resourcetree.exe shadercompiler.exe sourceserver.exe texturecompiler.exe tq.exe viewer.exe' ## The game crashes on launch if some store-specific libraries are missing: ## ## [2024-06-06-23:20:08][ERROR]: LoadPlugin: Unable to load plugin 'gog' from THQNOnline\gog\ ## [2024-06-06-23:20:08][ERROR]: LoadPlugin: Unable to load plugin 'gog' from THQNOnline\gog\ CONTENT_GAME0_BIN_FILES=' thqnonline/gog' CONTENT_GAME_DATA_XPACK2_FILES=' resources/quests.arc' CONTENT_GAME_DATA_RESOURCES_FILES=' resources' CONTENT_GAME_DATA_FILES=' audio database text toolset videos thqnocfg.dat' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/Titan Quest - Immortal Throne' APP_MAIN_EXE='tq.exe' APP_MAIN_OPTIONS='/dx11' PACKAGES_LIST=' PKG_BIN PKG_DATA_XPACK2 PKG_DATA_RESOURCES PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_XPACK2 PKG_DATA_RESOURCES' PKG_DATA_XPACK2_ID="${PKG_DATA_ID}-xpack2" PKG_DATA_XPACK2_DESCRIPTION='resources shared between the base game and the Raganarök expansion' PKG_DATA_RESOURCES_ID="${PKG_DATA_ID}-resources" PKG_DATA_RESOURCES_DESCRIPTION="$PKG_DATA_DESCRIPTION - resources" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-tomb-raider-2.sh0000755000000000000000000000601314471751340014524 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Tomb Raider 2 ### script_version=20241125.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='tomb-raider-2' GAME_NAME='Tomb Raider Ⅱ' ARCHIVE_BASE_EN_0_NAME='setup_tomb_raider_2_20180108_(17720).exe' ARCHIVE_BASE_EN_0_MD5='858aa88bf7654a8fb7b7f8070cf1021b' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_VERSION='1.1-gog17720' ARCHIVE_BASE_EN_0_SIZE='340000' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/tomb_raider_123' ARCHIVE_BASE_FR_0_NAME='setup_tomb_raider_2_french_20180108_(17720).exe' ARCHIVE_BASE_FR_0_MD5='12ebe01ec7b4366862af31b860097f14' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_VERSION='1.1-gog17720' ARCHIVE_BASE_FR_0_SIZE='410000' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/tomb_raider_123' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' dec130.dll edec.dll libogg-0.dll libvorbis-0.dll libvorbisfile-3.dll msvcp90.dll msvcr90.dll sound.dll winplay.dll winsdec.dll winstr.dll data/dsetup16.dll data/dsetup32.dll data/dsetup.dll data/_setup.dll tomb2.exe' CONTENT_GAME_L10N_FILES=' audio data/*.dat data/*.pcx' CONTENT_GAME_DATA_FILES=' fmv music tombpc.dat data/*.sfx data/*.tr2' CONTENT_DOC_L10N_FILES=' manual.pdf readme.txt' CONTENT_DOC0_L10N_FILES_EN=' tomb raider ii_pc eula english.docx' CONTENT_DOC0_L10N_FILES_FR=' tomb raider ii_pc eula french.doc' USER_PERSISTENT_FILES=' savegame.*' APP_MAIN_EXE='tomb2.exe' APP_SETUP_ID="${GAME_ID}-setup" APP_SETUP_NAME="$GAME_NAME - setup" APP_SETUP_CAT='Settings' APP_SETUP_EXE='tomb2.exe' APP_SETUP_OPTIONS='-setup' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' application/x-id3' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-tomb-raider-remastered.sh0000755000000000000000000000506314471751340016522 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Tomb Raider Remastered: # - Tomb Raider # - Tomb Raider 2 # - Tomb Raider 3 ### script_version=20241228.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='tomb-raider-remastered-1-2-3' GAME_NAME='Tomb Raider I-III Remastered' ARCHIVE_BASE_0_NAME='setup_tomb_raider_i-iii_remastered_1.01_patch_4_(77558).exe' ARCHIVE_BASE_0_MD5='9172c7570c8c0dfd47c3925aaecf360d' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_tomb_raider_i-iii_remastered_1.01_patch_4_(77558)-1.bin' ARCHIVE_BASE_0_PART1_MD5='dbcec0aba1dd597efe96bace51e79140' ARCHIVE_BASE_0_SIZE='6109084' ARCHIVE_BASE_0_VERSION='1.01-gog77558' ARCHIVE_BASE_0_URL='https://www.gog.com/game/tomb_raider_i_to_iii_remastered' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' tomb123.exe 1/tomb1.dll 2/tomb2.dll 3/tomb3.dll' CONTENT_GAME_DATA_1_FILES=' 1' CONTENT_GAME_DATA_2_FILES=' 2' CONTENT_GAME_DATA_3_FILES=' 3' WINE_PERSISTENT_DIRECTORIES=' users/$[USER}/AppData/Roaming/TRX' APP_MAIN_EXE='tomb123.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA_1 PKG_DATA_2 PKG_DATA_3 PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_1_ID="${PKG_DATA_ID}-episode-1" PKG_DATA_2_ID="${PKG_DATA_ID}-episode-2" PKG_DATA_3_ID="${PKG_DATA_ID}-episode-3" PKG_DATA_DESCRIPTION='data' PKG_DATA_1_DESCRIPTION="$PKG_DATA_DESCRIPTION - Episode 1" PKG_DATA_2_DESCRIPTION="$PKG_DATA_DESCRIPTION - Episode 2" PKG_DATA_3_DESCRIPTION="$PKG_DATA_DESCRIPTION - Episode 3" PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_1 PKG_DATA_2 PKG_DATA_3' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-tonight-we-riot.sh0000755000000000000000000000520314471751340015220 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Tonight We Riot ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='tonight-we-riot' GAME_NAME='Tonight We Riot' ARCHIVE_BASE_ITCH_0_NAME='TonightWeRiot_Linux.zip' ARCHIVE_BASE_ITCH_0_MD5='293a595ea44b5e80a0ca0eeb7b5a925a' ARCHIVE_BASE_ITCH_0_SIZE='690000' ARCHIVE_BASE_ITCH_0_VERSION='1.0-itch.2020.06.08' ARCHIVE_BASE_ITCH_0_URL='https://meansinteractive.itch.io/tonight-we-riot' ARCHIVE_BASE_GOG_2_NAME='tonight_we_riot_linuxrelease_c_38381.sh' ARCHIVE_BASE_GOG_2_MD5='7afc74aefbccaa58627d934e63c16247' ARCHIVE_BASE_GOG_2_SIZE='690000' ARCHIVE_BASE_GOG_2_VERSION='1.0.c-gog38381' ARCHIVE_BASE_GOG_2_URL='https://www.gog.com/game/tonight_we_riot' ARCHIVE_BASE_GOG_1_NAME='tonight_we_riot_linuxrelease_b_38278.sh' ARCHIVE_BASE_GOG_1_MD5='7ca6aedccb70bcd027b9e79d5cfb8585' ARCHIVE_BASE_GOG_1_SIZE='690000' ARCHIVE_BASE_GOG_1_VERSION='1.0.b-gog38278' ARCHIVE_BASE_GOG_0_NAME='tonight_we_riot_linuxrelease_a_38076.sh' ARCHIVE_BASE_GOG_0_MD5='38b03db54a7d80895d2abe0d9f153ae7' ARCHIVE_BASE_GOG_0_SIZE='690000' ARCHIVE_BASE_GOG_0_VERSION='1.0.a-gog38076' UNITY3D_NAME='TonightWeRiot_Linux' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_ITCH='TonightWeRiot_Linux' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-torchlight-1.sh0000755000000000000000000000501614471751340014467 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Torchlight ### script_version=20241229.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='torchlight-1' GAME_NAME='Torchlight' ARCHIVE_BASE_1_NAME='setup_torchlight_1.15(a)_(23675).exe' ARCHIVE_BASE_1_MD5='a29e51f55aae740f4046d227d33fa64b' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='453318' ARCHIVE_BASE_1_VERSION='1.15-gog23675' ARCHIVE_BASE_1_URL='https://www.gog.com/game/torchlight' ARCHIVE_BASE_0_NAME='setup_torchlight_2.0.0.12.exe' ARCHIVE_BASE_0_MD5='4b721e1b3da90f170d66f42e60a3fece' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='460000' ARCHIVE_BASE_0_VERSION='1.15-gog2.0.0.12' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' plugins.cfg resources.cfg ceguibase.dll ceguiexpatparser.dll ceguifalagardwrbase.dll cg.dll d3dx9_39.dll fmodex.dll msvcp90.dll msvcr90.dll ogreguirenderer.dll ogremain.dll ois.dll particleuniverse.dll plugin_cgprogrammanager.dll plugin_octreescenemanager.dll plugin_particlefx.dll referenceapplayer.dll rendersystem_direct3d9.dll rendersystem_gl.dll torchlight.exe' CONTENT_GAME_DATA_FILES=' icons music programs logo.bmp runicgames.ico torchlight.ico buildver.txt pak.zip' CONTENT_DOC_DATA_FILES=' *.pdf' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/runic games/torchlight' APP_MAIN_EXE='torchlight.exe' APP_MAIN_ICON='torchlight.ico' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-torchlight-2.sh0000755000000000000000000000770714471751340014501 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Torchlight 2 ### script_version=20241027.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='torchlight-2' GAME_NAME='Torchlight Ⅱ' ARCHIVE_BASE_GOG_0_NAME='gog_torchlight_2_2.0.0.2.sh' ARCHIVE_BASE_GOG_0_MD5='e107f6d4c6d4cecea37ade420a8d4892' ARCHIVE_BASE_GOG_0_SIZE='1673501' ARCHIVE_BASE_GOG_0_VERSION='1.25.9.7-gog2.0.0.2' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/torchlight_ii' ARCHIVE_BASE_HUMBLE_0_NAME='Torchlight2-linux-2015-04-01.sh' ARCHIVE_BASE_HUMBLE_0_MD5='730a5d08c8f1cd4a65afbc0ca631d85c' ARCHIVE_BASE_HUMBLE_0_SIZE='1672909' ARCHIVE_BASE_HUMBLE_0_VERSION='1.25.2.4-humble150402' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/torchlight-ii' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_LIBS_BIN_FILES=' libCEGUIBase.so.1 libCEGUIExpatParser.so libCEGUIFalagardWRBase.so libCEGUIFreeImageImageCodec.so libfmodex.so libOgreMain.so.1 Plugin_OctreeSceneManager.so RenderSystem_GL.so' CONTENT_LIBS_BIN64_RELATIVE_PATH_GOG='lib64' CONTENT_LIBS_BIN64_RELATIVE_PATH_HUMBLE='x86_64/lib64' CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_LIBS_BIN32_RELATIVE_PATH_GOG='lib' CONTENT_LIBS_BIN32_RELATIVE_PATH_HUMBLE='x86/lib' CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_GAME_BIN64_RELATIVE_PATH_HUMBLE='x86_64' CONTENT_GAME_BIN64_FILES=' Torchlight2.bin.x86_64 ModLauncher.bin.x86_64' CONTENT_GAME_BIN32_RELATIVE_PATH_HUMBLE='x86' CONTENT_GAME_BIN32_FILES=' Torchlight2.bin.x86 ModLauncher.bin.x86' CONTENT_GAME_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_GAME_DATA_FILES=' icons movies music PAKS porting programs *.bmp *.cfg *.png' CONTENT_DOC_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_DOC_DATA_FILES=' licenses' APP_MAIN_EXE_BIN64='Torchlight2.bin.x86_64' APP_MAIN_EXE_BIN32='Torchlight2.bin.x86' APP_MAIN_ICON='Delvers.png' APP_MAIN_ICON_HUMBLE='noarch/Delvers.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libexpat.so.1 libfontconfig.so.1 libfreeimage.so.3 libfreetype.so.6 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libICE.so.6 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libSM.so.6 libstdc++.so.6 libuuid.so.1 libX11.so.6 libXext.so.6 libXft.so.2 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN32')" ## Add required execution bit on extra binaries. chmod 755 'ModLauncher.bin.x86' ) ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN64')" ## Add required execution bit on extra binaries. chmod 755 'ModLauncher.bin.x86_64' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-torment-tides-of-numenera.sh0000755000000000000000000001112214471751340017165 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=20241021.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_AUDIO PKG_DATA_RESOURCES' PKG_DATA_AUDIO_ID="${PKG_DATA_ID}-audio" PKG_DATA_AUDIO_DESCRIPTION="$PKG_DATA_DESCRIPTION - audio" ## 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" ## 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" # Include a workaround for the quest-breaking Anechoic Lazaret bugs # cf. https://steamcommunity.com/app/272270/discussions/1/1473096694453357831/?ctp=15#c1708438376918556245 REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} 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 # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Include a workaround for the quest-breaking Anechoic Lazaret bugs ## cf. https://steamcommunity.com/app/272270/discussions/1/1473096694453357831/?ctp=15#c1708438376918556245 conversation_file="$(unity3d_name)_Data/StreamingAssets/data/conversations/a_sagus/a2623_damaged_peerless_drone.conversation" sed_pattern=' ' sed_replacement=' \n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' false\n' sed_replacement="$sed_replacement"' Void SetGlobalValue(String, Int32)\n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' Quest_AnechoicLazaret_DefeatedDrones\n' sed_replacement="$sed_replacement"' 1\n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' \n' sed_replacement="$sed_replacement"' ' sed_expression="1010s#${sed_pattern}#${sed_replacement}#" sed --in-place --expression="$sed_expression" "$conversation_file" unix2dos --quiet "$conversation_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-total-overdose.sh0000755000000000000000000000367014471751340015135 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Total Overdose ### script_version=20241125.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='total-overdose' GAME_NAME='Total Overdose' ARCHIVE_BASE_0_NAME='setup_total_overdose_1.00_(18925).exe' ARCHIVE_BASE_0_MD5='df9f6750e5f12fd83ee775365dfd9637' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1700000' ARCHIVE_BASE_0_VERSION='1.00-gog18925' ARCHIVE_BASE_0_URL='https://www.gog.com/game/total_overdose_a_gunslingers_tale_in_mexico' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' tod.exe *.dll' CONTENT_GAME_DATA_FILES=' *.dpc *.naz' CONTENT_DOC_DATA_FILES=' *.doc *.docx *.pdf' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Total Overdose' APP_MAIN_EXE='tod.exe' APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=101' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-trailblazers.sh0000755000000000000000000000364714471751340014670 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Trailblazers ### script_version=20250103.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='trailblazers' GAME_NAME='Trailblazers' ARCHIVE_BASE_0_NAME='Trailblazers_Linux_DRMFreeRelease_6157.zip' ARCHIVE_BASE_0_MD5='822d2532036da1b5ffa5c7821a7cbcc6' ARCHIVE_BASE_0_SIZE='1121434' ARCHIVE_BASE_0_VERSION='6157-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/trailblazers' UNITY3D_NAME='Trailblazers' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='Trailblazers_LinuxGenericRelease_6157' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-transistor.sh0000755000000000000000000000702214471751340014371 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=20241229.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='transistor' GAME_NAME='Transistor' ARCHIVE_BASE_2_NAME='transistor_1_50440_8123_23365.sh' ARCHIVE_BASE_2_MD5='dc89c175267dc1a1f3434a9d4f903cce' ARCHIVE_BASE_2_SIZE='3580037' ARCHIVE_BASE_2_VERSION='1.50440.8123-gog23365' ARCHIVE_BASE_2_URL='https://www.gog.com/game/transistor' ARCHIVE_BASE_1_NAME='transistor_en_v1_50423_21516.sh' ARCHIVE_BASE_1_MD5='52d0df1d959b333b17ede106f8e53062' ARCHIVE_BASE_1_SIZE='3600000' ARCHIVE_BASE_1_VERSION='1.50423-gog21516' ARCHIVE_BASE_0_NAME='gog_transistor_2.0.0.3.sh' ARCHIVE_BASE_0_MD5='53dbaf643471f3b8494548261584dd13' ARCHIVE_BASE_0_SIZE='3200000' ARCHIVE_BASE_0_VERSION='1.20140310-gog2.0.0.3' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_FILES=' libBink.so libFModPlugins.so libfmod.so.4 libfmodstudio.so.4 liblua52.so' CONTENT_LIBS_LIBS64_RELATIVE_PATH='lib64' CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_LIBS32_RELATIVE_PATH='lib' CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_MAIN_FILES=' Content monoconfig monomachineconfig Transistor.exe Transistor.exe.config Engine.dll Engine.dll.config Engine.SDL2.dll Engine.SDL2.dll.config HostessProtocol.dll KeraLua.dll MonoGame.Framework.SDL2.dll NLua.dll SDL2-CS.dll SDL2-CS.dll.config Newtonsoft.Json.dll Newtonsoft.Json.pdb Newtonsoft.Json.xml *.bmp *.cfg *.pdb *.xml *.txt' CONTENT_DOC_MAIN_FILES=' Linux.README' ## TODO: Check why a regular symlinks prefix can not be used APP_MAIN_PREFIX_TYPE='none' APP_MAIN_EXE='Transistor.exe' APP_MAIN_ICON='Transistor.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libGL.so.1 libSDL2-2.0.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Design.dll System.Drawing.dll System.Management.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Transactions.dll System.Xml.dll System.Xml.Linq.dll' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6' PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_MAIN' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-tropico.sh0000755000000000000000000001342114471751340013640 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=20241103.3 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID_TROPICO1='tropico-1' GAME_NAME_TROPICO1='Tropico' GAME_ID_TROPICO2='tropico-2' GAME_NAME_TROPICO2='Tropico 2: Pirate Cove' # Archives ## Tropico 1 ARCHIVE_BASE_TROPICO1_EN_0_NAME='setup_tropico_2.1.0.14.exe' ARCHIVE_BASE_TROPICO1_EN_0_MD5='1bd761bc4a40a42a9caeb41c70d46465' ARCHIVE_BASE_TROPICO1_EN_0_TYPE='innosetup' ARCHIVE_BASE_TROPICO1_EN_0_SIZE='1400000' ARCHIVE_BASE_TROPICO1_EN_0_VERSION='1.5.3-gog2.1.0.14' ARCHIVE_BASE_TROPICO1_EN_0_URL='https://www.gog.com/game/tropico_reloaded' ARCHIVE_BASE_TROPICO1_FR_0_NAME='setup_tropico_french_2.1.0.14.exe' ARCHIVE_BASE_TROPICO1_FR_0_MD5='aad4ea5a6fe2b2c2f347cfa7aae058b3' ARCHIVE_BASE_TROPICO1_FR_0_TYPE='innosetup' ARCHIVE_BASE_TROPICO1_FR_0_SIZE='1400000' ARCHIVE_BASE_TROPICO1_FR_0_VERSION='1.5.3-gog2.1.0.14' ARCHIVE_BASE_TROPICO1_FR_0_URL='https://www.gog.com/game/tropico_reloaded' ## Tropico 2 ARCHIVE_BASE_TROPICO2_EN_0_NAME='setup_tropico2_2.1.0.14.exe' ARCHIVE_BASE_TROPICO2_EN_0_MD5='59a41778988f4b0a45d144f29187ffd8' ARCHIVE_BASE_TROPICO2_EN_0_TYPE='innosetup' ARCHIVE_BASE_TROPICO2_EN_0_SIZE='1900000' ARCHIVE_BASE_TROPICO2_EN_0_VERSION='1.20-gog2.1.0.14' ARCHIVE_BASE_TROPICO2_EN_0_URL='https://www.gog.com/game/tropico_reloaded' ARCHIVE_BASE_TROPICO2_FR_0_NAME='setup_tropico2_french_2.1.0.14.exe' ARCHIVE_BASE_TROPICO2_FR_0_MD5='e9cb36d88a03fd65b7152c815f05a7cc' ARCHIVE_BASE_TROPICO2_FR_0_TYPE='innosetup' ARCHIVE_BASE_TROPICO2_FR_0_SIZE='1900000' ARCHIVE_BASE_TROPICO2_FR_0_VERSION='1.20-gog2.1.0.14' ARCHIVE_BASE_TROPICO2_FR_0_URL='https://www.gog.com/game/tropico_reloaded' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' *.asi *.dll *.exe *.ini' CONTENT_GAME_L10N_FILES=' maps data/soun.{} data/text.{} data2/*.cfg data2/*.lng data2/*.txt data2/x1.dap data2/x2.dap movies/*.txt movies/campaigntoexit.bik movies/desktooutside.bik movies/s_f2o.bik movies/s_m2o.bik movies/s_s2o.bik' CONTENT_GAME_DATA_FILES=' data data2 movies voices' CONTENT_DOC_L10N_FILES=' *.doc *.pdf *.rtf *.txt' USER_PERSISTENT_DIRECTORIES=' campaign games maps save' USER_PERSISTENT_FILES=' *.ini *.cfg *.dat' WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE_TROPICO1='tropico.exe' APP_MAIN_EXE_TROPICO2='tropico2.exe' # Packages PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_DATA_DESCRIPTION='data' ## Tropico 1 PKG_L10N_BASE_ID_TROPICO1="${GAME_ID_TROPICO1}-l10n" PKG_L10N_ID_TROPICO1_EN="${PKG_L10N_BASE_ID_TROPICO1}-en" PKG_L10N_ID_TROPICO1_FR="${PKG_L10N_BASE_ID_TROPICO1}-fr" PKG_L10N_PROVIDES_TROPICO1=" $PKG_L10N_BASE_ID_TROPICO1" PKG_L10N_DESCRIPTION_TROPICO1_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_TROPICO1_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_TROPICO1="${GAME_ID_TROPICO1}-data" ## Tropico 2 PKG_L10N_BASE_ID_TROPICO2="${GAME_ID_TROPICO2}-l10n" PKG_L10N_ID_TROPICO2_EN="${PKG_L10N_BASE_ID_TROPICO2}-en" PKG_L10N_ID_TROPICO2_FR="${PKG_L10N_BASE_ID_TROPICO2}-fr" PKG_L10N_PROVIDES_TROPICO2=" $PKG_L10N_BASE_ID_TROPICO2" PKG_L10N_DESCRIPTION_TROPICO2_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_TROPICO2_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_TROPICO2="${GAME_ID_TROPICO2}-data" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Run extra depencies check based on source archive ## Tropico 2 - Use software rendering by default. case "$(current_archive)" in ('ARCHIVE_BASE_TROPICO2_'*) REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} dos2unix" requirements_check ;; esac # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Tropico 1 - Disable censorship in French version. case "$(current_archive)" in ('ARCHIVE_BASE_TROPICO1_FR_'*) localization_file='data2/tropico.lng' sed_expression='s/^\( \+406 .\+militaire\) \(.\+\)/\1 \2/' ## Force standard locale to avoid choking on some characters. LANG=C sed --in-place --expression="$sed_expression" "$localization_file" ;; esac ## Tropico 2 - Use software rendering by default. case "$(current_archive)" in ('ARCHIVE_BASE_TROPICO2_'*) ini_file='tropico2.ini' ini_field='SoftwareDevice' ini_value='1' sed_expression="s/^${ini_field}=.*$/${ini_field}=${ini_value}/" unix2dos --quiet "$ini_file" sed --in-place --expression="$sed_expression" "$ini_file" dos2unix --quiet "$ini_file" ;; esac ## Tropico 2 - Fix a file name encoding, to prevent a crash when selecting this map. case "$(current_archive)" in ('ARCHIVE_BASE_TROPICO2_FR_'*) if [ -e 'maps/6-pičges en eaux troubles.{}' ]; then mv 'maps/6-pičges en eaux troubles.{}' 'maps/6-pièges en eaux troubles.{}' mv 'maps/6-pičges en eaux troubles.txt' 'maps/6-pièges en eaux troubles.txt' fi ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-tyranny-expansions.sh0000755000000000000000000005256614471751340016067 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=20241229.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='tyranny' GAME_NAME='Tyranny' EXPANSION_ID_COATOFARMS='coat-of-arms' EXPANSION_NAME_COATOFARMS='Coat of Arms' EXPANSION_ID_PORTRAIT='portrait-pack' EXPANSION_NAME_PORTRAIT='Portrait Pack' EXPANSION_ID_TALES='tales-from-the-tiers' EXPANSION_NAME_TALES='Tales from the Tiers' EXPANSION_ID_WOUND='bastards-wound' EXPANSION_NAME_WOUND='Bastardʼs Wound' # Archives ## Coat of Arms ARCHIVE_BASE_COATOFARMS_0_NAME='tyranny_coat_of_arms_dlc_en_1_0_14773.sh' ARCHIVE_BASE_COATOFARMS_0_MD5='ba1403ce1f2535a00ae137c19204459f' ARCHIVE_BASE_COATOFARMS_0_SIZE='1342' ARCHIVE_BASE_COATOFARMS_0_VERSION='1.0-gog14773' ARCHIVE_BASE_COATOFARMS_0_URL='https://www.gog.com/game/tyranny_overlord_edition_upgrade' ## Portrait Pack ARCHIVE_BASE_PORTRAIT_0_NAME='tyranny_portrait_pack_dlc_en_1_0_14773.sh' ARCHIVE_BASE_PORTRAIT_0_MD5='165e1cf02119a0b2ddb4d8bfa8b6819d' ARCHIVE_BASE_PORTRAIT_0_SIZE='4150' ARCHIVE_BASE_PORTRAIT_0_VERSION='1.0-gog14773' ARCHIVE_BASE_PORTRAIT_0_URL='https://www.gog.com/game/tyranny_portrait_pack' ## Tales from the Tiers ARCHIVE_BASE_TALES_0_NAME='tyranny_tales_from_the_tiers_dlc_en_1_2_1_0158_15398.sh' ARCHIVE_BASE_TALES_0_MD5='08676e535375b162e2fa32b1bc4488a3' ARCHIVE_BASE_TALES_0_SIZE='4386' ARCHIVE_BASE_TALES_0_VERSION='1.2.1.0158-gog15398' ARCHIVE_BASE_TALES_0_URL='https://www.gog.com/game/tyranny_tales_from_the_tiers' ## Bastard's Wound ARCHIVE_BASE_WOUND_0_NAME='tyranny_bastard_s_wound_dlc_en_1_2_1_0158_15398.sh' ARCHIVE_BASE_WOUND_0_MD5='dbd2b51a410db2357b2e144f44139c19' ARCHIVE_BASE_WOUND_0_SIZE='1159755' ARCHIVE_BASE_WOUND_0_VERSION='1.2.1.0158-gog15398' ARCHIVE_BASE_WOUND_0_URL='https://www.gog.com/game/tyranny_bastards_wound' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' Tyranny_Data' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Bastard's Wound - Delete duplicated files already provided by the base game case "$(current_archive)" in ('ARCHIVE_BASE_WOUND_'*) rm \ 'Tyranny_Data/bundles/st_vx1_ar_0901_bastardswound_ent_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0902_bastardswound_ent_02.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0903_bastardswound_central_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0904_bastardswound_farm_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0905_bastardswound_water_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0906_bastardswound_interior_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0907_bastardswound_interior_02.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0908_bastardswound_oldwall_int_01.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0909_bastardswound_oldwall_int_02.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0910_bastardswound_oldwall_int_03.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0911_southhaven.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_0912_burnedvillage.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1001_merchant_cart.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1002_wilderness_camp.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1003_torn_strand.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1004_wilderness_home.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1005_burned_home.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1006_military_fort.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1007_merchant_nocart.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1101_sentinel_stand_outskirts.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1102_edgering_ruins_revisit.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1103_workshop.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1201_berry_field.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1202_lantry_house.unity3d' \ 'Tyranny_Data/bundles/st_vx1_ar_1203_lantry_house_int.unity3d' \ 'Tyranny_Data/bundles/vx1_characters.unity3d' \ 'Tyranny_Data/bundles/vx1_items.unity3d' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_bs_unbroken_soldier.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_catorius.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_essa.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_krokus.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_krokus_patrol.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_merchant_contact.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_unbroken_captain.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_cv_verse.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_10_verse/vx1_10_msv_neratintro.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_11_barik/vx1_11_cv_barik.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_11_barik/vx1_11_cv_carelessspark.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_11_barik/vx1_11_cv_lohara.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_11_barik/vx1_11_cv_lycentia.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_11_barik/vx1_11_cv_zdenya.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_ambush.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_berriesfound.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_berrytrip_chiasmus.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_berrytrip_lexeme.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_berrytrip_nerat.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_berrytrip_roundtwo.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_chronicle_farm.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_chronicle_oldwalls_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_chronicle_oldwalls_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_chronicle_oldwalls_03.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_lantryact2complete.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_lantryact3start.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_lantrylexeme.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_lantryshatteredbastionchat.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_questsend.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_cv_stashedchronicle.conversation' \ 'Tyranny_Data/data/design/conversations/vx1_12_lantry/vx1_12_poi_lantryshouse.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_00_cv_act3_companion_interjection.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_burnedvillage_hordeargue.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_companion_interjections.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_denizens_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_denizens_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_farmhands.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_fatebinder_leaving.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_gatekeeper_beast01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_gatekeeper_beast02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_hyrax.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_intro_runningaway.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_lower_horde_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_lower_horde_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_lullaby_adds_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_lullaby_adds_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_lullaby_adds_03.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_mercenaries_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_mercenaries_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_partii_sleepless.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_refugee_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_refugee_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_sleepless.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_southhaven_playercaught.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_southhaven_villagers.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_upper_chanter.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_upper_fury.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_woundkin.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_bs_woundkin_cubs.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_argaen.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_basila.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_beast_gatekeeper.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_callia_stabbed.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_capteron.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_cassandra.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_contusion.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_crasscallia.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_cyril.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_ebstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_eisly.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_elyane.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_erasmus.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_execution_start.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_confrontation.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_decision.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_leader_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_leader_player.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_leader_reeftalon.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_final_leader_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_gloomofdawn.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_gwyneth.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_hyacine.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_hyrax.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_insipidmoniker.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_killsinshadow_mural_epiphany.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_kleitos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_lexeme.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_lohara.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_lullaby_fight_intro.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_lunet.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_melitta.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_mell.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_merchant_anaxios.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_merchant_eirena.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_merchant_elegy.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_merchant_neread.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_merchant_pelagia.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_needletoe.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_needletoe_fledreaction.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_nikodemus.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oceansfury.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_barrier.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_dead_woundkin.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_huntingparty_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_huntingparty_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mercenaries_jaspos.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mercenaries_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_fractured_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_fractured_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_fractured_03.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_hollow_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_hollow_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_mural_hollow_03.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_01.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_02.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_03.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_04.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_05.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_06.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_07.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_oldwalls_sleepless_08.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_phoibe.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_ragwort.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_ratvek_the_butcher.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_reeftalon.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_reeftalon_firstmeeting.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_rostomlenk.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_sirin_cairnaltar.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_sirin_foundparchment.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_sirin_haseverything.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_sirin_librarian.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_skinner.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_telesophia.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_tonves.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_tycho.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_ulantis.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_wagstaff.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_cv_warbler.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_msv_lexemeintromissive.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_beaconpuzzlecomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_bloodfarmcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_farmcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_friendlylullabycomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_huntingpartycomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_lullabybattlecomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_muralcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_oldwallsfloodingcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_sirin_entrance.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_sirin_shatteredbastion.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_sleeplesscomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_teleporterintocomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_wardens_key.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_wardens_key_used.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundbeastdencomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundcentralcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundfirstarrival.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundjasposcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundslaughtercomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundslaughterkeystone.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_poi_woundwagstaffcomments.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_tree_contusion.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_tree_needletoe.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_09_tree_ragwort.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_bs_burnedvillage_hordeargue.conversation' \ 'Tyranny_Data/data/design/conversations/vx1/vx1_debug_cv_testiclees.conversation' \ 'Tyranny_Data/data/design/quests/vx1_10_verse/vx1_10_qst_verse_act2.quest' \ 'Tyranny_Data/data/design/quests/vx1_10_verse/vx1_10_qst_verse_act3.quest' \ 'Tyranny_Data/data/design/quests/vx1_11_barik/vx1_11_qst_barik_act2.quest' \ 'Tyranny_Data/data/design/quests/vx1_11_barik/vx1_11_qst_barik_act3.quest' \ 'Tyranny_Data/data/design/quests/vx1_12_lantry/vx1_12_qst_lantry_act2.quest' \ 'Tyranny_Data/data/design/quests/vx1_12_lantry/vx1_12_qst_lantry_act3.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_bloodofthebeast.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_bonesofthebeast.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_cleansingthewound.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_fatebindersjudgement.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_gamblersruin.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_hiddentruths.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_historyoftheoldwallspartii.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_historyoftheoldwallsparti.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_knappingonthejob.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_midnightwanderer.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_theoneswhogotaway.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_tidetogether.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_waterintoxication.quest' \ 'Tyranny_Data/data/design/quests/vx1/vx1_qst_whatliesbeyond.quest' ;; esac ) # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-tyranny.sh0000755000000000000000000000523114471751340013665 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Tyranny ### script_version=20241229.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='tyranny' GAME_NAME='Tyranny' ARCHIVE_BASE_0_NAME='tyranny_v1_2_1_160_v2_25169.sh' ARCHIVE_BASE_0_MD5='72bdb7c9f6966ac6f1ccfbbad9fb29e6' ARCHIVE_BASE_0_SIZE='15136872' ARCHIVE_BASE_0_VERSION='1.2.1.0160-gog25169' ARCHIVE_BASE_0_URL='https://www.gog.com/game/tyranny_commander_edition' ARCHIVE_BASE_1_NAME='tyranny_en_1_2_1_0158_15398.sh' ARCHIVE_BASE_1_MD5='664cba00a861611fb155f65b8d83d9e9' ARCHIVE_BASE_1_SIZE='15000000' ARCHIVE_BASE_1_VERSION='1.2.1.0158-gog15398' UNITY3D_NAME='Tyranny' UNITY3D_PLUGINS=' libpops_api.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_AREAS_FILES=" ${UNITY3D_NAME}_Data/bundles/st_ar_*" PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_AREAS PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 libresolv.so.2 librt.so.1 libstdc++.so.6 libuuid.so.1 libX11.so.6 libXcursor.so.1 libXrandr.so.2 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_AREAS' PKG_AREAS_ID="${GAME_ID}-areas" PKG_AREAS_DESCRIPTION='areas' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-unavowed.sh0000755000000000000000000000675714471751340014027 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Unavowed ### script_version=20241209.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='unavowed' GAME_NAME='Unavowed' ARCHIVE_BASE_9_NAME='unavowed_2_2_78264.sh' ARCHIVE_BASE_9_MD5='6a60648441f57342e92a6bb0a4dc462a' ARCHIVE_BASE_9_SIZE='2310225' ARCHIVE_BASE_9_VERSION='2.2-gog78264' ARCHIVE_BASE_9_URL='https://www.gog.com/game/unavowed' ARCHIVE_BASE_8_NAME='unavowed_2_1_75524.sh' ARCHIVE_BASE_8_MD5='07926f2dd86460eae439d2d16f87e76d' ARCHIVE_BASE_8_SIZE='2310225' ARCHIVE_BASE_8_VERSION='2.1-gog75524' ARCHIVE_BASE_7_NAME='unavowed_2_0_2_70667.sh' ARCHIVE_BASE_7_MD5='00c9f35c3e3e506f8238de49c8ac781a' ARCHIVE_BASE_7_SIZE='2310224' ARCHIVE_BASE_7_VERSION='2.0.2-gog70667' ARCHIVE_BASE_6_NAME='unavowed_2_0_2_70012.sh' ARCHIVE_BASE_6_MD5='a9cfabc33e91f0d7b7649e302966b591' ARCHIVE_BASE_6_SIZE='2310224' ARCHIVE_BASE_6_VERSION='2.0.2-gog70012' ARCHIVE_BASE_5_NAME='unavowed_2_0_1_66601.sh' ARCHIVE_BASE_5_MD5='bacc5d7cf9da4970da580c7ee43e1a2e' ARCHIVE_BASE_5_SIZE='2400000' ARCHIVE_BASE_5_VERSION='2.0.1-gog66601' ARCHIVE_BASE_4_NAME='unavowed_2_0_66472.sh' ARCHIVE_BASE_4_MD5='771d43bf86a85da9a70d02da80a6eb01' ARCHIVE_BASE_4_SIZE='2400000' ARCHIVE_BASE_4_VERSION='2.0-gog66472' ARCHIVE_BASE_3_NAME='unavowed_1_5_64507.sh' ARCHIVE_BASE_3_MD5='0029204a1edc703c2fc90bcc2741c442' ARCHIVE_BASE_3_SIZE='2500000' ARCHIVE_BASE_3_VERSION='1.5-gog64507' ARCHIVE_BASE_2_NAME='unavowed_1_4_57370.sh' ARCHIVE_BASE_2_MD5='c785b049e60d60e45296acda30bd9aa2' ARCHIVE_BASE_2_SIZE='2500000' ARCHIVE_BASE_2_VERSION='1.4-gog57370' ARCHIVE_BASE_1_NAME='unavowed_1_32_55233.sh' ARCHIVE_BASE_1_MD5='6d92c60a1a3406f619b4fb4c204adecc' ARCHIVE_BASE_1_SIZE='2500000' ARCHIVE_BASE_1_VERSION='1.3.2-gog55233' ARCHIVE_BASE_0_NAME='unavowed_1_31_54237.sh' ARCHIVE_BASE_0_MD5='f0060c808571a4324714c69f653a4caa' ARCHIVE_BASE_0_SIZE='2500000' ARCHIVE_BASE_0_VERSION='1.3.1-gog54237' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='unavowed_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='359eae49cc167a34a1cc5525cf6ab340' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/unavowed/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 24x24 32x32 48x48 256x256' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' ENGV.tmp Music Sounds *.ags *.cfg *.exe *.ogv *.tra *.vox' CONTENT_DOC_MAIN_FILES=' licenses' APP_MAIN_SCUMMID='ags:unavowed' APP_MAIN_ICON='../support/icon.png' APP_MAIN_ICON_3='Unavowed.exe' APP_MAIN_ICON_2='Unavowed.exe' APP_MAIN_ICON_1='Unavowed.exe' APP_MAIN_ICON_0='Unavowed.exe' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-unreal-tournament-2004.sh0000755000000000000000000001023514471751340016224 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Unreal Tournament 2004 ### script_version=20250104.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' 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' ## Do not convert file paths to lowercase ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' 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='__support/app' CONTENT_GAME0_BIN_FILES=' *.ini' CONTENT_GAME_DATA_FILES=' Animations ForceFeedback KarmaData Maps Music Sounds Speech StaticMeshes Textures Web' CONTENT_DOC0_DATA_RELATIVE_PATH='Help' CONTENT_DOC0_DATA_FILES=' *.txt' CONTENT_DOC1_DATA_RELATIVE_PATH='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' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL-1.2.so.0 libstdc++.so.5' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Chek for the presence of the required game engine archive_initialize_required \ 'ARCHIVE_ENGINE' \ 'ARCHIVE_REQUIRED_ENGINE_0' # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Include required CD key grep --before=1 --fixed-strings 'CDKey' 'goggame-1207658691.script' | sed --silent 's/\s*"valueData": "\(.*\)",/\1/p' > 'System/CDKey' ) archive_extraction 'ARCHIVE_ENGINE' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_ENGINE_BIN')" ## Delete unwanted 32-bit binaries rm --force \ 'System/ucc-bin' \ 'System/ut2004-bin' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Create required links for some libraries path_libraries_source=$(path_libraries_system) path_libraries_destination="$(package_path 'PKG_BIN')$(path_game_data)/System" ln --symbolic "${path_libraries_source}/libSDL-1.2.so.0" "${path_libraries_destination}/libSDL-1.2.so.0" ln --symbolic "${path_libraries_source}/libopenal.so.1" "${path_libraries_destination}/openal.so" # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd System ./ut2004-bin-linux-amd64 "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-unreal-tournament.sh0000755000000000000000000001133414471751340015642 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=20250104.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='unreal-tournament' GAME_NAME='Unreal Tournament' # Archives ## Unreal Tournament (game installer) ## This game is no longer available for sale from gog.com since 2022-12-23. ARCHIVE_BASE_0_NAME='setup_ut_goty_2.0.0.5.exe' ARCHIVE_BASE_0_MD5='0d25ec835648710a098aff7106187f38' ## Do not convert file paths to lowercase ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_SIZE='640000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.5' ## Native Linux engine ARCHIVE_REQUIRED_ENGINE_1_NAME='OldUnreal-UTPatch469d-Linux-amd64.tar.bz2' ARCHIVE_REQUIRED_ENGINE_1_MD5='d0e133165bf1630288583e52a40b90db' ARCHIVE_REQUIRED_ENGINE_1_URL='https://github.com/OldUnreal/UnrealTournamentPatches/releases/tag/v469d' ARCHIVE_REQUIRED_ENGINE_0_NAME='OldUnreal-UTPatch469c-Linux-amd64.tar.bz2' ARCHIVE_REQUIRED_ENGINE_0_MD5='6cd032e70460b1393d9514ffe81dcb1a' ARCHIVE_REQUIRED_ENGINE_0_URL='https://github.com/OldUnreal/UnrealTournamentPatches/releases/tag/v469c' # Archives content ## Unreal Tournament (game installer) CONTENT_PATH_DEFAULT='app' CONTENT_GAME_DATA_FILES=' Maps Music Sounds Textures' CONTENT_DOC_DATA_FILES=' Help Manual' ## Native Linux engine CONTENT_PATH_DEFAULT_ENGINE='.' CONTENT_LIBS_BIN_PATH="${CONTENT_PATH_DEFAULT_ENGINE}/System64" CONTENT_LIBS_BIN_FILES=' ALAudio.so Cluster.so Core.so Editor.so Engine.so Fire.so IpDrv.so libfmod.so.13 OpenGLDrv.so Render.so SDLDrv.so udemo.so UWeb.so XOpenGLDrv.so' CONTENT_GAME_BIN_PATH="$CONTENT_PATH_DEFAULT_ENGINE" CONTENT_GAME_BIN_FILES=' System System64' CONTENT_GAME0_DATA_PATH="$CONTENT_PATH_DEFAULT_ENGINE" CONTENT_GAME0_DATA_FILES=' SystemLocalized Textures Web' CONTENT_DOC0_DATA_PATH="$CONTENT_PATH_DEFAULT_ENGINE" CONTENT_DOC0_DATA_FILES=' Help LICENSE.md' APP_MAIN_EXE='System64/ut-bin-amd64' APP_MAIN_ICON='System/Unreal.ico' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 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' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Chek for the presence of the required game engine 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}" # Extract game data archive_extraction_default archive_extraction 'ARCHIVE_ENGINE' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_BIN')" # Drop some shipped libraries rm \ 'System64/libmpg123.so' \ 'System64/libopenal.so.1' \ 'System64/libSDL2-2.0.so.0' \ 'System64/libxmp.so.4' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## 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_destination="$(package_path 'PKG_BIN')$(path_libraries)/libmpg123.so" mkdir --parents "$(dirname "$library_destination")" ln --symbolic "$(path_libraries_system)/libmpg123.so.0" "$library_destination" ;; esac # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd System64 ./ut-bin-amd64 "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-vampire-the-masquerade-bloodlines.sh0000755000000000000000000003342514471751340020665 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=20250223.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='vampire-the-masquerade-bloodlines' GAME_NAME='Vampire: The Masquerade - Bloodlines' ## The DotEmu store closed down in 2017, since then they only advertise Steam. ARCHIVE_BASE_DOTEMU_0_NAME='vampire_the_masquerade_bloodlines_v1.2.exe' ARCHIVE_BASE_DOTEMU_0_MD5='8981da5fa644475583b2888a67fdd741' ARCHIVE_BASE_DOTEMU_0_EXTRACTOR='unar' ARCHIVE_BASE_DOTEMU_0_SIZE='5013863' ARCHIVE_BASE_DOTEMU_0_VERSION='1.2-dotemu1' ARCHIVE_BASE_GOG_EN_6_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.511.410.2)_(68368).exe' ARCHIVE_BASE_GOG_EN_6_MD5='553f6bdbd8b23fa143da22d9ea47a20b' ARCHIVE_BASE_GOG_EN_6_TYPE='innosetup' ARCHIVE_BASE_GOG_EN_6_PART1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.511.410.2)_(68368)-1.bin' ARCHIVE_BASE_GOG_EN_6_PART1_MD5='f0ca81565507da32075e6334a96a173f' ARCHIVE_BASE_GOG_EN_6_SIZE='4152647' ARCHIVE_BASE_GOG_EN_6_VERSION='1.2-gog68368' ARCHIVE_BASE_GOG_EN_6_URL='https://www.gog.com/game/vampire_the_masquerade_bloodlines' ARCHIVE_BASE_GOG_FR_6_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.511.410.2)_(french)_(68368).exe' ARCHIVE_BASE_GOG_FR_6_MD5='5bb92c9507ef442ec95dade41f940c48' ARCHIVE_BASE_GOG_FR_6_TYPE='innosetup' ARCHIVE_BASE_GOG_FR_6_PART1_NAME='setup_vampire_the_masquerade_-_bloodlines_1.2_(up_11.511.410.2)_(french)_(68368)-1.bin' ARCHIVE_BASE_GOG_FR_6_PART1_MD5='c003bb4e2973fb7487bef0b50ed46c6a' ARCHIVE_BASE_GOG_FR_6_SIZE='4184265' ARCHIVE_BASE_GOG_FR_6_VERSION='1.2-gog68368' ARCHIVE_BASE_GOG_FR_6_URL='https://www.gog.com/game/vampire_the_masquerade_bloodlines' 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_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_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 loader.exe vampire.exe vampire.exe.12 dbghelp.dll loader.dll' ## These paths are created at the "Extract game data" step. CONTENT_GAME_L10N_EN_PATH_DOTEMU='l10n-en' CONTENT_GAME_L10N_FR_PATH_DOTEMU='l10n-fr' CONTENT_GAME_L10N_FILES=' vampire/pack101.vpk vampire/pack103.vpk' CONTENT_GAME_L10N_EN_FILES="$CONTENT_GAME_L10N_FILES" CONTENT_GAME_L10N_FR_FILES="$CONTENT_GAME_L10N_FILES" CONTENT_GAME_DATA_FILES=' vampire/maps vampire/media vampire/pack000.vpk vampire/pack001.vpk vampire/pack002.vpk vampire/pack003.vpk vampire/pack004.vpk vampire/pack005.vpk vampire/pack006.vpk vampire/pack007.vpk vampire/pack008.vpk vampire/pack009.vpk vampire/pack010.vpk vampire/pack100.vpk vampire/pack102.vpk vampire/python vampire/resource vampire/sound vtmbup-loader.txt vtmbup-readme.txt *.dat *.mpg *.tth' ## These paths are created at the "Extract game data" step. CONTENT_DOC_L10N_EN_PATH_DOTEMU='l10n-en' CONTENT_DOC_L10N_FR_PATH_DOTEMU='l10n-fr' CONTENT_DOC_L10N_FILES=' docs *.pdf' CONTENT_DOC_L10N_EN_FILES="$CONTENT_DOC_L10N_FILES" CONTENT_DOC_L10N_FR_FILES="$CONTENT_DOC_L10N_FILES" USER_PERSISTENT_DIRECTORIES=' vampire/cfg vampire/maps/graphs vampire/python vampire/save' USER_PERSISTENT_FILES=' vampire/vidcfg.bin' WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE_DOTEMU='vampire.exe' ## Using vampire.exe directly with the GOG build leads to lingering processes ## cf. https://bugs.winehq.org/show_bug.cgi?id=56713 ## Vampire: The Masquerade - Bloodlines Vampire.exe process keeps lingering APP_MAIN_EXE_GOG='loader.exe' APP_MAIN_ICON='vampire.exe' ## Work around the deletion of zlib1.dll ## TODO: Check if it is still required with current WINE APP_MAIN_PRERUN=' # Work around the deletion of zlib1.dll system_library="${WINEPREFIX}/drive_c/windows/system32/zlib1.dll" if [ ! -e "$system_library" ]; then cp "bin/zlib1.dll" "$system_library" fi ' ## Switch French keyboard layout to us-azerty to provide direct access to digits. ## TODO: Update this snippet to make it work on Wayland too. APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # Switch French keyboard layout to us-azerty to provide direct access to digits. # This is required to not get stuck when asked to type digits in-game. ## This works on X.org only, not on Wayland. if [ -z "${WAYLAND_DISPLAY:-}" ] && [ -n "${DISPLAY:-}" ] && command -v setxkbmap >/dev/null 2>&1; then KEYBOARD_RESTORE_VARIANT=0 KEYBOARD_LAYOUT=$(LANG=C setxkbmap -query | awk "/layout:/ {print \$2}") if [ "$KEYBOARD_LAYOUT" = "fr" ]; then KEYBOARD_VARIANT=$(LANG=C setxkbmap -query | awk "/variant:/ {print \$2}") if [ "$KEYBOARD_VARIANT" != "us-azerty" ]; then KEYBOARD_RESTORE_VARIANT=1 setxkbmap -variant us-azerty fi fi fi ' APP_MAIN_POSTRUN=' # Restore the keyboard variant, if it has previously been switched to us-azerty. ## This works on X.org only, not on Wayland. if [ -z "${WAYLAND_DISPLAY:-}" ] && [ -n "${DISPLAY:-}" ] && command -v setxkbmap >/dev/null 2>&1; then if [ $KEYBOARD_RESTORE_VARIANT -eq 1 ]; then setxkbmap -variant "$KEYBOARD_VARIANT" fi fi ' PACKAGES_LIST_DOTEMU=' PKG_BIN PKG_L10N_EN PKG_L10N_FR PKG_DATA' PACKAGES_LIST_GOG_EN=' PKG_BIN PKG_L10N_EN PKG_DATA' PACKAGES_LIST_GOG_FR=' PKG_BIN PKG_L10N_FR PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_EN_ID="${PKG_L10N_BASE_ID}-en" PKG_L10N_FR_ID="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_EN_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_FR_PROVIDES="$PKG_L10N_PROVIDES" PKG_L10N_EN_ENSCRIPTION='English localization' PKG_L10N_FR_FRSCRIPTION='French localization' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # DotEmu archive - unzip is required to extract the content of inner archives case "$(current_archive)" in ('ARCHIVE_BASE_DOTEMU_'*) REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} unzip" requirements_check ;; 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' ## Silence a ShellCheck false positive, word splitting is expected here ## SC2086 (info): Double quote to prevent globbing and word splitting. # shellcheck disable=SC2086 cp --link --parents --recursive $localized_paths_en 'l10n-en' ## Silence a ShellCheck false positive, word splitting is expected here ## SC2086 (info): Double quote to prevent globbing and word splitting. # shellcheck disable=SC2086 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' ## Silence a ShellCheck false positive, word splitting is expected here ## SC2086 (info): Double quote to prevent globbing and word splitting. # shellcheck disable=SC2086 cp --link --parents --recursive $localized_paths_fr 'l10n-fr' ## Silence a ShellCheck false positive, word splitting is expected here ## SC2086 (info): Double quote to prevent globbing and word splitting. # shellcheck disable=SC2086 rm --recursive $localized_paths tolower . ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation case "$(current_archive)" in ('ARCHIVE_BASE_DOTEMU_'*) case "$(messages_language)" in ('fr') lang_string='version %s :' lang_en='anglaise' lang_fr='française' ;; ('en'|*) lang_string='%s version:' lang_en='English' lang_fr='French' ;; esac printf '\n' printf "$lang_string" "$lang_en" print_instructions 'PKG_BIN' 'PKG_L10N_EN' 'PKG_DATA' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN' 'PKG_L10N_FR' 'PKG_DATA' ;; (*) print_instructions ;; esac # Clean up working_directory_cleanup exit 0 games/play-vampire-the-masquerade-stories-of-new-york-series.sh0000755000000000000000000001024114471751340023655 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Vampire: the Masquerade - Stories of New York series: # - Vampire: the Masquerade - Coteries of New York # - Vampire: The Masquerade - Shadows of New York ### script_version=20250103.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_COTERIES='vampire-the-masquerade-coteries-of-new-york' GAME_NAME_COTERIES='Vampire: The Masquerade - Coteries of New York' GAME_ID_SHADOWS='vampire-the-masquerade-shadows-of-new-york' GAME_NAME_SHADOWS='Vampire: The Masquerade - Shadows of New York' ARCHIVE_BASE_COTERIES_2_NAME='vampire_the_masquerade_coteries_of_new_york_1_0_12_52098.sh' ARCHIVE_BASE_COTERIES_2_MD5='035735d7a7717c4c31cce156511ec8b0' ARCHIVE_BASE_COTERIES_2_SIZE='3300000' ARCHIVE_BASE_COTERIES_2_VERSION='1.0.12-gog52098' ARCHIVE_BASE_COTERIES_2_URL='https://www.gog.com/game/vampire_the_masquerade_coteries_of_new_york' ARCHIVE_BASE_COTERIES_1_NAME='vampire_the_masquerade_coteries_of_new_york_1_0_9_45543.sh' ARCHIVE_BASE_COTERIES_1_MD5='6310c15fabd1768d00faa57f83f2de5e' ARCHIVE_BASE_COTERIES_1_SIZE='3300000' ARCHIVE_BASE_COTERIES_1_VERSION='1.0.9-gog45543' ARCHIVE_BASE_COTERIES_0_NAME='vampire_the_masquerade_coteries_of_new_york_1_0_7_40980.sh' ARCHIVE_BASE_COTERIES_0_MD5='146113ea6b7295104413d8ce2b1fbf4e' ARCHIVE_BASE_COTERIES_0_SIZE='3200000' ARCHIVE_BASE_COTERIES_0_VERSION='1.0.7-gog40980' ARCHIVE_BASE_SHADOWS_1_NAME='vampire_the_masquerade_shadows_of_new_york_1_0_1_51032.sh' ARCHIVE_BASE_SHADOWS_1_MD5='0ec3a59f889b30e7d632f65dcdf0ac6b' ARCHIVE_BASE_SHADOWS_1_SIZE='3319144' ARCHIVE_BASE_SHADOWS_1_VERSION='1.0.1-gog51032' ARCHIVE_BASE_SHADOWS_1_URL='https://www.gog.com/game/vampire_the_masquerade_shadows_of_new_york' ARCHIVE_BASE_SHADOWS_0_NAME='vampire_the_masquerade_shadows_of_new_york_1_0_0_41075.sh' ARCHIVE_BASE_SHADOWS_0_MD5='e7880d6e417f81f47b079c9cdc4fb907' ARCHIVE_BASE_SHADOWS_0_SIZE='3300000' ARCHIVE_BASE_SHADOWS_0_VERSION='1.0.0-gog41075' UNITY3D_NAME_COTERIES='VtM Coteries of New York' UNITY3D_NAME_SHADOWS='Vampire the Masquerade - Shadows of New York' UNITY3D_PLUGINS=' libfmod.so libfmodstudio.so' CONTENT_PATH_DEFAULT='data/noarch/game' ## Default to windowed mode on first launch APP_MAIN_PRERUN_COTERIES=' # Default to windowed mode on first launch config_file="${XDG_CONFIG_HOME:="$HOME/.config"}/unity3d/DrawDistance/VtM Coteries of New York/Saves/Settings.save" if [ ! -e "$config_file" ]; then mkdir --parents "$(dirname "$config_file")" cat > "$config_file" <<- EOF {"FullScreenMode":false} EOF fi ' APP_MAIN_PRERUN_SHADOWS=' # Default to windowed mode on first launch config_file="${XDG_CONFIG_HOME:="$HOME/.config"}/unity3d/DrawDistance/VtM Shadows of New York/Saves/Settings.save" if [ ! -e "$config_file" ]; then mkdir --parents "$(dirname "$config_file")" cat > "$config_file" <<- EOF {"FullScreenMode":false} EOF fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID_COTERIES="${GAME_ID_COTERIES}-data" PKG_DATA_ID_SHADOWS="${GAME_ID_SHADOWS}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-victor-vran-expansions.sh0000755000000000000000000000434514471751340016625 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=20241229.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='victor-vran' GAME_NAME='Victor Vran' EXPANSION_ID_MOTORHEAD='motorhead-through-the-ages' EXPANSION_NAME_MOTORHEAD='Motörhead - Through the Ages' EXPANSION_ID_FRACTURED='fractured-worlds' EXPANSION_NAME_FRACTURED='Fractured Worlds' # Archives ## Motörhead - Through the Ages ARCHIVE_BASE_MOTORHEAD_0_NAME='victor_vran_mot_rhead_through_the_ages_2_07_20181005_24296.sh' ARCHIVE_BASE_MOTORHEAD_0_MD5='e84685034d2d90782a3ab7c83901bc11' ARCHIVE_BASE_MOTORHEAD_0_SIZE='868392' ARCHIVE_BASE_MOTORHEAD_0_VERSION='2.07.20181005-gog24296' ARCHIVE_BASE_MOTORHEAD_0_URL='https://www.gog.com/game/victor_vran_motorhead_through_the_ages' ## Fractured Worlds ARCHIVE_BASE_FRACTURED_0_NAME='victor_vran_fractured_worlds_2_07_20181005_24296.sh' ARCHIVE_BASE_FRACTURED_0_MD5='94a8bd9f2ca09e3c4e2547a0d5a7bc8c' ARCHIVE_BASE_FRACTURED_0_SIZE='213785' ARCHIVE_BASE_FRACTURED_0_VERSION='2.07.20181005-gog24296' ARCHIVE_BASE_FRACTURED_0_URL='https://www.gog.com/game/victor_vran_fractured_worlds' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' DLC' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-victor-vran.sh0000755000000000000000000000726214471751340014441 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=20241229.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='victor-vran' GAME_NAME='Victor Vran' ARCHIVE_BASE_0_NAME='victor_vran_2_07_20181005_24296.sh' ARCHIVE_BASE_0_MD5='506f55f5521131e7ab69b656a3e55582' ARCHIVE_BASE_0_SIZE='4721209' ARCHIVE_BASE_0_VERSION='2.07.20181005-gog24296' ARCHIVE_BASE_0_URL='https://www.gog.com/game/victor_vran' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' VictorVranGOG' CONTENT_GAME_DATA_FILES=' DLC Local Movies Packs' APP_MAIN_EXE='VictorVranGOG' APP_MAIN_ICON='../support/icon.png' ## Work around a failure to launch due to not parsing the correct SSL configuration APP_MAIN_PRERUN=' # Work around a failure to launch due to not parsing the correct SSL configuration export OPENSSL_CONF=/etc/ssl ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl-gnutls.so.4 libdl.so.2 libgcc_s.so.1 libgpg-error.so.0 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXrender.so.1 libXt.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PRELOAD_HACKS_LIST=' HACK_NOATIME' ## LD_PRELOAD shim working around the engine expectation that files are owned by the current user HACK_NOATIME_NAME='vv_noatime' HACK_NOATIME_DESCRIPTION='LD_PRELOAD shim working around the engine expectation that files are owned by the current user' HACK_NOATIME_PACKAGE='PKG_BIN' HACK_NOATIME_SOURCE=' #define _GNU_SOURCE #include #include #include #include #include #include typedef int (*orig_open_f_type)(const char *pathname, int flags, mode_t mode); int open(const char *pathname, int flags, ...) { va_list valist; mode_t mode; static orig_open_f_type orig_open = NULL; if (orig_open == NULL) orig_open = (orig_open_f_type)dlsym(RTLD_NEXT, "open"); flags &= ~O_NOATIME; if (flags & (O_CREAT | O_TMPFILE)) { va_start(valist, flags); mode = va_arg(valist, mode_t); va_end(valist); } return orig_open(pathname, flags, mode); } ' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Build and include the LD_PRELOAD shims hacks_inclusion_default # Include shipped libgcrypt.so.11 on Debian # Use the system-provided libraries on Arch Linux and Gentoo case "$(option_value 'package')" in ('deb') CONTENT_LIBS_BIN_PATH="$(content_path_default)/i386/lib/i386-linux-gnu" CONTENT_LIBS_BIN_FILES=' libgcrypt.so.11 libgcrypt.so.11.7.0' ;; (*) PKG_BIN_DEPENDENCIES_LIBRARIES="$(dependencies_list_native_libraries 'PKG_BIN') libgcrypt.so.11" ;; esac # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-war-for-the-overworld-expansions-themes.sh0000755000000000000000000002036614471751340022013 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # War for the Overworld themes: # - The Cynical Imp # - Founders Theme # - Kickstarter Theme # - Underlord Edition # - Seasonal Worker Skins ### script_version=20250103.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='war-for-the-overworld' GAME_NAME='War for the Overworld' EXPANSION_ID_UNDERLORD='underlord-edition' EXPANSION_NAME_UNDERLORD='Underlord Edition' EXPANSION_ID_FOUNDERS='founders-theme' EXPANSION_NAME_FOUNDERS='Founders Theme' EXPANSION_ID_KICKSTARTER='kickstarter-theme' EXPANSION_NAME_KICKSTARTER='Kickstarter Theme' EXPANSION_ID_CYNICAL='the-cynical-imp' EXPANSION_NAME_CYNICAL='The Cynical Imp' EXPANSION_ID_SEASONALWORKER='seasonal-worker-skins' EXPANSION_NAME_SEASONALWORKER='Seasonal Worker Skins' # Archives ## Underlord Edition ARCHIVE_BASE_UNDERLORD_8_NAME='war_for_the_overworld_underlord_edition_upgrade_v2_1_2_76431.sh' ARCHIVE_BASE_UNDERLORD_8_MD5='c214676919d7475a5dc2558ab8481b2e' ARCHIVE_BASE_UNDERLORD_8_SIZE='1048' ARCHIVE_BASE_UNDERLORD_8_VERSION='2.1.2-gog76431' ARCHIVE_BASE_UNDERLORD_8_URL='https://www.gog.com/game/war_for_the_overworld_underlord_edition_upgrade' ARCHIVE_BASE_UNDERLORD_7_NAME='war_for_the_overworld_underlord_edition_upgrade_v2_1_1_73576.sh' ARCHIVE_BASE_UNDERLORD_7_MD5='066e110e2b85ffca512ce8c8d3d67ca3' ARCHIVE_BASE_UNDERLORD_7_SIZE='1048' ARCHIVE_BASE_UNDERLORD_7_VERSION='2.1.1-gog73576' ARCHIVE_BASE_UNDERLORD_6_NAME='war_for_the_overworld_underlord_edition_upgrade_v2_1_0f4_55096.sh' ARCHIVE_BASE_UNDERLORD_6_MD5='b2b81108728fe2bbadd51c7897f9269c' ARCHIVE_BASE_UNDERLORD_6_SIZE='1400' ARCHIVE_BASE_UNDERLORD_6_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_UNDERLORD_5_NAME='war_for_the_overworld_underlord_edition_upgrade_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_UNDERLORD_5_MD5='7cd85994986cf75f9fd81d4be0df82fe' ARCHIVE_BASE_UNDERLORD_5_SIZE='1300' ARCHIVE_BASE_UNDERLORD_5_VERSION='2.0.7f1-gog36563' ARCHIVE_BASE_UNDERLORD_4_NAME='war_for_the_overworld_underlord_edition_upgrade_2_0_7f1_30014.sh' ARCHIVE_BASE_UNDERLORD_4_MD5='9d67c88dd331703315e9056dc6abb78c' ARCHIVE_BASE_UNDERLORD_4_SIZE='1300' ARCHIVE_BASE_UNDERLORD_4_VERSION='2.0.6f1-gog30014' ARCHIVE_BASE_UNDERLORD_3_NAME='war_for_the_overworld_underlord_edition_upgrade_2_0_6f1_24637.sh' ARCHIVE_BASE_UNDERLORD_3_MD5='0be12c1160fdba4f180dc3776f1bb21e' ARCHIVE_BASE_UNDERLORD_3_SIZE='1300' ARCHIVE_BASE_UNDERLORD_3_VERSION='2.0.6f1-gog24637' ARCHIVE_BASE_UNDERLORD_2_NAME='war_for_the_overworld_underlord_edition_upgrade_2_0_5_24177.sh' ARCHIVE_BASE_UNDERLORD_2_MD5='97857939a158c470d04936bc580838c2' ARCHIVE_BASE_UNDERLORD_2_SIZE='1300' ARCHIVE_BASE_UNDERLORD_2_VERSION='2.0.5-gog24177' ## Founders Theme ARCHIVE_BASE_FOUNDERS_3_NAME='war_for_the_overworld_founders_theme_charity_v2_1_2_76431.sh' ARCHIVE_BASE_FOUNDERS_3_MD5='5d3a4a047ff40d4d6aede45bc92241a5' ARCHIVE_BASE_FOUNDERS_3_SIZE='1048' ARCHIVE_BASE_FOUNDERS_3_VERSION='2.1.2-gog76431' ARCHIVE_BASE_FOUNDERS_3_URL='http://buy.wftogame.com/charity/' ARCHIVE_BASE_FOUNDERS_2_NAME='war_for_the_overworld_founders_theme_charity_v2_1_1_73576.sh' ARCHIVE_BASE_FOUNDERS_2_MD5='1b12880acd1ddbd352ff8321e6c0b6c8' ARCHIVE_BASE_FOUNDERS_2_SIZE='1048' ARCHIVE_BASE_FOUNDERS_2_VERSION='2.1.1-gog73576' ARCHIVE_BASE_FOUNDERS_1_NAME='war_for_the_overworld_founders_theme_charity_v2_1_0f4_55096.sh' ARCHIVE_BASE_FOUNDERS_1_MD5='0313b90d995d5f527feea040995677f7' ARCHIVE_BASE_FOUNDERS_1_SIZE='1400' ARCHIVE_BASE_FOUNDERS_1_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_FOUNDERS_0_NAME='war_for_the_overworld_founders_theme_charity_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_FOUNDERS_0_MD5='a8fec55ffb2c9eda265f7f346c8998e6' ARCHIVE_BASE_FOUNDERS_0_SIZE='1300' ARCHIVE_BASE_FOUNDERS_0_VERSION='2.0.7f1-gog36563' ## Kickstarter Theme ARCHIVE_BASE_KICKSTARTER_3_NAME='war_for_the_overworld_kickstarter_theme_charity_v2_1_2_76431.sh' ARCHIVE_BASE_KICKSTARTER_3_MD5='e5f937fe8b8b2b323d06e7b77c579d45' ARCHIVE_BASE_KICKSTARTER_3_SIZE='1048' ARCHIVE_BASE_KICKSTARTER_3_VERSION='2.1.2-gog76431' ARCHIVE_BASE_KICKSTARTER_3_URL='http://buy.wftogame.com/charity/' ARCHIVE_BASE_KICKSTARTER_2_NAME='war_for_the_overworld_kickstarter_theme_charity_v2_1_1_73576.sh' ARCHIVE_BASE_KICKSTARTER_2_MD5='d63028e7708e7bbf167d4ea44db42ab6' ARCHIVE_BASE_KICKSTARTER_2_SIZE='1048' ARCHIVE_BASE_KICKSTARTER_2_VERSION='2.1.1-gog73576' ARCHIVE_BASE_KICKSTARTER_1_NAME='war_for_the_overworld_kickstarter_theme_charity_v2_1_0f4_55096.sh' ARCHIVE_BASE_KICKSTARTER_1_MD5='194826ab3072cd5007a8214fe96bc071' ARCHIVE_BASE_KICKSTARTER_1_SIZE='1400' ARCHIVE_BASE_KICKSTARTER_1_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_KICKSTARTER_0_NAME='war_for_the_overworld_kickstarter_theme_charity_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_KICKSTARTER_0_MD5='9ee5fad56ab9dd6676ab4718fa7e5e2e' ARCHIVE_BASE_KICKSTARTER_0_SIZE='1300' ARCHIVE_BASE_KICKSTARTER_0_VERSION='2.0.7f1-gog36563' ## The Cynical Imp ARCHIVE_BASE_CYNICAL_3_NAME='war_for_the_overworld_cynical_imp_charity_v2_1_2_76431.sh' ARCHIVE_BASE_CYNICAL_3_MD5='39148177572cbb5a953eede826816cf7' ARCHIVE_BASE_CYNICAL_3_SIZE='1048' ARCHIVE_BASE_CYNICAL_3_VERSION='2.1.2-gog76431' ARCHIVE_BASE_CYNICAL_3_URL='http://buy.wftogame.com/charity/' ARCHIVE_BASE_CYNICAL_2_NAME='war_for_the_overworld_cynical_imp_charity_v2_1_1_73576.sh' ARCHIVE_BASE_CYNICAL_2_MD5='a82cbdad5ac4320dac813d5d588af23d' ARCHIVE_BASE_CYNICAL_2_SIZE='1048' ARCHIVE_BASE_CYNICAL_2_VERSION='2.1.1-gog73576' ARCHIVE_BASE_CYNICAL_1_NAME='war_for_the_overworld_cynical_imp_charity_v2_1_0f4_55096.sh' ARCHIVE_BASE_CYNICAL_1_MD5='7941c2d30434ec481056ca668d8901d6' ARCHIVE_BASE_CYNICAL_1_SIZE='1400' ARCHIVE_BASE_CYNICAL_1_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_CYNICAL_0_NAME='war_for_the_overworld_cynical_imp_charity_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_CYNICAL_0_MD5='301e40e80942c2382dbf892fd3801216' ARCHIVE_BASE_CYNICAL_0_SIZE='1300' ARCHIVE_BASE_CYNICAL_0_VERSION='2.0.7f1-gog36563' ## Seasonal Worker Skins ARCHIVE_BASE_SEASONALWORKER_4_NAME='war_for_the_overworld_seasonal_worker_skins_v2_1_2_76431.sh' ARCHIVE_BASE_SEASONALWORKER_4_MD5='941ee4e1fd7a37a9862f79054bbb8b00' ARCHIVE_BASE_SEASONALWORKER_4_SIZE='1048' ARCHIVE_BASE_SEASONALWORKER_4_VERSION='2.1.2-gog76431' ARCHIVE_BASE_SEASONALWORKER_4_URL='https://www.gog.com/game/war_for_the_overworld_worker_skin_collection' ARCHIVE_BASE_SEASONALWORKER_3_NAME='war_for_the_overworld_seasonal_worker_skins_v2_1_1_73576.sh' ARCHIVE_BASE_SEASONALWORKER_3_MD5='a74c7dc94c79c37a328a15d9cc4a8385' ARCHIVE_BASE_SEASONALWORKER_3_SIZE='1048' ARCHIVE_BASE_SEASONALWORKER_3_VERSION='2.1.1-gog73576' ARCHIVE_BASE_SEASONALWORKER_2_NAME='war_for_the_overworld_seasonal_worker_skins_v2_1_0f4_55096.sh' ARCHIVE_BASE_SEASONALWORKER_2_MD5='874a21a49ba212ef716e35e0a5b98357' ARCHIVE_BASE_SEASONALWORKER_2_SIZE='1400' ARCHIVE_BASE_SEASONALWORKER_2_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_SEASONALWORKER_1_NAME='war_for_the_overworld_seasonal_worker_skins_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_SEASONALWORKER_1_MD5='ccc02cab316dff3f6a9351217f38f029' ARCHIVE_BASE_SEASONALWORKER_1_SIZE='1400' ARCHIVE_BASE_SEASONALWORKER_1_VERSION='2.0.7f1-gog36563' ARCHIVE_BASE_SEASONALWORKER_0_NAME='war_for_the_overworld_seasonal_worker_skins_2_0_7f1_30014.sh' ARCHIVE_BASE_SEASONALWORKER_0_MD5='6b4c2c19a901547b1fe9a8a51edab522' ARCHIVE_BASE_SEASONALWORKER_0_SIZE='1400' ARCHIVE_BASE_SEASONALWORKER_0_VERSION='2.0.6f1-gog30014' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' goggame-*.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-war-for-the-overworld-expansions.sh0000755000000000000000000001341314471751340020523 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # War for the Overworld expansions: # - My Pet Dungeon # - Heart of Gold # - The Under Games ### script_version=20250103.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='war-for-the-overworld' GAME_NAME='War for the Overworld' EXPANSION_ID_PETDUNGEON='my-pet-dungeon' EXPANSION_NAME_PETDUNGEON='My Pet Dungeon' EXPANSION_ID_HEARTOFGOLD='heart-of-gold' EXPANSION_NAME_HEARTOFGOLD='Heart of Gold' EXPANSION_ID_UNDERGAMES='the-under-games' EXPANSION_NAME_UNDERGAMES='The Under Games' # Archives ## My Pet Dungeon ARCHIVE_BASE_PETDUNGEON_7_NAME='war_for_the_overworld_my_pet_dungeon_v2_1_2_76431.sh' ARCHIVE_BASE_PETDUNGEON_7_MD5='4561b9cb3f6405c7c576da87e9e74175' ARCHIVE_BASE_PETDUNGEON_7_SIZE='1048' ARCHIVE_BASE_PETDUNGEON_7_VERSION='2.1.2-gog76431' ARCHIVE_BASE_PETDUNGEON_7_URL='https://www.gog.com/game/war_for_the_overworld_my_pet_dungeon' ARCHIVE_BASE_PETDUNGEON_6_NAME='war_for_the_overworld_my_pet_dungeon_v2_1_1_73576.sh' ARCHIVE_BASE_PETDUNGEON_6_MD5='435ec9378fbefad46ad4827d870b84e1' ARCHIVE_BASE_PETDUNGEON_6_SIZE='1048' ARCHIVE_BASE_PETDUNGEON_6_VERSION='2.1.1-gog73576' ARCHIVE_BASE_PETDUNGEON_5_NAME='war_for_the_overworld_my_pet_dungeon_v2_1_0f4_55096.sh' ARCHIVE_BASE_PETDUNGEON_5_MD5='5aadd3ab719d2fd71df604708b9a29e1' ARCHIVE_BASE_PETDUNGEON_5_SIZE='1400' ARCHIVE_BASE_PETDUNGEON_5_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_PETDUNGEON_4_NAME='war_for_the_overworld_my_pet_dungeon_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_PETDUNGEON_4_MD5='55fd7104b3c3141bc38a2809ae470c92' ARCHIVE_BASE_PETDUNGEON_4_SIZE='1400' ARCHIVE_BASE_PETDUNGEON_4_VERSION='2.0.7f1-gog36563' ARCHIVE_BASE_PETDUNGEON_3_NAME='war_for_the_overworld_my_pet_dungeon_2_0_7f1_30014.sh' ARCHIVE_BASE_PETDUNGEON_3_MD5='f9cd5f6fbe46d46c98837410f8cbfeee' ARCHIVE_BASE_PETDUNGEON_3_SIZE='1400' ARCHIVE_BASE_PETDUNGEON_3_VERSION='2.0.6f1-gog30014' ARCHIVE_BASE_PETDUNGEON_2_NAME='war_for_the_overworld_my_pet_dungeon_2_0_6f1_24637.sh' ARCHIVE_BASE_PETDUNGEON_2_MD5='7788aeeee1e9c7cd365eb595e772ff52' ARCHIVE_BASE_PETDUNGEON_2_SIZE='1400' ARCHIVE_BASE_PETDUNGEON_2_VERSION='2.0.6f1-gog24637' ARCHIVE_BASE_PETDUNGEON_1_NAME='war_for_the_overworld_my_pet_dungeon_2_0_5_24177.sh' ARCHIVE_BASE_PETDUNGEON_1_MD5='eb45d5ee8c699d9ded7d15b82ad1efa3' ARCHIVE_BASE_PETDUNGEON_1_SIZE='1400' ARCHIVE_BASE_PETDUNGEON_1_VERSION='2.0.5-gog24177' ## Heart of Gold ARCHIVE_BASE_HEARTOFGOLD_4_NAME='war_for_the_overworld_heart_of_gold_v2_1_2_76431.sh' ARCHIVE_BASE_HEARTOFGOLD_4_MD5='c3acb781eda622962857b70416fc7a54' ARCHIVE_BASE_HEARTOFGOLD_4_SIZE='1048' ARCHIVE_BASE_HEARTOFGOLD_4_VERSION='2.1.2-gog76431' ARCHIVE_BASE_HEARTOFGOLD_4_URL='https://www.gog.com/game/war_for_the_overworld_heart_of_gold' ARCHIVE_BASE_HEARTOFGOLD_3_NAME='war_for_the_overworld_heart_of_gold_v2_1_1_73576.sh' ARCHIVE_BASE_HEARTOFGOLD_3_MD5='653ab69838583a231b7cc8128286e183' ARCHIVE_BASE_HEARTOFGOLD_3_SIZE='1048' ARCHIVE_BASE_HEARTOFGOLD_3_VERSION='2.1.1-gog73576' ARCHIVE_BASE_HEARTOFGOLD_2_NAME='war_for_the_overworld_heart_of_gold_v2_1_0f4_55096.sh' ARCHIVE_BASE_HEARTOFGOLD_2_MD5='c492a072ab257817abeb7c80f76c1eca' ARCHIVE_BASE_HEARTOFGOLD_2_SIZE='1400' ARCHIVE_BASE_HEARTOFGOLD_2_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_HEARTOFGOLD_1_NAME='war_for_the_overworld_heart_of_gold_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_HEARTOFGOLD_1_MD5='c512019fa698759ba0a96e79fadcb06e' ARCHIVE_BASE_HEARTOFGOLD_1_SIZE='1400' ARCHIVE_BASE_HEARTOFGOLD_1_VERSION='2.0.7f1-gog36563' ARCHIVE_BASE_HEARTOFGOLD_0_NAME='war_for_the_overworld_heart_of_gold_2_0_7f1_30014.sh' ARCHIVE_BASE_HEARTOFGOLD_0_MD5='2d3555bfea2aafca9ff9e8eb7a970c0d' ARCHIVE_BASE_HEARTOFGOLD_0_SIZE='1400' ARCHIVE_BASE_HEARTOFGOLD_0_VERSION='2.0.6f1-gog30014' ## The Under Games ARCHIVE_BASE_UNDERGAMES_3_NAME='war_for_the_overworld_the_under_games_v2_1_2_76431.sh' ARCHIVE_BASE_UNDERGAMES_3_MD5='09378c271fee3fd4eac40d14f6161831' ARCHIVE_BASE_UNDERGAMES_3_SIZE='1048' ARCHIVE_BASE_UNDERGAMES_3_VERSION='2.1.2-gog76431' ARCHIVE_BASE_UNDERGAMES_3_URL='https://www.gog.com/game/war_for_the_overworld_the_under_games' ARCHIVE_BASE_UNDERGAMES_2_NAME='war_for_the_overworld_the_under_games_v2_1_1_73576.sh' ARCHIVE_BASE_UNDERGAMES_2_MD5='820594211c64b3fe94716921c1da3f73' ARCHIVE_BASE_UNDERGAMES_2_SIZE='1048' ARCHIVE_BASE_UNDERGAMES_2_VERSION='2.1.1-gog73576' ARCHIVE_BASE_UNDERGAMES_1_NAME='war_for_the_overworld_the_under_games_v2_1_0f4_55096.sh' ARCHIVE_BASE_UNDERGAMES_1_MD5='8c7bdf2299a2cc5795f92e58c94aa57b' ARCHIVE_BASE_UNDERGAMES_1_SIZE='1400' ARCHIVE_BASE_UNDERGAMES_1_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_UNDERGAMES_0_NAME='war_for_the_overworld_the_under_games_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_UNDERGAMES_0_MD5='c63ba259c40ab080f697fe03678d287e' ARCHIVE_BASE_UNDERGAMES_0_SIZE='1400' ARCHIVE_BASE_UNDERGAMES_0_VERSION='2.0.7f1-gog36563' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' goggame-*.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-war-for-the-overworld.sh0000755000000000000000000001151714471751340016341 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=20250103.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='war-for-the-overworld' GAME_NAME='War for the Overworld' ARCHIVE_BASE_8_NAME='war_for_the_overworld_v2_1_2_76431.sh' ARCHIVE_BASE_8_MD5='e834b2a81bff0a36dc50fcf7a061abec' ARCHIVE_BASE_8_SIZE='4814079' ARCHIVE_BASE_8_VERSION='2.1.2-gog76431' ARCHIVE_BASE_8_URL='https://www.gog.com/game/war_for_the_overworld' ARCHIVE_BASE_7_NAME='war_for_the_overworld_v2_1_1_73576.sh' ARCHIVE_BASE_7_MD5='d3095d210fda9c39cd2cec6c2d0a882f' ARCHIVE_BASE_7_SIZE='4792845' ARCHIVE_BASE_7_VERSION='2.1.1-gog73576' ARCHIVE_BASE_6_NAME='war_for_the_overworld_v2_1_0f4_55096.sh' ARCHIVE_BASE_6_MD5='97a9bd6ee2f88fa9c64a75cd578d3677' ARCHIVE_BASE_6_SIZE='4800000' ARCHIVE_BASE_6_VERSION='2.1.0f4-gog55096' ARCHIVE_BASE_5_NAME='war_for_the_overworld_2_0_7f1_gog_36563.sh' ARCHIVE_BASE_5_MD5='e957781ef8559841ed2e32032e43d2cd' ARCHIVE_BASE_5_SIZE='4700000' ARCHIVE_BASE_5_VERSION='2.0.7f1-gog36563' ARCHIVE_BASE_4_NAME='war_for_the_overworld_2_0_7f1_30014.sh' ARCHIVE_BASE_4_MD5='a352307c8fbf70c33bdfdd97a82c6530' ARCHIVE_BASE_4_SIZE='4700000' ARCHIVE_BASE_4_VERSION='2.0.6f1-gog30014' ARCHIVE_BASE_3_NAME='war_for_the_overworld_2_0_6f1_24637.sh' ARCHIVE_BASE_3_MD5='e58f2720ed974185e9e5b29d08aa6238' ARCHIVE_BASE_3_SIZE='4700000' ARCHIVE_BASE_3_VERSION='2.0.6f1-gog24637' ARCHIVE_BASE_2_NAME='war_for_the_overworld_2_0_5_24177.sh' ARCHIVE_BASE_2_MD5='79b604f0d19caf3af5fdc4cb3903b370' ARCHIVE_BASE_2_SIZE='4700000' ARCHIVE_BASE_2_VERSION='2.0.5-gog24177' ARCHIVE_BASE_1_NAME='war_for_the_overworld_en_2_0_4_23102.sh' ARCHIVE_BASE_1_MD5='2873095f86b17c613b84af9624986f42' ARCHIVE_BASE_1_SIZE='4700000' ARCHIVE_BASE_1_VERSION='2.0.4-gog23102' ARCHIVE_BASE_0_NAME='war_for_the_overworld_en_2_0_3f1_22287.sh' ARCHIVE_BASE_0_MD5='4f1ff4e136aeaa795fce8ba26445cbe8' ARCHIVE_BASE_0_SIZE='4700000' ARCHIVE_BASE_0_VERSION='2.0.3f1-gog22287' UNITY3D_NAME='WFTOGame' UNITY3D_PLUGINS=' libCoherentGTCore.so libCoherentGTJS.so libcoherenticudata.so libcoherenticui18n.so libcoherenticuuc.so libCoherentUIGT_Native.so libGameLogic.so libRenoirCore.Linux.so libWTF.so ScreenSelector.so' ## If libsteam_api.so is not included, ending a level will fail. UNITY3D_PLUGINS="${UNITY3D_PLUGINS:-} libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_BIN_FILES=" ${UNITY3D_NAME}_Data/CoherentUI_Host" CONTENT_GAME0_DATA_FILES=' GameData *.info' USER_PERSISTENT_DIRECTORIES=" GameData ${UNITY3D_NAME}_Data/GameData ${UNITY3D_NAME}_Data/uiresources/minimapSnapshot" ## Work around the engine inability to play video files without write permissions USER_PERSISTENT_DIRECTORIES="${USER_PERSISTENT_DIRECTORIES:-} ${UNITY3D_NAME}_Data/uiresources/wftoUI/menu/vids" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Add required execution permissions (this is only required by some old builds of the game) for file in \ "$(unity3d_name)_Data/CoherentUI_Host/linux/CoherentUI_Host" \ "$(unity3d_name)_Data/CoherentUI_Host/linux/CoherentUI_Host.bin" do if [ -e "$file" ]; then chmod 755 "$file" fi done ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Link some Unity3D plugin libraries in the game data path as the game engine fails to find them otherwise libraries_destination="$(package_path 'PKG_BIN')$(path_game_data)/$(unity3d_name)_Data/Plugins/x86_64" mkdir --parents "$libraries_destination" ln --symbolic \ "$(path_libraries)/libCoherentUIGT_Native.so" \ "$(path_libraries)/libGameLogic.so" \ "$libraries_destination" # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warcraft-1.sh0000755000000000000000000000402214471751340014125 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Warcraft 1 ### script_version=20241123.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='warcraft-1' GAME_NAME='Warcraft: Orcs & Humans' ARCHIVE_BASE_1_NAME='setup_warcraft_orcs__humans_1.2_(28330).exe' ARCHIVE_BASE_1_MD5='3ec0ea59f7a1c4413792da43cf9affe7' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='642566' ARCHIVE_BASE_1_VERSION='1.2-gog28330' ARCHIVE_BASE_1_URL='https://www.gog.com/game/warcraft_orcs_and_humans' ARCHIVE_BASE_0_NAME='setup_warcraft_orcs__humans_1.2_(28330).exe' ARCHIVE_BASE_0_MD5='79d30dbb24395d32f77156a2e2b4639c' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='642266' ARCHIVE_BASE_0_VERSION='1.2-gog28330' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' data drivers *.bin *.cue *.exe *.war' CONTENT_DOC_MAIN_PATH=' *.txt' GAME_IMAGE='war1.cue' USER_PERSISTENT_FILES=' *.SAV *.war' APP_MAIN_EXE='war.exe' APP_MAIN_ICON='app/goggame-1706049527.ico' ## Use fixed cpu cycles, to avoid scrolling issues. APP_MAIN_DOSBOX_PRERUN=' config -set cpu cycles=fixed 30000' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build package packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warcraft-3-expansions.sh0000755000000000000000000001143214471751340016317 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Warcraft 3 expansions: # - The Frozen Throne ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='warcraft-3' GAME_NAME='Warcraft Ⅲ' EXPANSION_ID='the-frozen-throne' EXPANSION_NAME='The Frozen Throne' ARCHIVE_BASE_EN_0_NAME='Installer Tome.mpq' ARCHIVE_BASE_EN_0_MD5='04f1a75841df58a839ea3c2ea9d46a7e' ARCHIVE_BASE_EN_0_SIZE='612802' ARCHIVE_BASE_EN_0_VERSION='1.27-blizzard1' ARCHIVE_BASE_EN_0_URL='https://eu.battle.net/download/getLegacy?os=win&locale=enUS&product=W3XP' ARCHIVE_BASE_FR_0_NAME='Installer Tome.mpq' ARCHIVE_BASE_FR_0_MD5='050d7b179b1c8c784f3ff40fae077f6e' ARCHIVE_BASE_FR_0_SIZE='661687' ARCHIVE_BASE_FR_0_VERSION='1.27-blizzard1' ARCHIVE_BASE_FR_0_URL='https://eu.battle.net/download/getLegacy?os=win&locale=frFR&product=W3XP' ARCHIVE_BASE_DE_0_NAME='Installer Tome.mpq' ARCHIVE_BASE_DE_0_MD5='fdb12d1362e846c189e10b24ef3feee6' ARCHIVE_BASE_DE_0_SIZE='654348' ARCHIVE_BASE_DE_0_VERSION='1.27-blizzard1' ARCHIVE_BASE_DE_0_URL='https://eu.battle.net/download/getLegacy?os=win&locale=deDE&product=W3XP' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_PATH='PC' ## Frozen Throne.exe is distinct between the English and the French build of the game, ## for now we assume the differences are not critical and one can be used in place of the other. CONTENT_GAME_BIN_FILES=' Frozen Throne.exe' CONTENT_GAME_DATA_PATH='Common' CONTENT_GAME_DATA_FILES=' Maps/FrozenThrone Movies/IntroX.mpq Movies/OutroX.mpq War3x.mpq War3xLocal.mpq' CONTENT_GAME_DATA_SHARED_PATH='Common' CONTENT_GAME_DATA_SHARED_FILES=' War3Patch.mpq' USER_PERSISTENT_DIRECTORIES=' Campaigns Maps Replay Save' APP_MAIN_ID="${GAME_ID}-${EXPANSION_ID}" APP_MAIN_NAME="${GAME_NAME}: ${EXPANSION_NAME}" APP_MAIN_EXE='Frozen Throne.exe' APP_MAIN_OPTIONS='-opengl' APP_MAIN_ICON='PC/Frozen Throne.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA PKG_DATA_SHARED' PKG_PARENT_ID="$GAME_ID" PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA_BASE PKG_PARENT' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/x-msvideo' PKG_DATA_BASE_ID="${GAME_ID}-${EXPANSION_ID}-data" PKG_DATA_ID_EN="${PKG_DATA_BASE_ID}-en" PKG_DATA_ID_FR="${PKG_DATA_BASE_ID}-fr" PKG_DATA_ID_DE="${PKG_DATA_BASE_ID}-de" PKG_DATA_PROVIDES=" $PKG_DATA_BASE_ID" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_SHARED' PKG_DATA_SHARED_ID="${PKG_DATA_BASE_ID}-shared" PKG_DATA_SHARED_ID_EN="${PKG_DATA_SHARED_ID}-en" PKG_DATA_SHARED_ID_FR="${PKG_DATA_SHARED_ID}-fr" PKG_DATA_SHARED_ID_DE="${PKG_DATA_SHARED_ID}-de" PKG_DATA_SHARED_PROVIDES=" $PKG_DATA_SHARED_ID ${GAME_ID}-data-shared" PKG_DATA_SHARED_PROVIDES_EN="$PKG_DATA_SHARED_PROVIDES ${GAME_ID}-data-shared-en" PKG_DATA_SHARED_PROVIDES_FR="$PKG_DATA_SHARED_PROVIDES ${GAME_ID}-data-shared-fr" PKG_DATA_SHARED_PROVIDES_DE="$PKG_DATA_SHARED_PROVIDES ${GAME_ID}-data-shared-de" PKG_DATA_SHARED_DESCRIPTION='data shared between the base game and the expansion' # Set the list of requirements to extract the archive contents. REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} smpq" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # 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_NAME='font.exp' archive_initialize_required \ 'ARCHIVE_CDKEY' \ 'ARCHIVE_REQUIRED_CDKEY' # Extract game data archive_path=$(archive_path "$(current_archive)") archive_path_cdkey=$(archive_path 'ARCHIVE_CDKEY') mkdir --parents "${PLAYIT_WORKDIR}/gamedata" information_archive_data_extraction "$archive_path" ( cd "${PLAYIT_WORKDIR}/gamedata" smpq --extract "$archive_path" # Update the .mpq file ( cd 'PC-100x' smpq --append --overwrite ../Common/War3x.mpq ./* ) ( cd 'Files' cp --dereference \ "$archive_path_cdkey" \ 'font' smpq --append ../Common/War3x.mpq \ font/font.ccd \ font/font.exp rm --force --recursive 'font' ) ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warcraft-3.sh0000755000000000000000000001141714471751340014135 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Warcraft 3 ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='warcraft-3' GAME_NAME='Warcraft Ⅲ: Reign of Chaos' ARCHIVE_BASE_EN_0_NAME='Installer Tome.mpq' ARCHIVE_BASE_EN_0_MD5='dd5926d8bb6ed10c47617bbc69b0ce1a' ARCHIVE_BASE_EN_0_SIZE='775512' ARCHIVE_BASE_EN_0_VERSION='1.27-blizzard1' ARCHIVE_BASE_EN_0_URL='https://eu.battle.net/download/getLegacy?os=win&locale=enUS&product=WAR3' ARCHIVE_BASE_FR_0_NAME='Installer Tome.mpq' ARCHIVE_BASE_FR_0_MD5='e61e66359b1ceedbf3c3d06b835e6aa1' ARCHIVE_BASE_FR_0_SIZE='801118' ARCHIVE_BASE_FR_0_VERSION='1.27-blizzard1' ARCHIVE_BASE_FR_0_URL='https://eu.battle.net/download/getLegacy?os=win&locale=frFR&product=WAR3' ARCHIVE_BASE_DE_0_NAME='Installer Tome.mpq' ARCHIVE_BASE_DE_0_MD5='d5c1dd8ed66473e6adee36e1f8b528cb' ARCHIVE_BASE_DE_0_SIZE='795612' ARCHIVE_BASE_DE_0_VERSION='1.27-blizzard1' ARCHIVE_BASE_DE_0_URL='https://eu.battle.net/download/getLegacy?os=win&locale=deDE&product=WAR3' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_PATH='PC' ## Warcraft III.exe and World Editor.exe are distinct between the English and the French build of the game, ## for now we assume the differences are not critical and one can be used in place of the other. CONTENT_GAME_BIN_FILES=' redist blizzard.ax *.dll *.exe' CONTENT_GAME_DATA_PATH='Common' CONTENT_GAME_DATA_FILES=' Maps Movies War3.mpq' CONTENT_GAME_DATA_SHARED_PATH='Common' CONTENT_GAME_DATA_SHARED_FILES=' War3Patch.mpq' USER_PERSISTENT_DIRECTORIES=' Campaigns Maps Replay Save' APP_MAIN_EXE='Warcraft III.exe' ## Ensure that Reign of Chaos is started, even if The Frozen Throne is installed APP_MAIN_OPTIONS='-classic -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_SHARED' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA_BASE' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/x-msvideo' PKG_DATA_BASE_ID="${GAME_ID}-data" PKG_DATA_ID_EN="${PKG_DATA_BASE_ID}-en" PKG_DATA_ID_FR="${PKG_DATA_BASE_ID}-fr" PKG_DATA_ID_DE="${PKG_DATA_BASE_ID}-de" PKG_DATA_PROVIDES=" $PKG_DATA_BASE_ID" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_SHARED' PKG_DATA_SHARED_ID="${PKG_DATA_BASE_ID}-shared" PKG_DATA_SHARED_ID_EN="${PKG_DATA_SHARED_ID}-en" PKG_DATA_SHARED_ID_FR="${PKG_DATA_SHARED_ID}-fr" PKG_DATA_SHARED_ID_DE="${PKG_DATA_SHARED_ID}-de" PKG_DATA_SHARED_PROVIDES=" $PKG_DATA_SHARED_ID" PKG_DATA_SHARED_DESCRIPTION='data shared between the base game and the expansion' # Set the list of requirements to extract the archive contents. REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} smpq" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # 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 the .mpq file ( ## Ensure case consistency between the different builds of the game cd 'Common' if [ -e 'war3.mpq' ]; then mv 'war3.mpq' 'War3.mpq' fi ) ( cd 'PC-100' smpq --append ../Common/War3.mpq ./* ) ( cd 'Files' cp --dereference \ "$archive_path_cdkey_1" \ "$archive_path_cdkey_2" \ 'font' smpq --append ../Common/War3.mpq \ font/font.ccd \ font/font.clh \ font/font.gid rm --force --recursive 'font' ) ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warhammer-40k-dawn-of-war.sh0000755000000000000000000004120014471751340016654 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 Hoël Bézier set -o errexit ### # Warhammer 40,000: Dawn of War: # - Dawn of War (original game) # - Winter Assault (full game and free demo) # - Dark Crusade # - Soulstorm ### script_version=20241021.5 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='warhammer-40k-dawn-of-war' GAME_NAME='Warhammer 40,000: Dawn of War' GAME_ID_WA="${GAME_ID}-winter-assault" GAME_NAME_WA="$GAME_NAME - Winter Assault" GAME_ID_WA_DEMO="${GAME_ID_WA}-demo" GAME_NAME_WA_DEMO="$GAME_NAME_WA (demo)" GAME_ID_DC="${GAME_ID}-dark-crusade" GAME_NAME_DC="$GAME_NAME - Dark Crusade" GAME_ID_SS="${GAME_ID}-soulstorm" GAME_NAME_SS="$GAME_NAME - Soulstorm" # Archives ## Dawn of War (base game) ARCHIVE_BASE_DOW_EN_0_NAME='setup_warhammer_40000_dawn_of_war_0.19_(64626).exe' ARCHIVE_BASE_DOW_EN_0_MD5='a45fc06675d678b282e7f72f39c2591c' ARCHIVE_BASE_DOW_EN_0_TYPE='innosetup' ARCHIVE_BASE_DOW_EN_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_0.19_(64626)-1.bin' ARCHIVE_BASE_DOW_EN_0_PART1_MD5='e89415bc33d078598a19650ddd80d2be' ARCHIVE_BASE_DOW_EN_0_SIZE='2800000' ARCHIVE_BASE_DOW_EN_0_VERSION='1.51-gog64626' ARCHIVE_BASE_DOW_EN_0_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ARCHIVE_BASE_DOW_FR_0_NAME='setup_warhammer_40000_dawn_of_war_0.19_(french)_(64626).exe' ARCHIVE_BASE_DOW_FR_0_MD5='e1cdc8cc2b9a81b390cd1996053d5c04' ARCHIVE_BASE_DOW_FR_0_TYPE='innosetup' ARCHIVE_BASE_DOW_FR_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_0.19_(french)_(64626)-1.bin' ARCHIVE_BASE_DOW_FR_0_PART1_MD5='32eecc81507d84f6d39f9c74aeb5e1ef' ARCHIVE_BASE_DOW_FR_0_SIZE='2800000' ARCHIVE_BASE_DOW_FR_0_VERSION='1.51-gog64626' ARCHIVE_BASE_DOW_FR_0_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ## Winter Assault (full game) ARCHIVE_BASE_WA_EN_1_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(64626).exe' ARCHIVE_BASE_WA_EN_1_MD5='223385b79c6ee7eb691248a943eb53fa' ARCHIVE_BASE_WA_EN_1_TYPE='innosetup' ARCHIVE_BASE_WA_EN_1_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(64626)-1.bin' ARCHIVE_BASE_WA_EN_1_PART1_MD5='61e354453cb8638b995f5ed17a4bdbbd' ARCHIVE_BASE_WA_EN_1_SIZE='2763147' ARCHIVE_BASE_WA_EN_1_VERSION='1.51-gog64626' ARCHIVE_BASE_WA_EN_1_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ARCHIVE_BASE_WA_FR_1_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(french)_(64626).exe' ARCHIVE_BASE_WA_FR_1_MD5='99640045bdd625ff55aed497aef96e78' ARCHIVE_BASE_WA_FR_1_TYPE='innosetup' ARCHIVE_BASE_WA_FR_1_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(french)_(64626)-1.bin' ARCHIVE_BASE_WA_FR_1_PART1_MD5='e6263848739e9c9975632c0766fae2e1' ARCHIVE_BASE_WA_FR_1_SIZE='2769494' ARCHIVE_BASE_WA_FR_1_VERSION='1.51-gog64626' ARCHIVE_BASE_WA_FR_1_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' 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_FR_0_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(french)_(64626).exe' ARCHIVE_BASE_WA_FR_0_MD5='9423b22d50f707d794e961aef63a9a44' ARCHIVE_BASE_WA_FR_0_TYPE='innosetup' ARCHIVE_BASE_WA_FR_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_winter_assault_0.19_(french)_(64626)-1.bin' ARCHIVE_BASE_WA_FR_0_PART1_MD5='b4a188c7ed2012a9c4fd300af07c831d' ARCHIVE_BASE_WA_FR_0_SIZE='2800000' ARCHIVE_BASE_WA_FR_0_VERSION='1.51-gog64626' ## Winter Assault (free demo) ARCHIVE_BASE_WA_DEMO_EN_0_NAME='Dawn of War - Winter Assault.rar' ARCHIVE_BASE_WA_DEMO_EN_0_MD5='555f5b3844c80866b0cb9fa536692380' ARCHIVE_BASE_WA_DEMO_EN_0_SIZE='480000' ARCHIVE_BASE_WA_DEMO_EN_0_VERSION='1.0-archiveorg1' ARCHIVE_BASE_WA_DEMO_EN_0_URL='https://archive.org/details/DawnOfWarWinterAssault_201404' ## Dark Crusade ARCHIVE_BASE_DC_EN_0_NAME='setup_warhammer_40000_dawn_of_war_-_dark_crusade_0.19_(64626).exe' ARCHIVE_BASE_DC_EN_0_MD5='e54248e3e006fa378e374a9a60f33418' ARCHIVE_BASE_DC_EN_0_TYPE='innosetup' ARCHIVE_BASE_DC_EN_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_dark_crusade_0.19_(64626)-1.bin' ARCHIVE_BASE_DC_EN_0_PART1_MD5='8830adc7aa004a800411b0f95919af5f' ARCHIVE_BASE_DC_EN_0_SIZE='4500000' ARCHIVE_BASE_DC_EN_0_VERSION='1.20-gog64626' ARCHIVE_BASE_DC_EN_0_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ARCHIVE_BASE_DC_FR_0_NAME='setup_warhammer_40000_dawn_of_war_-_dark_crusade_0.19_(french)_(64626).exe' ARCHIVE_BASE_DC_FR_0_MD5='5a254443909788b595baf16610809056' ARCHIVE_BASE_DC_FR_0_TYPE='innosetup' ARCHIVE_BASE_DC_FR_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_dark_crusade_0.19_(french)_(64626)-1.bin' ARCHIVE_BASE_DC_FR_0_PART1_MD5='0a64baaffaa392b9afd570a0a811cb2f' ARCHIVE_BASE_DC_FR_0_SIZE='4600000' ARCHIVE_BASE_DC_FR_0_VERSION='1.20-gog64626' ARCHIVE_BASE_DC_FR_0_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ## Soulstorm ARCHIVE_BASE_SS_EN_1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(64955).exe' ARCHIVE_BASE_SS_EN_1_MD5='8da443afebb589ca1f1b0100579325d2' ARCHIVE_BASE_SS_EN_1_TYPE='innosetup' ARCHIVE_BASE_SS_EN_1_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(64955)-1.bin' ARCHIVE_BASE_SS_EN_1_PART1_MD5='ac634ca5d861d3fc502325646cffbd83' ARCHIVE_BASE_SS_EN_1_PART2='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(64955)-2.bin' ARCHIVE_BASE_SS_EN_1_PART2_MD5='5c4cde5ecf4dae72bbdbc97a7659dbe5' ARCHIVE_BASE_SS_EN_1_SIZE='5458668' ARCHIVE_BASE_SS_EN_1_VERSION='1.2.0-gog64955' ARCHIVE_BASE_SS_EN_1_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ARCHIVE_BASE_SS_FR_1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(french)_(64955).exe' ARCHIVE_BASE_SS_FR_1_MD5='e2fd0c36f0b36a9ad06c10ff4d044478' ARCHIVE_BASE_SS_FR_1_TYPE='innosetup' ARCHIVE_BASE_SS_FR_1_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(french)_(64955)-1.bin' ARCHIVE_BASE_SS_FR_1_PART1_MD5='29203f3fc2424b33f3251e44fbe65d13' ARCHIVE_BASE_SS_FR_1_PART2='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.21_(french)_(64955)-2.bin' ARCHIVE_BASE_SS_FR_1_PART2_MD5='6ad688745bba4fe353b1da9b330e956a' ARCHIVE_BASE_SS_FR_1_SIZE='5459544' ARCHIVE_BASE_SS_FR_1_VERSION='1.2.0-gog64955' ARCHIVE_BASE_SS_FR_1_URL='https://www.gog.com/game/warhammer_40000_dawn_of_war' ARCHIVE_BASE_SS_EN_0_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(64626).exe' ARCHIVE_BASE_SS_EN_0_MD5='ccf68576db62f61c3d4967a1e66d3863' ARCHIVE_BASE_SS_EN_0_TYPE='innosetup' ARCHIVE_BASE_SS_EN_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(64626)-1.bin' ARCHIVE_BASE_SS_EN_0_PART1_MD5='944e2a30b2036dbfb37b1b649c370541' ARCHIVE_BASE_SS_EN_0_PART2_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(64626)-2.bin' ARCHIVE_BASE_SS_EN_0_PART2_MD5='949587a4ce461c4900636913ab53e5a1' ARCHIVE_BASE_SS_EN_0_SIZE='5500000' ARCHIVE_BASE_SS_EN_0_VERSION='1.2.0-gog64626' ARCHIVE_BASE_SS_FR_0_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(french)_(64626).exe' ARCHIVE_BASE_SS_FR_0_MD5='a652d618bdc2071ad476842939b63373' ARCHIVE_BASE_SS_FR_0_TYPE='innosetup' ARCHIVE_BASE_SS_FR_0_PART1_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(french)_(64626)-1.bin' ARCHIVE_BASE_SS_FR_0_PART1_MD5='3ffd1c39b68c984acb23263c9ffec133' ARCHIVE_BASE_SS_FR_0_PART2_NAME='setup_warhammer_40000_dawn_of_war_-_soulstorm_0.19_(french)_(64626)-2.bin' ARCHIVE_BASE_SS_FR_0_PART2_MD5='6ba9d30068b91823d838812c8930c8b3' ARCHIVE_BASE_SS_FR_0_SIZE='5500000' ARCHIVE_BASE_SS_FR_0_VERSION='1.2.0-gog64626' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bugreport *.dll *.exe *.ini' CONTENT_GAME_L10N_FILES=' bugreport/english bugreport/french dxp2/locale engine/locale graphicsoptions/locale w40k/locale wxp/locale regions.ini' CONTENT_GAME_DATA_FILES=' drivers dxp2 engine graphicsoptions patch w40k wxp *.dat *.module' CONTENT_DOC_L10N_FILES=' *.htm' USER_PERSISTENT_DIRECTORIES=' badges banners playback profiles screenshots stats' USER_PERSISTENT_FILES=' drivers/spdx9_config.txt local.ini' WINE_WINEPREFIX_TWEAKS='mono' ## Mono is not required by the Winter Assault demo. WINE_WINEPREFIX_TWEAKS_WA_DEMO=' ' APP_MAIN_EXE_DOW='w40k.exe' APP_MAIN_EXE_WA='w40kwa.exe' APP_MAIN_EXE_WA_DEMO='winterassault.exe' APP_MAIN_EXE_DC='darkcrusade.exe' APP_MAIN_EXE_SS='soulstorm.exe' APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=101' APP_MAIN_ICON_WRESTOOL_OPTIONS_WA_DEMO='--type=14' ## Type must be set explicitly, ## or it will be wrongly identified as a Mono application. APP_MAIN_TYPE='wine' # Packages PACKAGES_LIST=' PKG_L10N PKG_BIN PKG_DATA' PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_DATA_DESCRIPTION='data' ## Dawn of War (base game) PKG_L10N_BASE_ID_DOW="${GAME_ID}-l10n" PKG_L10N_ID_DOW_EN="${PKG_L10N_BASE_ID_DOW}-en" PKG_L10N_ID_DOW_FR="${PKG_L10N_BASE_ID_DOW}-fr" PKG_L10N_PROVIDES_DOW=" $PKG_L10N_BASE_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" ## Winter Assault (full game) PKG_L10N_BASE_ID_WA="${GAME_ID_WA}-l10n" PKG_L10N_ID_WA_EN="${PKG_L10N_BASE_ID_WA}-en" PKG_L10N_ID_WA_FR="${PKG_L10N_BASE_ID_WA}-fr" PKG_L10N_PROVIDES_WA=" $PKG_L10N_BASE_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" ## Winter Assault (free demo) PKG_L10N_BASE_ID_WA_DEMO="${GAME_ID_WA_DEMO}-l10n" PKG_L10N_ID_WA_DEMO_EN="${PKG_L10N_BASE_ID_WA_DEMO}-en" PKG_L10N_PROVIDES_WA_DEMO=" $PKG_L10N_BASE_ID_WA_DEMO" PKG_L10N_DESCRIPTION_WA_DEMO_EN="$PKG_L10N_DESCRIPTION_EN" PKG_DATA_ID_WA_DEMO="${GAME_ID_WA_DEMO}-data" ## Dark Crusade PKG_L10N_BASE_ID_DC="${GAME_ID_DC}-l10n" PKG_L10N_ID_DC_EN="${PKG_L10N_BASE_ID_DC}-en" PKG_L10N_ID_DC_FR="${PKG_L10N_BASE_ID_DC}-fr" PKG_L10N_PROVIDES_DC=" $PKG_L10N_BASE_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" ## Soulstorm PKG_L10N_BASE_ID_SS="${GAME_ID_SS}-l10n" PKG_L10N_ID_SS_EN="${PKG_L10N_BASE_ID_SS}-en" PKG_L10N_ID_SS_FR="${PKG_L10N_BASE_ID_SS}-fr" PKG_L10N_PROVIDES_SS=" $PKG_L10N_BASE_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" # Winter Assault (free demo) # - cabextract is required to extract the content of an inner archive # - unix2dos is required to generate a .ini file ## Warning: REQUIREMENTS_LIST has no support for contextual values as of ./play.it 3.31 REQUIREMENTS_LIST_WA_DEMO="${REQUIREMENTS_LIST:-} cabextract unix2dos" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Prevent a presence check for the Mono archive if the current game build does not require it ## FIXME: This is required because ./play.it 2.31 has no context support for the variable WINE_WINEPREFIX_TWEAKS init_extra_archives_required() { WINE_WINEPREFIX_TWEAKS=$(context_value 'WINE_WINEPREFIX_TWEAKS') if ! archives_required_extra_presence_check; then # Delete temporary files working_directory_cleanup exit 1 fi } # Run the default initialization actions initialization_default "$@" # Check for the presence of archive-specific requirements REQUIREMENTS_LIST=$(context_value 'REQUIREMENTS_LIST') requirements_check # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Delete unwanted files. ## TODO: We should set a more explicit list of files to include to avoid that step. case "$(current_archive)" in ('ARCHIVE_BASE_WA_DEMO_'*) rm -- *.exe *.ini *.msi ;; (*) rm --force --recursive \ '__redist' \ 'app' \ 'commonappdata' \ 'tmp' ;; esac ) ## Winter Assault (free demo) - Extract game data from the cabinet installer. case "$(current_archive)" in ('ARCHIVE_BASE_WA_DEMO_'*) ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/WinterAssaultDemo1.cab" archive_extraction 'ARCHIVE_INNER' rm "$ARCHIVE_INNER_PATH" ;; esac ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Winter Assault (free demo) - Create the expected game arborescence. case "$(current_archive)" in ('ARCHIVE_BASE_WA_DEMO_'*) mkdir --parents \ 'badges' \ 'banners' \ 'bugreport/english' \ 'drivers' \ 'engine' \ 'engine/data' \ 'engine/locale/english' \ 'engine/movies' \ 'graphicsoptions/data' \ 'graphicsoptions/locale/english' \ 'logfiles' \ 'patch' \ 'playback' \ 'profiles' \ 'screenshots' \ 'stats' \ 'w40k' \ 'w40k/data' \ 'w40k/locale/english' \ 'wxp' \ 'wxp/data' \ 'wxp/locale/english' \ 'wxp/movies' mv 'bugreport.exe' 'bugreport/bugreport.exe' mv 'bugreport.ini' 'bugreport/bugreport.ini' mv 'bugreport.ucs' 'bugreport/english/bugreport.ucs' mv 'ati.txt' 'drivers/ati.txt' mv 'nvidia.txt' 'drivers/nvidia.txt' mv 'shader.txt' 'drivers/shader.txt' mv 'spdx9_config.txt' 'drivers/spdx9_config.txt' mv 'engine.sga' 'engine/engine.sga' mv 'engine.ucs' 'engine/locale/english/engine.ucs' mv 'enginloc.sga' 'engine/locale/english/enginloc.sga' mv 'dow_intro.avi' 'engine/movies/dow_intro.avi' mv 'dow_intro.lua' 'engine/movies/dow_intro.lua' mv 'dxp_relic_intro.avi' 'engine/movies/dxp_relic_intro.avi' mv 'dxp_relic_intro.lua' 'engine/movies/dxp_relic_intro.lua' mv 'gotdata.sga' 'graphicsoptions/gotdata.sga' mv 'graphicsoptionsutility.ucs' 'graphicsoptions/locale/english/graphicsoptionsutility.ucs' mv 'w40k.ucs' 'w40k/locale/english/w40k.ucs' mv 'w40kdatasoundspeech.sga' 'w40k/locale/english/w40kdata-sound-speech.sga' mv 'w40kdatakeys.sga' 'w40k/locale/english/w40kdatakeys.sga' mv 'w40kdataloc.sga' 'w40k/locale/english/w40kdataloc.sga' mv 'w40kdata.sga' 'w40k/w40kdata.sga' mv 'w40kdatasharedtexturesfull.sga' 'w40k/w40kdata-sharedtextures-full.sga' mv 'w40kdatasoundmed.sga' 'w40k/w40kdata-sound-med.sga' mv 'w40kdatawhmmedium.sga' 'w40k/w40kdata-whm-medium.sga' mv 'wxp.ucs' 'wxp/locale/english/wxp.ucs' mv 'wxpdatasoundspeech.sga' 'wxp/locale/english/wxpdata-sound-speech.sga' mv 'wxpdatakeys.sga' 'wxp/locale/english/wxpdatakeys.sga' mv 'wxpdataloc.sga' 'wxp/locale/english/wxpdataloc.sga' mv 'wxp_order.avi' 'wxp/movies/wxp_order.avi' mv 'wxp_order.lua' 'wxp/movies/wxp_order.lua' mv 'wxpdata.sga' 'wxp/wxpdata.sga' mv 'wxpdatamusic.sga' 'wxp/wxpdata-music.sga' mv 'wxpdatasharedtexturesfull.sga' 'wxp/wxpdata-sharedtextures-full.sga' mv 'wxpdatasoundmed.sga' 'wxp/wxpdata-sound-med.sga' mv 'wxpdatawhmmedium.sga' 'wxp/wxpdata-whm-medium.sga' ;; esac ## Prevent mouse cursor flickering. sed_pattern='allowhwcursor 1' sed_replacement='allowhwcursor 0' sed_expression="s/${sed_pattern}/${sed_replacement}/" sed --in-place --expression="$sed_expression" 'drivers/spdx9_config.txt' ## Winter Assault (free demo) - Generate a required configuration file. case "$(current_archive)" in ('ARCHIVE_BASE_WA_DEMO_'*) config_file="${PLAYIT_WORKDIR}/gamedata/regions.ini" cat > "$config_file" <<- 'EOF' [mods] wxp=english [global] lang=english EOF unix2dos --quiet "$config_file" ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warhammer-40k-gladius-expansions-extra.sh0000755000000000000000000000663714471751340021507 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=20241212.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_20_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_14_03_77940.sh' ARCHIVE_BASE_LORDOFSKULLS_20_MD5='d175e20aa6d48a3ee6e06929b4c34ff2' ARCHIVE_BASE_LORDOFSKULLS_20_SIZE='1086' ARCHIVE_BASE_LORDOFSKULLS_20_VERSION='1.14.3-gog77940' ARCHIVE_BASE_LORDOFSKULLS_20_URL='https://www.gog.com/game/warhammer_40000_gladius_relics_of_war_lord_of_skulls' ARCHIVE_BASE_LORDOFSKULLS_17_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_13_03_72014.sh' ARCHIVE_BASE_LORDOFSKULLS_17_MD5='4e14b2240bb38489dad212e05cbadba3' ARCHIVE_BASE_LORDOFSKULLS_17_SIZE='1086' ARCHIVE_BASE_LORDOFSKULLS_17_VERSION='1.13.3-gog72014' ARCHIVE_BASE_LORDOFSKULLS_14_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_12_03_67548.sh' ARCHIVE_BASE_LORDOFSKULLS_14_MD5='b0481ff1c15b0393bfd7c1b1c8d80709' ARCHIVE_BASE_LORDOFSKULLS_14_SIZE='1400' ARCHIVE_BASE_LORDOFSKULLS_14_VERSION='1.12.3-gog67548' ARCHIVE_BASE_LORDOFSKULLS_11_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_11_04_64361.sh' ARCHIVE_BASE_LORDOFSKULLS_11_MD5='82bf8335b67ecfc66ca0a58abfee40b6' ARCHIVE_BASE_LORDOFSKULLS_11_SIZE='1400' ARCHIVE_BASE_LORDOFSKULLS_11_VERSION='1.11.4-gog64361' ARCHIVE_BASE_LORDOFSKULLS_6_NAME='warhammer_40_000_gladius_relics_of_war_lord_of_skulls_1_10_01_00_57375.sh' ARCHIVE_BASE_LORDOFSKULLS_6_MD5='ad8818e83aec830eb11385cfbf1c3d10' ARCHIVE_BASE_LORDOFSKULLS_6_SIZE='1400' ARCHIVE_BASE_LORDOFSKULLS_6_VERSION='1.10.1-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-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_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warhammer-40k-gladius-expansions-units-packs.sh0000755000000000000000000002476614471751340022630 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=20241212.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_21_NAME='warhammer_40_000_gladius_reinforcement_pack_1_14_03_77940.sh' ARCHIVE_BASE_REINFORCEMENT_21_MD5='901cae49f0ac57a2c39666e40f269c49' ARCHIVE_BASE_REINFORCEMENT_21_SIZE='1086' ARCHIVE_BASE_REINFORCEMENT_21_VERSION='1.14.3-gog77940' ARCHIVE_BASE_REINFORCEMENT_21_URL='https://www.gog.com/game/warhammer_40000_gladius_reinforcement_pack' ARCHIVE_BASE_REINFORCEMENT_18_NAME='warhammer_40_000_gladius_reinforcement_pack_1_13_03_72014.sh' ARCHIVE_BASE_REINFORCEMENT_18_MD5='f7d2e11be209a004bc4d1f666ab18875' ARCHIVE_BASE_REINFORCEMENT_18_SIZE='1086' ARCHIVE_BASE_REINFORCEMENT_18_VERSION='1.13.3-gog72014' ARCHIVE_BASE_REINFORCEMENT_15_NAME='warhammer_40_000_gladius_reinforcement_pack_1_12_03_67548.sh' ARCHIVE_BASE_REINFORCEMENT_15_MD5='290f8f6e2a054d2fcc543318b3636063' ARCHIVE_BASE_REINFORCEMENT_15_SIZE='1400' ARCHIVE_BASE_REINFORCEMENT_15_VERSION='1.12.3-gog67548' ARCHIVE_BASE_REINFORCEMENT_12_NAME='warhammer_40_000_gladius_reinforcement_pack_1_11_04_64361.sh' ARCHIVE_BASE_REINFORCEMENT_12_MD5='145f5a09d46543718f8bcc8b643f6807' ARCHIVE_BASE_REINFORCEMENT_12_SIZE='1400' ARCHIVE_BASE_REINFORCEMENT_12_VERSION='1.11.4-gog64361' ARCHIVE_BASE_REINFORCEMENT_7_NAME='warhammer_40_000_gladius_reinforcement_pack_1_10_01_00_57375.sh' ARCHIVE_BASE_REINFORCEMENT_7_MD5='59ac7359ac72a1f40f5ba237fcee8698' ARCHIVE_BASE_REINFORCEMENT_7_SIZE='1400' ARCHIVE_BASE_REINFORCEMENT_7_VERSION='1.10.1-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-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_20_NAME='warhammer_40_000_gladius_fortification_pack_1_14_03_77940.sh' ARCHIVE_BASE_FORTIFICATION_20_MD5='4c540595d9e2d42c330488cb091ba1fa' ARCHIVE_BASE_FORTIFICATION_20_SIZE='1086' ARCHIVE_BASE_FORTIFICATION_20_VERSION='1.14.3-gog77940' ARCHIVE_BASE_FORTIFICATION_20_URL='https://www.gog.com/game/warhammer_40000_gladius_fortification_pack' ARCHIVE_BASE_FORTIFICATION_17_NAME='warhammer_40_000_gladius_fortification_pack_1_13_03_72014.sh' ARCHIVE_BASE_FORTIFICATION_17_MD5='8c9b997c2dfb6e141db5e02f7b519c93' ARCHIVE_BASE_FORTIFICATION_17_SIZE='1086' ARCHIVE_BASE_FORTIFICATION_17_VERSION='1.13.3-gog72014' ARCHIVE_BASE_FORTIFICATION_14_NAME='warhammer_40_000_gladius_fortification_pack_1_12_03_67548.sh' ARCHIVE_BASE_FORTIFICATION_14_MD5='32c26b39aaa8329f20bddccc4059a257' ARCHIVE_BASE_FORTIFICATION_14_SIZE='1400' ARCHIVE_BASE_FORTIFICATION_14_VERSION='1.12.3-gog67548' ARCHIVE_BASE_FORTIFICATION_11_NAME='warhammer_40_000_gladius_fortification_pack_1_11_04_64361.sh' ARCHIVE_BASE_FORTIFICATION_11_MD5='90d66263e66f30aa7c6df35ec2b0d276' ARCHIVE_BASE_FORTIFICATION_11_SIZE='1400' ARCHIVE_BASE_FORTIFICATION_11_VERSION='1.11.4-gog64361' ARCHIVE_BASE_FORTIFICATION_6_NAME='warhammer_40_000_gladius_fortification_pack_1_10_01_00_57375.sh' ARCHIVE_BASE_FORTIFICATION_6_MD5='859c6d14d76a4b1a43880ea89e01ed27' ARCHIVE_BASE_FORTIFICATION_6_SIZE='1400' ARCHIVE_BASE_FORTIFICATION_6_VERSION='1.10.1-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-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_17_NAME='warhammer_40_000_gladius_assault_pack_1_14_03_77940.sh' ARCHIVE_BASE_ASSAULT_17_MD5='760deb0defe921b8875c99274be00bec' ARCHIVE_BASE_ASSAULT_17_SIZE='1086' ARCHIVE_BASE_ASSAULT_17_VERSION='1.14.3-gog77940' ARCHIVE_BASE_ASSAULT_17_URL='https://www.gog.com/game/warhammer_40000_gladius_assault_pack' ARCHIVE_BASE_ASSAULT_14_NAME='warhammer_40_000_gladius_assault_pack_1_13_03_72014.sh' ARCHIVE_BASE_ASSAULT_14_MD5='f0c6a21687fbcad8442f5bb1c835b1aa' ARCHIVE_BASE_ASSAULT_14_SIZE='1086' ARCHIVE_BASE_ASSAULT_14_VERSION='1.13.3-gog72014' ARCHIVE_BASE_ASSAULT_11_NAME='warhammer_40_000_gladius_assault_pack_1_12_03_67548.sh' ARCHIVE_BASE_ASSAULT_11_MD5='9e56693f4d1623a9c7dcc9c2cf63a59a' ARCHIVE_BASE_ASSAULT_11_SIZE='1400' ARCHIVE_BASE_ASSAULT_11_VERSION='1.12.3-gog67548' ARCHIVE_BASE_ASSAULT_8_NAME='warhammer_40_000_gladius_assault_pack_1_11_04_64361.sh' ARCHIVE_BASE_ASSAULT_8_MD5='aae3f873d640d36f3821921efb7525c2' ARCHIVE_BASE_ASSAULT_8_SIZE='1400' ARCHIVE_BASE_ASSAULT_8_VERSION='1.11.4-gog64361' ARCHIVE_BASE_ASSAULT_3_NAME='warhammer_40_000_gladius_assault_pack_1_10_01_00_57375.sh' ARCHIVE_BASE_ASSAULT_3_MD5='69d3d257e8caa70c7af8bd50b6963e0a' ARCHIVE_BASE_ASSAULT_3_SIZE='1400' ARCHIVE_BASE_ASSAULT_3_VERSION='1.10.1-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-gog54377' ## Specialist ARCHIVE_BASE_SPECIALIST_15_NAME='warhammer_40_000_gladius_specialist_pack_1_14_03_77940.sh' ARCHIVE_BASE_SPECIALIST_15_MD5='265a6aa1071eff6f5f7855f63278e61c' ARCHIVE_BASE_SPECIALIST_15_SIZE='1086' ARCHIVE_BASE_SPECIALIST_15_VERSION='1.14.3-gog77940' ARCHIVE_BASE_SPECIALIST_15_URL='https://www.gog.com/game/warhammer_40000_gladius_specialist_pack' ARCHIVE_BASE_SPECIALIST_12_NAME='warhammer_40_000_gladius_specialist_pack_1_13_03_72014.sh' ARCHIVE_BASE_SPECIALIST_12_MD5='065713713aaa72418d048a20dcd9203e' ARCHIVE_BASE_SPECIALIST_12_SIZE='1086' ARCHIVE_BASE_SPECIALIST_12_VERSION='1.13.3-gog72014' ARCHIVE_BASE_SPECIALIST_9_NAME='warhammer_40_000_gladius_specialist_pack_1_12_03_67548.sh' ARCHIVE_BASE_SPECIALIST_9_MD5='f8e1aaacc5a30496abae99c8a6965799' ARCHIVE_BASE_SPECIALIST_9_SIZE='1400' ARCHIVE_BASE_SPECIALIST_9_VERSION='1.12.3-gog67548' ARCHIVE_BASE_SPECIALIST_6_NAME='warhammer_40_000_gladius_specialist_pack_1_11_04_64361.sh' ARCHIVE_BASE_SPECIALIST_6_MD5='5f44ab4c03bf70047e6716000a29f910' ARCHIVE_BASE_SPECIALIST_6_SIZE='1400' ARCHIVE_BASE_SPECIALIST_6_VERSION='1.11.4-gog64361' ARCHIVE_BASE_SPECIALIST_1_NAME='warhammer_40_000_gladius_specialist_pack_1_10_01_00_57375.sh' ARCHIVE_BASE_SPECIALIST_1_MD5='b0b788d180a82919048621796f68fb1e' ARCHIVE_BASE_SPECIALIST_1_SIZE='1400' ARCHIVE_BASE_SPECIALIST_1_VERSION='1.10.1-gog57375' ## Escalation ARCHIVE_BASE_ESCALATION_8_NAME='warhammer_40_000_gladius_escalation_pack_1_14_03_77940.sh' ARCHIVE_BASE_ESCALATION_8_MD5='847f3fbd0e977f2a944531cabd3efd30' ARCHIVE_BASE_ESCALATION_8_SIZE='1086' ARCHIVE_BASE_ESCALATION_8_VERSION='1.14.3-gog77940' ARCHIVE_BASE_ESCALATION_8_URL='https://www.gog.com/game/warhammer_40000_gladius_adeptus_mechanicus' ARCHIVE_BASE_ESCALATION_5_NAME='warhammer_40_000_gladius_escalation_pack_1_13_03_72014.sh' ARCHIVE_BASE_ESCALATION_5_MD5='5dba4c9a1719723682a2857b44dce0c5' ARCHIVE_BASE_ESCALATION_5_SIZE='1086' ARCHIVE_BASE_ESCALATION_5_VERSION='1.13.3-gog72014' ARCHIVE_BASE_ESCALATION_2_NAME='warhammer_40_000_gladius_escalation_pack_1_12_03_67548.sh' ARCHIVE_BASE_ESCALATION_2_MD5='ce318c4cc0ee526f1abcd18ddbd4937c' ARCHIVE_BASE_ESCALATION_2_SIZE='1400' ARCHIVE_BASE_ESCALATION_2_VERSION='1.12.3-gog67548' ## Firepower ARCHIVE_BASE_FIREPOWER_7_NAME='warhammer_40_000_gladius_firepower_pack_1_14_03_77940.sh' ARCHIVE_BASE_FIREPOWER_7_MD5='1a81b99275d126cbbfcf1ee3c751cac7' ARCHIVE_BASE_FIREPOWER_7_SIZE='1086' ARCHIVE_BASE_FIREPOWER_7_VERSION='1.14.3-gog77940' ARCHIVE_BASE_FIREPOWER_7_URL='https://www.gog.com/game/warhammer_40000_gladius_firepower_pack' ARCHIVE_BASE_FIREPOWER_4_NAME='warhammer_40_000_gladius_firepower_pack_1_13_03_72014.sh' ARCHIVE_BASE_FIREPOWER_4_MD5='813f40d7fbce991eae9db43aad552a4e' ARCHIVE_BASE_FIREPOWER_4_SIZE='1086' ARCHIVE_BASE_FIREPOWER_4_VERSION='1.13.3-gog72014' ARCHIVE_BASE_FIREPOWER_1_NAME='warhammer_40_000_gladius_firepower_pack_1_12_03_67548.sh' ARCHIVE_BASE_FIREPOWER_1_MD5='4f5adaaf42d40278df28bae531313c1d' ARCHIVE_BASE_FIREPOWER_1_SIZE='1400' ARCHIVE_BASE_FIREPOWER_1_VERSION='1.12.3-gog67548' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' Data/*.dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warhammer-40k-gladius-expansions.sh0000755000000000000000000002472314471751340020362 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=20241212.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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_21_NAME='warhammer_40_000_gladius_tyranids_1_14_03_77940.sh' ARCHIVE_BASE_TYRANIDS_21_MD5='08a7490d398a7f36c600a84367b9dfb8' ARCHIVE_BASE_TYRANIDS_21_SIZE='1086' ARCHIVE_BASE_TYRANIDS_21_VERSION='1.14.3-gog77940' ARCHIVE_BASE_TYRANIDS_21_URL='https://www.gog.com/game/warhammer_40000_gladius_tyranids' ARCHIVE_BASE_TYRANIDS_18_NAME='warhammer_40_000_gladius_tyranids_1_13_03_72014.sh' ARCHIVE_BASE_TYRANIDS_18_MD5='1126da61c9bdc27a4c9c4cc9444ff87d' ARCHIVE_BASE_TYRANIDS_18_SIZE='1086' ARCHIVE_BASE_TYRANIDS_18_VERSION='1.13.3-gog72014' ARCHIVE_BASE_TYRANIDS_15_NAME='warhammer_40_000_gladius_tyranids_1_12_03_67548.sh' ARCHIVE_BASE_TYRANIDS_15_MD5='6fd672b4230bceebc496e7ce7aa455b4' ARCHIVE_BASE_TYRANIDS_15_SIZE='1400' ARCHIVE_BASE_TYRANIDS_15_VERSION='1.12.3-gog67548' ARCHIVE_BASE_TYRANIDS_12_NAME='warhammer_40_000_gladius_tyranids_1_11_04_64361.sh' ARCHIVE_BASE_TYRANIDS_12_MD5='53da0257c7ae0ca6c4b2712a70f8b666' ARCHIVE_BASE_TYRANIDS_12_SIZE='1400' ARCHIVE_BASE_TYRANIDS_12_VERSION='1.11.4-gog64361' ARCHIVE_BASE_TYRANIDS_7_NAME='warhammer_40_000_gladius_tyranids_1_10_01_00_57375.sh' ARCHIVE_BASE_TYRANIDS_7_MD5='30934475a2b0c8f794234d5e38f504cc' ARCHIVE_BASE_TYRANIDS_7_SIZE='1400' ARCHIVE_BASE_TYRANIDS_7_VERSION='1.10.1-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-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_20_NAME='warhammer_40_000_gladius_chaos_space_marines_1_14_03_77940.sh' ARCHIVE_BASE_CHAOS_20_MD5='4d3e181c0156ab28d81e4b8df4c3d1ba' ARCHIVE_BASE_CHAOS_20_SIZE='1086' ARCHIVE_BASE_CHAOS_20_VERSION='1.14.3-gog77940' ARCHIVE_BASE_CHAOS_20_URL='https://www.gog.com/game/warhammer_40000_gladius_chaos_space_marines' ARCHIVE_BASE_CHAOS_17_NAME='warhammer_40_000_gladius_chaos_space_marines_1_13_03_72014.sh' ARCHIVE_BASE_CHAOS_17_MD5='a7c63aa885dd1a5b51b2b5a3d55d4e21' ARCHIVE_BASE_CHAOS_17_SIZE='1086' ARCHIVE_BASE_CHAOS_17_VERSION='1.13.3-gog72014' ARCHIVE_BASE_CHAOS_14_NAME='warhammer_40_000_gladius_chaos_space_marines_1_12_03_67548.sh' ARCHIVE_BASE_CHAOS_14_MD5='5103e5a13f5e04f6a0d4ce2124ae9b8f' ARCHIVE_BASE_CHAOS_14_SIZE='1400' ARCHIVE_BASE_CHAOS_14_VERSION='1.12.3-gog67548' ARCHIVE_BASE_CHAOS_11_NAME='warhammer_40_000_gladius_chaos_space_marines_1_11_04_64361.sh' ARCHIVE_BASE_CHAOS_11_MD5='2c613e93f92197efb004a4d590f6412e' ARCHIVE_BASE_CHAOS_11_SIZE='1400' ARCHIVE_BASE_CHAOS_11_VERSION='1.11.4-gog64361' ARCHIVE_BASE_CHAOS_6_NAME='warhammer_40_000_gladius_chaos_space_marines_1_10_01_00_57375.sh' ARCHIVE_BASE_CHAOS_6_MD5='88542a8341638e1d51e2758c9886e2c6' ARCHIVE_BASE_CHAOS_6_SIZE='1400' ARCHIVE_BASE_CHAOS_6_VERSION='1.10.1-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-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_17_NAME='warhammer_40_000_gladius_t_au_1_14_03_77940.sh' ARCHIVE_BASE_TAU_17_MD5='e69fec137633403f9b37fa37d58da209' ARCHIVE_BASE_TAU_17_SIZE='1086' ARCHIVE_BASE_TAU_17_VERSION='1.14.3-gog77940' ARCHIVE_BASE_TAU_17_URL='https://www.gog.com/game/warhammer_40000_gladius_tau' ARCHIVE_BASE_TAU_14_NAME='warhammer_40_000_gladius_t_au_1_13_03_72014.sh' ARCHIVE_BASE_TAU_14_MD5='cc6b1b472357aafe1a92906dbac6ce56' ARCHIVE_BASE_TAU_14_SIZE='1086' ARCHIVE_BASE_TAU_14_VERSION='1.13.3-gog72014' ARCHIVE_BASE_TAU_11_NAME='warhammer_40_000_gladius_t_au_1_12_03_67548.sh' ARCHIVE_BASE_TAU_11_MD5='c0dd6e15c253f1b58a0d596fec8d1531' ARCHIVE_BASE_TAU_11_SIZE='1396' ARCHIVE_BASE_TAU_11_VERSION='1.12.3-gog67548' ARCHIVE_BASE_TAU_8_NAME='warhammer_40_000_gladius_t_au_1_11_04_64361.sh' ARCHIVE_BASE_TAU_8_MD5='b8d20922d142704e61dbb8dbe83ce2b0' ARCHIVE_BASE_TAU_8_SIZE='1400' ARCHIVE_BASE_TAU_8_VERSION='1.11.4-gog64361' ARCHIVE_BASE_TAU_3_NAME='warhammer_40_000_gladius_t_au_1_10_01_00_57375.sh' ARCHIVE_BASE_TAU_3_MD5='1f7770a75d1c846aca32f905cd4ce51f' ARCHIVE_BASE_TAU_3_SIZE='1400' ARCHIVE_BASE_TAU_3_VERSION='1.10.1-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-gog54377' ## Craftworld Aeldari ARCHIVE_BASE_AELDARI_15_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_14_03_77940.sh' ARCHIVE_BASE_AELDARI_15_MD5='73a817b4990d66ea7f938d82d0ec4bbf' ARCHIVE_BASE_AELDARI_15_SIZE='1086' ARCHIVE_BASE_AELDARI_15_VERSION='1.14.3-gog77940' ARCHIVE_BASE_AELDARI_15_URL='https://www.gog.com/game/warhammer_40000_gladius_craftworld_aeldari' ARCHIVE_BASE_AELDARI_12_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_13_03_72014.sh' ARCHIVE_BASE_AELDARI_12_MD5='18e5d21d0d2b202d746de192cc4370da' ARCHIVE_BASE_AELDARI_12_SIZE='1086' ARCHIVE_BASE_AELDARI_12_VERSION='1.13.3-gog72014' ARCHIVE_BASE_AELDARI_9_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_12_03_67548.sh' ARCHIVE_BASE_AELDARI_9_MD5='a9ed6a70658299ab82d2934f7b572151' ARCHIVE_BASE_AELDARI_9_SIZE='1400' ARCHIVE_BASE_AELDARI_9_VERSION='1.12.3-gog67548' ARCHIVE_BASE_AELDARI_6_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_11_04_64361.sh' ARCHIVE_BASE_AELDARI_6_MD5='2c2b76c50ee3d7c29fd24c8aea0fe6e0' ARCHIVE_BASE_AELDARI_6_SIZE='1400' ARCHIVE_BASE_AELDARI_6_VERSION='1.11.4-gog64361' ARCHIVE_BASE_AELDARI_1_NAME='warhammer_40_000_gladius_craftworld_aeldari_1_10_01_00_57375.sh' ARCHIVE_BASE_AELDARI_1_MD5='b3698a59f99611fb8431a76ea50ef35d' ARCHIVE_BASE_AELDARI_1_SIZE='1400' ARCHIVE_BASE_AELDARI_1_VERSION='1.10.1-gog57375' ## Adeptus Mechanicus ARCHIVE_BASE_MECHANICUS_8_NAME='warhammer_40_000_gladius_adeptus_mechanicus_1_14_03_77940.sh' ARCHIVE_BASE_MECHANICUS_8_MD5='ea312fa967f14ad4511bc178430aeda1' ARCHIVE_BASE_MECHANICUS_8_SIZE='1086' ARCHIVE_BASE_MECHANICUS_8_VERSION='1.14.3-gog77940' ARCHIVE_BASE_MECHANICUS_8_URL='https://www.gog.com/game/warhammer_40000_gladius_adeptus_mechanicus' ARCHIVE_BASE_MECHANICUS_5_NAME='warhammer_40_000_gladius_adeptus_mechanicus_1_13_03_72014.sh' ARCHIVE_BASE_MECHANICUS_5_MD5='7670878de137f0de17cdae93ded39f09' ARCHIVE_BASE_MECHANICUS_5_SIZE='1086' ARCHIVE_BASE_MECHANICUS_5_VERSION='1.13.3-gog72014' ARCHIVE_BASE_MECHANICUS_2_NAME='warhammer_40_000_gladius_adeptus_mechanicus_1_12_03_67548.sh' ARCHIVE_BASE_MECHANICUS_2_MD5='0be493045812d7ee50c5c7846b60151e' ARCHIVE_BASE_MECHANICUS_2_SIZE='1400' ARCHIVE_BASE_MECHANICUS_2_VERSION='1.12.3-gog67548' ## Adepta Sororitas ARCHIVE_BASE_SORORITAS_7_NAME='warhammer_40_000_gladius_adepta_sororitas_1_14_03_77940.sh' ARCHIVE_BASE_SORORITAS_7_MD5='2166533e2ed1efc020729e5b174a1721' ARCHIVE_BASE_SORORITAS_7_SIZE='1086' ARCHIVE_BASE_SORORITAS_7_VERSION='1.14.3-gog77940' ARCHIVE_BASE_SORORITAS_7_URL='https://www.gog.com/game/warhammer_40000_gladius_adepta_sororitas' ARCHIVE_BASE_SORORITAS_4_NAME='warhammer_40_000_gladius_adepta_sororitas_1_13_03_72014.sh' ARCHIVE_BASE_SORORITAS_4_MD5='6d588bac7b0e51c140f8cbb888b8de61' ARCHIVE_BASE_SORORITAS_4_SIZE='1086' ARCHIVE_BASE_SORORITAS_4_VERSION='1.13.3-gog72014' ARCHIVE_BASE_SORORITAS_1_NAME='warhammer_40_000_gladius_adepta_sororitas_1_12_03_67548.sh' ARCHIVE_BASE_SORORITAS_1_MD5='1c69d1ce8301b0fb42f10718a4271761' ARCHIVE_BASE_SORORITAS_1_SIZE='1400' ARCHIVE_BASE_SORORITAS_1_VERSION='1.12.3-gog67548' ## Drukhari ARCHIVE_BASE_DRUKHARI_4_NAME='warhammer_40_000_gladius_drukhari_1_14_03_77940.sh' ARCHIVE_BASE_DRUKHARI_4_MD5='f8ad53fe2b0eba0ff16089e2840fdc40' ARCHIVE_BASE_DRUKHARI_4_SIZE='1086' ARCHIVE_BASE_DRUKHARI_4_VERSION='1.14.3-gog77940' ARCHIVE_BASE_DRUKHARI_4_URL='https://www.gog.com/game/warhammer_40000_gladius_drukhari' ARCHIVE_BASE_DRUKHARI_1_NAME='warhammer_40_000_gladius_drukhari_1_13_03_72014.sh' ARCHIVE_BASE_DRUKHARI_1_MD5='9f04c3d2b819a9865f853fcf184df6fe' ARCHIVE_BASE_DRUKHARI_1_SIZE='1086' ARCHIVE_BASE_DRUKHARI_1_VERSION='1.13.3-gog72014' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' Data/*.dlc' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warhammer-40k-gladius.sh0000755000000000000000000001373414471751340016175 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Warhammer 40k: Gladius ### script_version=20241212.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='warhammer-40k-gladius' GAME_NAME='Warhammer 40,000: Gladius - Relics of War' ARCHIVE_BASE_3_NAME='warhammer_40_000_gladius_relics_of_war_1_14_03_77940.sh' ARCHIVE_BASE_3_MD5='3d47d62522615fb42e876c630c5bbbb0' ARCHIVE_BASE_3_SIZE='3558407' ARCHIVE_BASE_3_VERSION='1.14.3-gog77940' ARCHIVE_BASE_3_URL='https://www.gog.com/game/warhammer_40000_gladius_relics_of_war' ARCHIVE_BASE_0_NAME='warhammer_40_000_gladius_relics_of_war_1_13_03_72014.sh' ARCHIVE_BASE_0_MD5='6ff6665c0a2ead9b1807fcddb28a9a08' ARCHIVE_BASE_0_SIZE='3489255' ARCHIVE_BASE_0_VERSION='1.13.3-gog72014' ARCHIVE_BASE_OLDLIBS_9_NAME='warhammer_40_000_gladius_relics_of_war_1_12_03_67548.sh' ARCHIVE_BASE_OLDLIBS_9_MD5='9bbcc5e63c4793fddceea5d8b8fbe1d8' ARCHIVE_BASE_OLDLIBS_9_SIZE='3254164' ARCHIVE_BASE_OLDLIBS_9_VERSION='1.12.3-gog67548' ARCHIVE_BASE_OLDLIBS_8_NAME='warhammer_40_000_gladius_relics_of_war_1_11_04_64361.sh' ARCHIVE_BASE_OLDLIBS_8_MD5='eb7bcdf1a43f47dbc7407e309fd209a3' ARCHIVE_BASE_OLDLIBS_8_SIZE='3200000' ARCHIVE_BASE_OLDLIBS_8_VERSION='1.11.4-gog64361' ARCHIVE_BASE_OLDLIBS_7_NAME='warhammer_40_000_gladius_relics_of_war_1_10_01_00_57375.sh' ARCHIVE_BASE_OLDLIBS_7_MD5='924bba1e75fdc323d72f24eccc2856a7' ARCHIVE_BASE_OLDLIBS_7_SIZE='2900000' ARCHIVE_BASE_OLDLIBS_7_VERSION='1.10.1-gog57375' ARCHIVE_BASE_OLDLIBS_6_NAME='warhammer_40_000_gladius_relics_of_war_v1_09_03_00_54377.sh' ARCHIVE_BASE_OLDLIBS_6_MD5='f3271281015c34f1ce3c6974998d886f' ARCHIVE_BASE_OLDLIBS_6_SIZE='2900000' ARCHIVE_BASE_OLDLIBS_6_VERSION='1.9.3-gog54377' ARCHIVE_BASE_OLDLIBS_5_NAME='warhammer_40_000_gladius_relics_of_war_1_08_04_01_49548.sh' ARCHIVE_BASE_OLDLIBS_5_MD5='d2e88289b1b7b1ebe1037d999f14578e' ARCHIVE_BASE_OLDLIBS_5_SIZE='2600000' ARCHIVE_BASE_OLDLIBS_5_VERSION='1.8.4.1-gog49548' ARCHIVE_BASE_OLDLIBS_4_NAME='warhammer_40_000_gladius_relics_of_war_1_07_04_44200.sh' ARCHIVE_BASE_OLDLIBS_4_MD5='b8534d0956159736ee49f207da516ba6' ARCHIVE_BASE_OLDLIBS_4_SIZE='2600000' ARCHIVE_BASE_OLDLIBS_4_VERSION='1.7.4-gog44200' ARCHIVE_BASE_OLDLIBS_3_NAME='warhammer_40_000_gladius_relics_of_war_1_06_4b_41966.sh' ARCHIVE_BASE_OLDLIBS_3_MD5='dbdcdd7450f009ffd2c5feae2fbc9fd2' ARCHIVE_BASE_OLDLIBS_3_SIZE='2300000' ARCHIVE_BASE_OLDLIBS_3_VERSION='1.6.4b-gog41966' ARCHIVE_BASE_OLDLIBS_2_NAME='warhammer_40_000_gladius_relics_of_war_1_05_01_36614.sh' ARCHIVE_BASE_OLDLIBS_2_MD5='faf0d5df1a800d8102bdf20309aa9b6c' ARCHIVE_BASE_OLDLIBS_2_SIZE='2200000' ARCHIVE_BASE_OLDLIBS_2_VERSION='1.5.1-gog36614' ARCHIVE_BASE_OLDLIBS_1_NAME='warhammer_40_000_gladius_relics_of_war_1_04_07_36064.sh' ARCHIVE_BASE_OLDLIBS_1_MD5='d42c72ef55cb2a42487f8173d26b2260' ARCHIVE_BASE_OLDLIBS_1_SIZE='2300000' ARCHIVE_BASE_OLDLIBS_1_VERSION='1.4.7-gog36064' ARCHIVE_BASE_OLDLIBS_0_NAME='warhammer_40_000_gladius_relics_of_war_1_03_08_32868.sh' ARCHIVE_BASE_OLDLIBS_0_MD5='0739ede31aa10db01b2afef9f66c5e12' ARCHIVE_BASE_OLDLIBS_0_SIZE='2100000' ARCHIVE_BASE_OLDLIBS_0_VERSION='1.3.8-gog32868' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_RELATIVE_PATH='Binaries/Linux-x86_64' CONTENT_LIBS_BIN_FILES=' libavcodec.so.58 libavformat.so.58 libavutil.so.56 libcrypto.so.1.1 libEOSSDK-Linux-Shipping.so libjemalloc.so.1 libjpeg.so.8 libnettle.so.6 libswresample.so.3' ## Include libraries shipped with old game builds. CONTENT_LIBS_BIN_FILES_OLDLIBS=' libavcodec.so.58 libavformat.so.58 libavutil.so.56 libcrypto.so.1.1 libboost_locale.so.1.65.1 libboost_system.so.1.65.1 libboost_thread.so.1.65.1 libEOSSDK-Linux-Shipping.so libicudata.so.60 libicui18n.so.60 libicuuc.so.60 libjemalloc.so.1 libjpeg.so.8 libswresample.so.3' ## The game binary is linked against libsteam_api.so. CONTENT_LIBS0_BIN_RELATIVE_PATH='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' ## TODO: Check why a regular symlinks farm prefix can not be used APP_MAIN_PREFIX_TYPE='none' APP_MAIN_EXE='Binaries/Linux-x86_64/Gladius.bin' APP_MAIN_ICON='Data/Video/Textures/Icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libboost_locale.so.1.74.0 libc.so.6 libcurl.so.4 libdl.so.2 libfreetype.so.6 libgcc_s.so.1 libglfw.so.3 libminiupnpc.so.17 libm.so.6 libopenal.so.1 libpng16.so.16 libpthread.so.0 librt.so.1 libstdc++.so.6 libvorbisfile.so.3 libvulkan.so.1 libz.so.1' ## Set dependencies for old game builds. PKG_BIN_DEPENDENCIES_LIBRARIES_OLDLIBS=' libc.so.6 libcurl.so.4 libdl.so.2 libfreetype.so.6 libgcc_s.so.1 libglfw.so.3 libminiupnpc.so.17 libm.so.6 libopenal.so.1 libpng16.so.16 libpthread.so.0 librt.so.1 libstdc++.so.6 libvorbisfile.so.3 libvulkan.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd Binaries/Linux-x86_64 ./Gladius.bin "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warhammer-40k-rogue-trader.sh0000755000000000000000000002776614471751340017157 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=20250212.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='warhammer-40k-rogue-trader' GAME_NAME='Warhammer 40,000: Rogue Trader' ARCHIVE_BASE_5_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404).exe' ARCHIVE_BASE_5_MD5='71407e5f100c9afb88d8a876acbe51b7' ARCHIVE_BASE_5_TYPE='innosetup' ARCHIVE_BASE_5_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-1.bin' ARCHIVE_BASE_5_PART1_MD5='451f0a5aac0a3da0c9e8fa3979eff824' ARCHIVE_BASE_5_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-2.bin' ARCHIVE_BASE_5_PART2_MD5='14fb662df8cd6819ddfce0450c8ec36a' ARCHIVE_BASE_5_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-3.bin' ARCHIVE_BASE_5_PART3_MD5='f80074c63d24b5520ec88654285c5468' ARCHIVE_BASE_5_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-4.bin' ARCHIVE_BASE_5_PART4_MD5='48c37e52d4c3427aed8b6bd91620bcf9' ARCHIVE_BASE_5_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-5.bin' ARCHIVE_BASE_5_PART5_MD5='bc344f584140b3f6d667d9e879cc8fcc' ARCHIVE_BASE_5_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-6.bin' ARCHIVE_BASE_5_PART6_MD5='621b0d6aa656fb9a9d4e996b11f36d3e' ARCHIVE_BASE_5_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-7.bin' ARCHIVE_BASE_5_PART7_MD5='f4824d1c931dab3d9e03d18fda2154c1' ARCHIVE_BASE_5_PART8_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.11_release_(79404)-8.bin' ARCHIVE_BASE_5_PART8_MD5='f7bb783d1b27594b3628838afe9db6d2' ARCHIVE_BASE_5_SIZE='37048733' ARCHIVE_BASE_5_VERSION='1.3.1.11-gog79404' ARCHIVE_BASE_5_URL='https://www.gog.com/game/warhammer_40000_rogue_trader' ARCHIVE_BASE_4_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738).exe' ARCHIVE_BASE_4_MD5='13a67e2d41eaa13be8b5b029f5689960' ARCHIVE_BASE_4_TYPE='innosetup' ARCHIVE_BASE_4_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-1.bin' ARCHIVE_BASE_4_PART1_MD5='dd82d3952855dccbacea503ecb474d29' ARCHIVE_BASE_4_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-2.bin' ARCHIVE_BASE_4_PART2_MD5='7e9d9ec0ed8b3464b3bc69b1b4da9cac' ARCHIVE_BASE_4_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-3.bin' ARCHIVE_BASE_4_PART3_MD5='cea9076d2ca033c8c19d0ae430e1e360' ARCHIVE_BASE_4_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-4.bin' ARCHIVE_BASE_4_PART4_MD5='511ea6681bc8bdc30b2fbcecebc0eb93' ARCHIVE_BASE_4_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-5.bin' ARCHIVE_BASE_4_PART5_MD5='a14376472e60896a5df65ee827f6b44e' ARCHIVE_BASE_4_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-6.bin' ARCHIVE_BASE_4_PART6_MD5='dde090355aa02688b2221654d28d578d' ARCHIVE_BASE_4_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-7.bin' ARCHIVE_BASE_4_PART7_MD5='ce048a3df557b10ec1b9aed3829d4a01' ARCHIVE_BASE_4_PART8_NAME='setup_warhammer_40000_rogue_trader_windows_1.3.1.6_release_(78738)-8.bin' ARCHIVE_BASE_4_PART8_MD5='2c92fb4be98fd9b1dd1df64d1054aa92' ARCHIVE_BASE_4_SIZE='37053756' ARCHIVE_BASE_4_VERSION='1.3.1.6-gog78738' ARCHIVE_BASE_3_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703).exe' ARCHIVE_BASE_3_MD5='02a4073b04dbbf73724860397b66af7f' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-1.bin' ARCHIVE_BASE_3_PART1_MD5='dc8e9b260bbc886a11f6994d61bdbb46' ARCHIVE_BASE_3_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-2.bin' ARCHIVE_BASE_3_PART2_MD5='65edfab770311c2d7b840f374628b3da' ARCHIVE_BASE_3_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-3.bin' ARCHIVE_BASE_3_PART3_MD5='6627554f24158c5b0650c58f9a95395e' ARCHIVE_BASE_3_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-4.bin' ARCHIVE_BASE_3_PART4_MD5='4a30eeb23fc592041127e6615ce65bcf' ARCHIVE_BASE_3_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-5.bin' ARCHIVE_BASE_3_PART5_MD5='d249a8e0769661359b5d0467a7fb065b' ARCHIVE_BASE_3_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-6.bin' ARCHIVE_BASE_3_PART6_MD5='067db90eec212272951f04324b5883f4' ARCHIVE_BASE_3_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.1.26_release_(77703)-7.bin' ARCHIVE_BASE_3_PART7_MD5='ded5b6136305429254afcbc8f82db455' ARCHIVE_BASE_3_SIZE='36237881' ARCHIVE_BASE_3_VERSION='1.2.1.26-gog77703' ARCHIVE_BASE_2_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506).exe' ARCHIVE_BASE_2_MD5='28277602abf5481ed6ef4f58c5769d17' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-1.bin' ARCHIVE_BASE_2_PART1_MD5='2ac1b1e04feacc93d734a4f8d409d549' ARCHIVE_BASE_2_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-2.bin' ARCHIVE_BASE_2_PART2_MD5='93d73c1420af6a771773c2be6ca52d16' ARCHIVE_BASE_2_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-3.bin' ARCHIVE_BASE_2_PART3_MD5='66435951336c29903538ac094f9b1e3d' ARCHIVE_BASE_2_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-4.bin' ARCHIVE_BASE_2_PART4_MD5='0256c674ed680b53b0afd83c58ad803d' ARCHIVE_BASE_2_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-5.bin' ARCHIVE_BASE_2_PART5_MD5='e9b1a1a80da7efa72dd98ed0c526c3c9' ARCHIVE_BASE_2_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-6.bin' ARCHIVE_BASE_2_PART6_MD5='f0ff7ff188125429a042d8a867c1811a' ARCHIVE_BASE_2_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.2.0.30_release_(74506)-7.bin' ARCHIVE_BASE_2_PART7_MD5='4ec080aace5f303e6232464617807820' ARCHIVE_BASE_2_SIZE='36502107' ARCHIVE_BASE_2_VERSION='1.2.0.30-gog74506' ARCHIVE_BASE_1_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681).exe' ARCHIVE_BASE_1_MD5='4dacb9055aefe3aba3c0b9d69f1e7bbe' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-1.bin' ARCHIVE_BASE_1_PART1_MD5='0992b9315611a76db8eb3ec16af01437' ARCHIVE_BASE_1_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-2.bin' ARCHIVE_BASE_1_PART2_MD5='8390e0d884653541edf3d489cf069aab' ARCHIVE_BASE_1_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-3.bin' ARCHIVE_BASE_1_PART3_MD5='0c8dcda2d01a9db6d48750213454ae46' ARCHIVE_BASE_1_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-4.bin' ARCHIVE_BASE_1_PART4_MD5='3857bdce47b4d311c1712eb8bf96e76d' ARCHIVE_BASE_1_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-5.bin' ARCHIVE_BASE_1_PART5_MD5='498fd37ca55b4082a5620e0892ef7e85' ARCHIVE_BASE_1_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-6.bin' ARCHIVE_BASE_1_PART6_MD5='c471fa41f77b39003e4cbcc5177636e2' ARCHIVE_BASE_1_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-7.bin' ARCHIVE_BASE_1_PART7_MD5='1d9ee45fd389fac0a34c9154f52068cf' ARCHIVE_BASE_1_PART8_NAME='setup_warhammer_40000_rogue_trader_windows_1.1.58.505_release_(72681)-8.bin' ARCHIVE_BASE_1_PART8_MD5='d36f057b4f24c2c4f0a6fe8341d258f4' ARCHIVE_BASE_1_SIZE='37037198' ARCHIVE_BASE_1_VERSION='1.1.58.505-gog72681' ARCHIVE_BASE_1_URL='https://www.gog.com/game/warhammer_40000_rogue_trader' ARCHIVE_BASE_0_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073).exe' ARCHIVE_BASE_0_MD5='adecb272b3abcafcdadcc661fd0fa16a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-1.bin' ARCHIVE_BASE_0_PART1_MD5='750087be34c3e067e8f117cb75abf01b' ARCHIVE_BASE_0_PART2_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-2.bin' ARCHIVE_BASE_0_PART2_MD5='3ac14fc89b7770aaa91ace86b5d77fa0' ARCHIVE_BASE_0_PART3_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-3.bin' ARCHIVE_BASE_0_PART3_MD5='9d75b578aff00669425099c77d39c946' ARCHIVE_BASE_0_PART4_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-4.bin' ARCHIVE_BASE_0_PART4_MD5='4873f86957ee03b4c6d5a9b467300d43' ARCHIVE_BASE_0_PART5_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-5.bin' ARCHIVE_BASE_0_PART5_MD5='e63da686a49e98310fdc26a426d94fd2' ARCHIVE_BASE_0_PART6_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-6.bin' ARCHIVE_BASE_0_PART6_MD5='71395b57d293fabd7e2e930523cbf909' ARCHIVE_BASE_0_PART7_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-7.bin' ARCHIVE_BASE_0_PART7_MD5='e172106a1819cf3ff50229d01986ebbd' ARCHIVE_BASE_0_PART8_NAME='setup_warhammer_40000_rogue_trader_windows_1.0.89.426_modded_(70073)-8.bin' ARCHIVE_BASE_0_PART8_MD5='cd37f515a987c38b8bbef29c073f29f9' ARCHIVE_BASE_0_SIZE='37034784' ARCHIVE_BASE_0_VERSION='1.0.89.426-gog70073' UNITY3D_NAME='wh40krt' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_DATA_BUNDLES_SCENES_1_FILES=' bundles/[a-p]*.scenes' CONTENT_GAME_DATA_BUNDLES_SCENES_2_FILES=' bundles/*.scenes' CONTENT_GAME_DATA_BUNDLES_UNIT_FILES=' bundles/*.unit' CONTENT_GAME_DATA_BUNDLES_FILES=' bundles' CONTENT_GAME0_DATA_FILES=' whrtmodificationtemplate-release.rar' ## While the game works with the default wined3d renderer, ## performances are much better when using dxvk instead. WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Owlcat Games/Warhammer 40000 Rogue Trader' PACKAGES_LIST=' PKG_BIN PKG_DATA_BUNDLES_SCENES_1 PKG_DATA_BUNDLES_SCENES_2 PKG_DATA_BUNDLES_UNIT PKG_DATA_BUNDLES PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_BUNDLES' PKG_DATA_BUNDLES_ID="${PKG_DATA_ID}-bundles" PKG_DATA_BUNDLES_DESCRIPTION="$PKG_DATA_DESCRIPTION - bundles" PKG_DATA_BUNDLES_DEPENDENCIES_SIBLINGS=' PKG_DATA_BUNDLES_SCENES_1 PKG_DATA_BUNDLES_SCENES_2 PKG_DATA_BUNDLES_UNIT' PKG_DATA_BUNDLES_SCENES_ID="${PKG_DATA_BUNDLES_ID}-scenes" PKG_DATA_BUNDLES_SCENES_1_ID="${PKG_DATA_BUNDLES_SCENES_ID}-1" PKG_DATA_BUNDLES_SCENES_2_ID="${PKG_DATA_BUNDLES_SCENES_ID}-2" PKG_DATA_BUNDLES_SCENES_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - scenes" PKG_DATA_BUNDLES_SCENES_1_DESCRIPTION="$PKG_DATA_BUNDLES_SCENES_DESCRIPTION - 1" PKG_DATA_BUNDLES_SCENES_2_DESCRIPTION="$PKG_DATA_BUNDLES_SCENES_DESCRIPTION - 2" PKG_DATA_BUNDLES_UNIT_ID="${PKG_DATA_BUNDLES_ID}-unit" PKG_DATA_BUNDLES_UNIT_DESCRIPTION="$PKG_DATA_BUNDLES_DESCRIPTION - unit" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Drop Steam-specific stuff. ## --force is used because it is not included in all releases. rm --force --recursive 'steam workshop tool' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-warlords-battlecry-2.sh0000755000000000000000000000467514471751340016157 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Warlords Battlecry 2 ### script_version=20241125.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='warlords-battlecry-2' GAME_NAME='Warlords Battlecry Ⅱ' ARCHIVE_BASE_1_NAME='setup_warlords_battlecry_2_1.04_(30487).exe' ARCHIVE_BASE_1_MD5='25cf7418f5b954b97fc0e8b6d32039f2' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='930000' ARCHIVE_BASE_1_VERSION='1.04-gog30487' ARCHIVE_BASE_1_URL='https://www.gog.com/game/warlords_battlecry_2' ARCHIVE_BASE_0_NAME='setup_warlords_battlecry2_2.0.0.4.exe' ARCHIVE_BASE_0_MD5='baa54ca0285182d18d532abfcbb8769f' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='940000' ARCHIVE_BASE_0_VERSION='1.04-gog2.0.0.4' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' terrain.cfg binkw32.dll cpuinf32.dll mss32.dll wetstd32.dll battlecry ii.exe *.asi *.cfg *.m3d *.ini' CONTENT_GAME_DATA_FILES=' campaignscenario customai customunitai data documentation english events fonts herodata music namingsets scenario soundfx tutorial video war4gfx.xcg war4int.xci wbc.dat *.xcr' CONTENT_DOC_DATA_FILES=' *.pdf' USER_PERSISTENT_FILES=' *.cfg *.ini *.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Warlords Battlecry II' WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='battlecry ii.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-wasteland-2.sh0000755000000000000000000001226014471751340014302 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=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='wasteland-2' GAME_NAME='Wasteland 2' GAME_ID_CLASSIC="$GAME_ID" GAME_NAME_CLASSIC="$GAME_NAME" GAME_ID_DIRECTORSCUT="${GAME_ID}-directors-cut" GAME_NAME_DIRECTORSCUT="$GAME_NAME - Directorʼs Cut" # Archives ## Wasteland 2 (classic) ARCHIVE_BASE_CLASSIC_0_NAME='gog_wasteland_2_2.9.0.14.sh' ARCHIVE_BASE_CLASSIC_0_MD5='8421db3519ed0074ff2647f5ea53f6f6' ARCHIVE_BASE_CLASSIC_0_SIZE='20000000' ARCHIVE_BASE_CLASSIC_0_VERSION='1.0-gog2.9.0.14' ARCHIVE_BASE_CLASSIC_0_URL='https://www.gog.com/game/wasteland_2_directors_cut_digital_classic_edition' ## Wasteland 2 Director's Cut ARCHIVE_BASE_DIRECTORSCUT_0_NAME='gog_wasteland_2_director_s_cut_2.3.0.5.sh' ARCHIVE_BASE_DIRECTORSCUT_0_MD5='dc697b13e1f08de606add7684b5b3f78' ARCHIVE_BASE_DIRECTORSCUT_0_SIZE='16000000' ARCHIVE_BASE_DIRECTORSCUT_0_VERSION='1.1.92788-gog2.3.0.5' ARCHIVE_BASE_DIRECTORSCUT_0_URL='https://www.gog.com/game/wasteland_2_directors_cut_digital_classic_edition' UNITY3D_NAME='WL2' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_DATA_SCENES_AZ_FILES=" ${UNITY3D_NAME}_Data/Streaming/Scenes/ArizonaWorldMap.unity3d ${UNITY3D_NAME}_Data/Streaming/Scenes/AZ_*.unity3d ${UNITY3D_NAME}_Data/Streaming/Scenes/AZ??_*.unity3d ${UNITY3D_NAME}_Data/Streaming/Scenes/az??_*.unity3d" CONTENT_GAME_DATA_SCENES_CA_FILES=" ${UNITY3D_NAME}_Data/Streaming/Scenes/CA_*.unity3d ${UNITY3D_NAME}_Data/Streaming/Scenes/CA??_*.unity3d" CONTENT_GAME_DATA_RESOURCES_FILES_DIRECTORSCUT=" ${UNITY3D_NAME}_Data/*.resource" CONTENT_DOC_DATA_PATH='data/noarch/docs' CONTENT_DOC_DATA_FILES=' Map.pdf Wasteland 2 Ranger Field Manual.pdf Wasteland 2 Reference Guide.pdf' ## Work around the engine overuse of file descriptors. APP_MAIN_PRERUN=' # Work around the engine overuse of file descriptors ## 4096 is an arbitrary value, 4 times the default (1024), that seems to work for all setups. if ! ulimit -n 4096; then { printf "\\n\\033[1;33mWarning:\\033[0m\\n" printf "Your current shell interpreter has no support for ulimit -n.\\n" printf "This might lead to unending loading screens if the game engine hits the file descriptors use limit.\\n" printf "\\n" } > /dev/stderr fi ' # Packages PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_DESCRIPTION='data' ## Wasteland 2 (classic) PACKAGES_LIST_CLASSIC=' PKG_BIN PKG_DATA_SCENES_AZ PKG_DATA_SCENES_CA PKG_DATA' PKG_BIN_ARCH_CLASSIC='32' 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' PKG_DATA_ID_CLASSIC="${GAME_ID_CLASSIC}-data" PKG_DATA_DEPENDENCIES_SIBLINGS_CLASSIC=' PKG_DATA_SCENES_AZ PKG_DATA_SCENES_CA' PKG_DATA_SCENES_AZ_ID="${PKG_DATA_ID_CLASSIC}-scenes-az" PKG_DATA_SCENES_AZ_DESCRIPTION="$PKG_DATA_DESCRIPTION - Arizona scenes" PKG_DATA_SCENES_CA_ID="${PKG_DATA_ID_CLASSIC}-scenes-ca" PKG_DATA_SCENES_CA_DESCRIPTION="$PKG_DATA_DESCRIPTION - California scenes" ## Wasteland 2 Director's Cut PACKAGES_LIST_DIRECTORSCUT=' PKG_BIN PKG_DATA_RESOURCES PKG_DATA' PKG_BIN_ARCH_DIRECTORSCUT='64' 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' PKG_DATA_ID_DIRECTORSCUT="${GAME_ID_DIRECTORSCUT}-data" PKG_DATA_DEPENDENCIES_SIBLINGS_DIRECTORSCUT=' PKG_DATA_RESOURCES' 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" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-werewolf-the-apocalypse-forest-stories-series.sh0000755000000000000000000000566314471751340023216 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Werewolf: The Apocalypse - Forest Stories series: # - Werewolf: The Apocalypse - Heart of the Forest # - Werewolf: The Apocalypse - Purgatory ### script_version=20250103.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_HEART='werewolf-the-apocalypse-heart-of-the-forest' GAME_NAME_HEART='Werewolf: The Apocalypse - Heart of the Forest' GAME_ID_PURGATORY='werewolf-the-apocalypse-purgatory' GAME_NAME_PURGATORY='Werewolf: The Apocalypse - Purgatory' ARCHIVE_BASE_HEART_0_NAME='werewolf_the_apocalypse_heart_of_the_forest_1_0_13_2010191537_42086.sh' ARCHIVE_BASE_HEART_0_MD5='8f8655786c9eed74746c9cc151b5543b' ARCHIVE_BASE_HEART_0_SIZE='902811' ARCHIVE_BASE_HEART_0_VERSION='1.0.13-gog42086' ARCHIVE_BASE_HEART_0_URL='https://www.gog.com/game/werewolf_the_apocalypse_heart_of_the_forest' ARCHIVE_BASE_PURGATORY_0_NAME='purgatory_1_0_13_2406131256_74723.sh' ARCHIVE_BASE_PURGATORY_0_MD5='eac63ba42adc2614e66e0cd733c019fb' ARCHIVE_BASE_PURGATORY_0_SIZE='1069791' ARCHIVE_BASE_PURGATORY_0_VERSION='1.0.13-gog74723' ARCHIVE_BASE_PURGATORY_0_URL='https://www.gog.com/game/werewolf_the_apocalypse_purgatory' UNITY3D_NAME_HEART='Heart of the Forest' UNITY3D_NAME_PURGATORY='Purgatory' UNITY3D_PLUGINS_HEART=' libfmodL.so libfmod.so libfmodstudioL.so libfmodstudio.so libgvraudio.so libresonanceaudio.so' UNITY3D_PLUGINS_PURGATORY=' libfmodstudio.so libresonanceaudio.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES_HEART=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 libresolv.so.2 librt.so.1 libstdc++.so.6 libz.so.1' PKG_BIN_DEPENDENCIES_LIBRARIES_PURGATORY=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID_HEART="${GAME_ID_HEART}-data" PKG_DATA_ID_PURGATORY="${GAME_ID_PURGATORY}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-whispers-of-a-machine.sh0000755000000000000000000000325514471751340016253 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=20250110.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='whispers-of-a-machine' GAME_NAME='Whispers of a Machine' ARCHIVE_BASE_0_NAME='setup_whispers_of_a_machine_1.0.6d_(35876).exe' ARCHIVE_BASE_0_MD5='92244849a09e9b47a290618acd9dc9b6' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='768282' ARCHIVE_BASE_0_VERSION='1.0.6d-gog35876' ARCHIVE_BASE_0_URL='https://www.gog.com/game/whispers_of_a_machine' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' acsetup.cfg whispers.exe *.vox *.tra' APP_MAIN_SCUMMID='ags:whispersofamachine' APP_MAIN_ICON='whispers.exe' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-world-of-goo-1.sh0000755000000000000000000000653114471751340014636 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 1 ### script_version=20241027.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='world-of-goo-1' GAME_NAME='World of Goo' # Archives ## Sold from gog.com ARCHIVE_BASE_GOG_0_NAME='world_of_goo_1_51_29337.sh' ARCHIVE_BASE_GOG_0_MD5='f3566d859e824862b4dc14f94b15cafa' ARCHIVE_BASE_GOG_0_SIZE='186520' ARCHIVE_BASE_GOG_0_VERSION='1.51-gog29337' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/world_of_goo' ## Formerly sold from humblebundle.com, this archive is no longer available for sale. ARCHIVE_BASE_HUMBLE_0_NAME='WorldOfGoo.Linux.1.53.sh' ARCHIVE_BASE_HUMBLE_0_MD5='9049f4fccf98ba79ac238a8b414e053a' ARCHIVE_BASE_HUMBLE_0_SIZE='210000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.53-humble' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_GAME_BIN64_RELATIVE_PATH_HUMBLE='x86_64' CONTENT_GAME_BIN64_FILES=' WorldOfGoo.bin.x86_64' CONTENT_GAME_BIN32_RELATIVE_PATH_HUMBLE='x86' CONTENT_GAME_BIN32_FILES=' WorldOfGoo.bin.x86' CONTENT_GAME_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_GAME_DATA_FILES=' game' CONTENT_DOC_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_DOC_DATA_PATH_GOG='data/noarch/docs' CONTENT_DOC_DATA_FILES=' readme.html linux-issues.txt' APP_MAIN_EXE_BIN64='WorldOfGoo.bin.x86_64' APP_MAIN_EXE_BIN32='WorldOfGoo.bin.x86' APP_MAIN_ICON='game/gooicon.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libm.so.6 libSDL2-2.0.so.0 libSDL2_mixer-2.0.so.0 libstdc++.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" ## Ensure easy upgrades from packages generated with pre-20240805.1 scripts PKG_BIN64_PROVIDES="${PKG_BIN64_PROVIDES:-} world-of-goo" PKG_BIN32_PROVIDES="${PKG_BIN32_PROVIDES:-} world-of-goo" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## Ensure easy upgrades from packages generated with pre-20240805.1 scripts PKG_DATA_PROVIDES="${PKG_DATA_PROVIDES:-} world-of-goo-data" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-world-of-goo-2.sh0000755000000000000000000000523114471751340014633 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # World of Goo 2 ### script_version=20250227.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='world-of-goo-2' GAME_NAME='World of Goo 2' ARCHIVE_BASE_1_NAME='World_of_Goo_2-x86_64-1.0.12478.15.AppImage' ARCHIVE_BASE_1_MD5='3748d37805bd4bc96f1b19d108d10f9d' ARCHIVE_BASE_1_SIZE='903954' ARCHIVE_BASE_1_VERSION='1.0.12478-2dboy' ARCHIVE_BASE_1_URL='https://worldofgoo2.com/#getitnow' ARCHIVE_BASE_0_NAME='World_of_Goo_2-x86_64.12329.171.AppImage' ARCHIVE_BASE_0_MD5='011faf15abea1c51837e6e2683c80042' ARCHIVE_BASE_0_SIZE='896550' ARCHIVE_BASE_0_VERSION='1.0.12329-2dboy' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' WorldOfGoo2' CONTENT_GAME_DATA_FILES=' game WorldOfGoo2.png' APP_MAIN_EXE='WorldOfGoo2' APP_MAIN_ICON='WorldOfGoo2.png' ## Prevent a crash on launch when the wayland backend of SDL is used ## This crash happens even when forcing the use of system-provided SDL APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # Prevent a crash on launch when the wayland backend of SDL is used if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' ## The game will segfault when loading the world selector if started through a symlinks farm APP_MAIN_PREFIX_TYPE='none' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl-gnutls.so.4 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libX11.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Force the use of system-provided SDL APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-worms-2.sh0000755000000000000000000000455214471751340013474 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec set -o errexit ### # Worms 2 ### script_version=20241125.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='worms-2' GAME_NAME='Worms 2' ARCHIVE_BASE_0_NAME='setup_worms2_2.0.0.23.exe' ARCHIVE_BASE_0_MD5='bbe752d1b716432bb67e574ad9f3e9f3' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='190000' ARCHIVE_BASE_0_VERSION='1.05-gog2.0.0.23' ARCHIVE_BASE_0_URL='https://www.gog.com/game/worms_2' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' binaries *.dll *.exe' CONTENT_GAME_DATA_FILES=' data levels music options saves teams weapons stats.txt template.bmp *.wmv' CONTENT_DOC_DATA_FILES=' manual.pdf patch.txt' USER_PERSISTENT_DIRECTORIES=' levels options saves teams weapons' USER_PERSISTENT_FILES=' stats.txt data/*.dat' ## Running the game in a virtual desktop prevents it from being stuck into a corner of the screen. WINE_VIRTUAL_DESKTOP='640x480' APP_MAIN_EXE='frontend.exe' ## Play the introduction videos on launch APP_MAIN_PRERUN=' # Play the introduction videos on launch RANDOM_MOVIE=$(find . -mindepth 1 -maxdepth 1 -name "*.wmv" ! -name "intro.wmv" | shuf --head-count=1) mpv --fs --no-osc intro.wmv mpv --fs --no-osc "$RANDOM_MOVIE" ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_COMMANDS=' mpv' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-worms-armageddon.sh0000755000000000000000000000616514471751340015436 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=20241230.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='worms-armageddon' GAME_NAME='Worms: Armageddon' ARCHIVE_BASE_3_NAME='setup_worms_armageddon_gog-3.8.1_(43454).exe' ARCHIVE_BASE_3_MD5='f84e60ba11363219c582a4ff65301692' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_SIZE='648070' ARCHIVE_BASE_3_VERSION='3.8.1-gog43454' ARCHIVE_BASE_3_URL='https://www.gog.com/game/worms_armageddon' ARCHIVE_BASE_2_NAME='setup_worms_armageddon_gog-2_(40354).exe' ARCHIVE_BASE_2_MD5='db2087029ee8c069c9006ebeedc76bbf' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='650000' ARCHIVE_BASE_2_VERSION='3.8-gog40354' ARCHIVE_BASE_1_NAME='setup_worms_armageddon_gog-7_(40119).exe' ARCHIVE_BASE_1_MD5='8e904d462327917452a47572a38b772a' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='660000' ARCHIVE_BASE_1_VERSION='3.8-gog40119' ARCHIVE_BASE_0_NAME='setup_worms_armageddon_2.0.0.2.exe' ARCHIVE_BASE_0_MD5='7f0bb89729662ebe74b7c9c2cd97d1c8' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='570000' ARCHIVE_BASE_0_VERSION='3.7.2.1-gog2.0.0.2' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' CONTENT_GAME_BIN_FILES=' lfcmp10n.dll ltfil10n.dll lfbmp10n.dll ltkrn10n.dll lflmb10n.dll lftga10n.dll wa.exe user/bankeditor.exe' ## TODO: Check if the Steam library is required CONTENT_GAME0_BIN_FILES=' steam_api.dll' CONTENT_GAME_DATA_FILES=' data fesfx graphics tweaks user' CONTENT_GAME0_DATA_RELATIVE_PATH='__support' CONTENT_GAME0_DATA_FILES=' save' CONTENT_DOC_DATA_FILES=' wa_manual.pdf worms armageddon update documentation.rtf' USER_PERSISTENT_DIRECTORIES=' save user' USER_PERSISTENT_FILES=' graphics/font.bmp' APP_MAIN_EXE='wa.exe' ## Create a required empty file prior to game run APP_MAIN_PRERUN=' # Create a required empty file prior to game run touch steam.dat ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-zachtronics.sh0000755000000000000000000002230414471751340014510 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: # - SpaceChem # - Opus Magnum # - Exapunks # - Eliza # - Molek-Syntez # - Möbius Front '83 # - Last Call BBS # - Zachtronics Solitaire Collection ### script_version=20241124.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' 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' ## TODO: Maybe Spacechem could be moved to a dedicated game script, ## as it is the only game requiring specific code 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 # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # SpaceChem - Set required execution permission on the rgb2theora binary # This binary is used to generate .ogv video clips from puzzle solutions case "$(current_archive)" in ('ARCHIVE_BASE_SPACECHEM_'*) chmod 755 'rgb2theora' ;; esac ) # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 LICENSE0000644000000000000000000000363214471751340010573 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 © 2020 Hoël Bézier Copyright © 2020 macaron Copyright © 2020 Fabien Givors Copyright © 2021 Anna Lea Copyright © 2021 HS-157 Copyright © 2021 Hubert Ray All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright holder or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. Makefile0000644000000000000000000000455114471751340011227 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 collections_path = $(DESTDIR)$(datadir)/play.it/collections # Install the game scripts .PHONY: install uninstall install: install -D --mode=755 --target-directory=$(collections_path)/$(collection_name) games/* uninstall: rm $(collections_path)/$(collection_name)/play-*.sh rmdir -p --ignore-fail-on-non-empty $(collections_path)/$(collection_name) # Generate tarballs, for easier packaging .PHONY: dist ## The generated tarball is signed with gpg by default, ## NO_SIGN should be set to a non-0 value to skip the signature. NO_SIGN := 0 dist: DATE := $(shell date +%F) dist: TARBALL := $(collection_name)_$(DATE).tar.gz dist: TAR_OPTIONS := --sort=name --mtime=2023-08-25 --owner=root:0 --group=root:0 --use-compress-program='gzip --no-name' dist: games/*.sh LICENSE Makefile 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 # Run syntax checks, relying on ShellCheck GAME_SCRIPTS := $(wildcard games/play-*.sh) GAME_SCRIPTS_TESTS := $(addprefix shellcheck_, $(GAME_SCRIPTS)) .PHONY: check $(GAME_SCRIPTS_TESTS) check: $(GAME_SCRIPTS_TESTS) $(GAME_SCRIPTS_TESTS): SHELLCHECK_SOURCES := /usr/share/games/play.it:/usr/share/play.it ## This is a unicode quote. Delete and retype it (or ignore/doublequote for literal). $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC1112 ## Expressions don't expand in single quotes, use double quotes for that. $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC2016 ## foo appears unused. Verify it or export it. $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC2034 ## Don't use variables in the printf format string. Use printf '..%s..' "$foo". $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC2059 ## In POSIX sh, 'local' is undefined. $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC3043 $(GAME_SCRIPTS_TESTS): shellcheck_%: % shellcheck --extended-analysis=false --external-sources --source-path=$(SHELLCHECK_SOURCES) $(SHELLCHECK_EXCLUDE) $< 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/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/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/starcraft0000644000000000000000000000071314471751340012627 0ustar rootrootRequired CD key files During a regular install of StarCraft, CD keys are stored encrypted into StarDat.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 StarCraft install with: smpq --extract StarDat.mpq font/font.clh font/font.gid 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-30000644000000000000000000000107114471751340012605 0ustar rootrootRequired CD key files During a regular install of Warcraft 3, CD keys are stored encrypted into War3.mpq/War3x.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 (Reign of Chaos) - font.gid (Reign of Chaos) - font.exp (The Frozen Throne) They can be extracted from a regular Warcraft 3 install with: smpq --extract War3.mpq font/font.clh font/font.gid smpq --extract War3x.mpq font/font.exp README.md0000644000000000000000000001720114471751340011042 0ustar rootroot# vv221ʼs games collection The codebase is maintained at [https://git.vv221.fr/play.it-vv221/] Bug reports and feature requests are tracked at [https://forge.dotslashplay.it/vv221/games/-/issues] [https://git.vv221.fr/play.it-vv221/]: https://git.vv221.fr/play.it-vv221/ [https://forge.dotslashplay.it/vv221/games/-/issues]: https://forge.dotslashplay.it/vv221/games/-/issues ## 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 collection adds support for a collection of games curated by vv221, ./play.it original author. It can be seen as a very subjective "best of". ## Installation ### From Debian/Ubuntu repositories This package is only provided from Debian 13 "Trixie" or newer, and Ubuntu 24.04 "Noble Numbat" or newer. Users of older versions of these distributions should follow the next instructions about installing this collection from the git repository. ``` apt install play.it-vv221 ``` ### From the git repository ``` git clone --branch main --depth 1 http://git.vv221.fr/play.it-vv221 play.it-vv221.git cd play.it-vv221.git make install ``` ## Usage Usage instructions are provided on the main ./play.it repository: [./play.it: Installer for DRM-free commercial games — Usage] [./play.it: Installer for DRM-free commercial games — Usage]: https://git.dotslashplay.it/scripts/about/#usage ## Supported games ### Action - Bastion - Beyond Good & Evil - Children of Morta - Deus Ex - Diablo - Grim Dawn - Jade Empire - Jazz Jackrabbit 2 - Painkiller - Prince of Persia: The Sands of Time - Pyre - Raji: An Ancient Epic (full game and free demo) - Rayman series: - Rayman - Rayman Origins - Sales Gosses ! - Scrapland - Shogo: Mobile Armor Division - The Elder Scrolls III: Morrowind - The Witcher - Titan Quest - Tomb Raider series: - Tomb Raider (remastered) - Tomb Raider 2 (classic and remastered) - Tomb Raider 3 (remastered) - Tonight We Riot - Torchlight series: - Torchlight - Torchlight II - Total Overdose - Transistor - Unreal Tournament series: - Unreal Tournament - Unreal Tournament 2004 - Vampire: The Masquerade - Bloodlines - Victor Vran ### Adventure - Blacksad: Under the Skin - Blackwell series: - The Blackwell Legacy - Blackwell Unbound - The Blackwell Convergence - The Blackwell Deception - The Blackwell Epiphany - Day of the Tentacle - Gamedec (full game and free demo) - Gibbous - A Cthulhu Adventure - Gobliiins series: - Gobliiins - Gobliins 2: The Prince Buffoon - Goblins Quest 3 - Gobliiins 5 - Eliza - Kathy Rain - Mask of the Rose (full game and free demo) - Monkey Island series: - The Secret of Monkey Island: Special Edition - Monkey Island 2: LeChuck's Revenge: Special Edition - The Curse of Monkey Island - Escape from Monkey Island - Return to Monkey Island - Myst series: - Myst - realMyst: Masterpiece Edition - Riven: The Sequel to Myst - Myst III: Exile - Orwell series: - Orwell - Orwell: Ignorance is Strength - Primordia - Roadwarden - Sam and Max Hit the Road - Shardlight - Slay the Princess - Song of Farca - Superfluous Riteurnz - Unavowed - Whispers of a Machine - World of Darkness setting: - Vampire: The Masquerade - Coteries of New York - Vampire: The Masquerade - Shadows of New York - Werewolf: The Apocalypse - Heart of the Forest - Werewolf: The Apocalypse - Purgatory ### Arcade - A Dance of Fire and Ice - BallisticNG - Distance - Pyre - Trailblazers ### Cyberpunk - Deus Ex - Exapunks - Gamedec (full game and free demo) - Shadowrun series (by Harebrained Schemes): - Shadowrun Returns - Shadowrun: Dragonfall - Shadowrun: Hong Kong - Song of Farca - 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 - World of Darkness setting: - Vampire: The Masquerade - Bloodlines - Vampire: The Masquerade - Coteries of New York - Vampire: The Masquerade - Shadows of New York - Werewolf: The Apocalypse - Heart of the Forest - Werewolf: The Apocalypse - Purgatory - Victor Vran ### Puzzle - 7 Billion Humans - Ghost Master - Human Resource Machine - Little Inferno - Myst series: - Myst - realMyst: Masterpiece Edition - Riven: The Sequel to Myst - Myst III: Exile - Orwell series: - Orwell - Orwell: Ignorance is Strength - World of Goo series: - World of Goo - World of Goo 2 - Zachtronics games: - SpaceChem - Opus Magnum - Exapunks - Molek-Syntez - Last Call BBS - Zachtronics Solitaire Collection ### 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 - Darkest Dungeon - Deus Ex - Diablo - Disco Elysium - Fallen London setting: - Sunless Sea - Sunless Skies - Freelancer (free demo only) - 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 - The Elder Scrolls III: Morrowind - The Lamplighters League - The Witcher - 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 ### Strategy - Age of Mythology (free demo only) - Alpha Centauri - 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 - 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 - Frostpunk - 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 - Iron Harvest - 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 - Reus - Shadow Gambit: The Cursed Crew (full game and free demo) - Shadow Tactics: Blades of the Shogun - Songs of Conquest - Songs of Silence - Space Run: Fast and safe delivery - Star Wars: Galactic Battlegrounds - StarCraft - Startopia - Stellaris - The Fertile Crescent - The Settlers II - Transistor - Tropico series: - Tropico - Tropico 2: Pirate Cove - War for the Overworld - Warcraft series: - Warcraft: Orcs & Humans - Warcraft III: Reign of Chaos + The Frozen Throne - Warhammer 40,000 setting: - Warhammer 40,000: Dawn of War - Warhammer 40,000: Gladius - Relics of War - Warlords Battlecry 2 - Worms series: - Worms 2 - Worms Armageddon