Compare commits

..

No commits in common. "9a47da3239cb44f4ca4c94046f553abebe70b42f" and "2c8b4196567394b9d29a161d0725df985b04f1e8" have entirely different histories.

2 changed files with 175 additions and 354 deletions

View File

@ -75,7 +75,6 @@ check_news() {
fi
}
# Automatic update function
# Automatic update function
update() {
if ! [[ -d ".git" ]]; then
@ -94,8 +93,7 @@ if [[ "$home" == "$remote" ]]; then
fi
dialog --backtitle "Audiogame Manager" \
--yesno "Updates are available. Would you like to update now?" -1 -1 --stdout || return
{ git pull
git log '@{1}..' --pretty=format:'%an: %s'; }
git pull
exit $?
}
@ -330,16 +328,10 @@ get_bottle() {
"triple-triad"*)
export WINEPREFIX="${HOME}/.local/wine/aprone" ;;
"bg-"*) export WINEPREFIX="${HOME}/.local/wine/bg";;
# draconis games
"esp-pinball-classic"*) ;&
"esp-pinball-extreme"*) ;&
"esp-pinball-party-pack"*) ;&
"silver-dollar"*) ;&
"monkey-business"*) ;&
"alien-outback"*) ;&
"dyna-man"*) ;&
"change-reaction"*) ;&
"ten-pin-alley"*) export WINEPREFIX="${HOME}/.local/wine/draconis";;
# ESP Pinball games
"esp-pinball-classic"*) export WINEPREFIX="${HOME}/.local/wine/esp-pinball";;
"esp-pinball-extreme"*) export WINEPREFIX="${HOME}/.local/wine/esp-pinball";;
"esp-pinball-party-pack"*) export WINEPREFIX="${HOME}/.local/wine/esp-pinball";;
# l-works games group
"duck-hunt"*) ;&
"judgement-day"*) ;&
@ -431,24 +423,8 @@ get_installer() {
get_steam() {
# Arguments: $1 id of item for download, $2 url for game
trap "exit 0" SIGINT
echo "manual intervention required."
echo "The next steps will install through steamcmd."
alert
dialog --backtitle "Audiogame Manager" \
--yes-label "Continue with Steam" \
--no-label "Install manually" \
--extra-button \
--extra-label "Exit" \
--yesno "To install the game manually, place files in \"${WINEPREFIX}/drive_c/Program Files/${game}\"" -1 -1 --stdout
case $? in
0) echo "The next steps will install through steamcmd." ;;
1)
mkdir -p "${WINEPREFIX}/drive_c/Program Files/${game}"
dialog --backtitle "Audiogame Manager" \
--msgbox "Place game files in \"${WINEPREFIX}/drive_c/Program Files/${game}\" and press enter to continue." -1 -1 --stdout
return
;;
*) exit 0 ;;
esac
# Check for steamcmd
if ! command -v steamcmd &> /dev/null ; then
dialog --backtitle "Audiogame Manager" \
@ -714,7 +690,7 @@ install_wine_bottle() {
game_installer() {
export LANG="en_US.UTF-8"
# Try to deal with systems in other languages
mapfile -t installedGames < <(sed -e '/^$/d' -e '/^[[:space:]]*#/d' "${configFile}" 2> /dev/null | cut -d '|' -f3)
mapfile -t installedGames < <(sed '/^$/d' "${configFile}" 2> /dev/null | cut -d '|' -f3)
# Create the menu of installed games
declare -a menuList
for i in "${gameList[@]}" ; do
@ -743,7 +719,7 @@ game_installer() {
# remove games
game_removal() {
mapfile -t lines < <(sed -e '/^$/d' -e '/^[[:space:]]*#/d' "${configFile}" 2> /dev/null)
mapfile -t lines < <(sed '/^$/d' "${configFile}" 2> /dev/null)
if [[ ${#lines} -eq 0 ]]; then
echo "No games found."
exit 0
@ -751,8 +727,7 @@ game_removal() {
# Create the menu of installed games
declare -a menuList
for i in "${lines[@]}" ; do
IFS='|' read -ra gameInfo <<< "$i"
menuList+=("${gameInfo[0]}|${gameInfo[1]}" "${gameInfo[2]}")
menuList+=("${i%|*}" "${i##*|}")
done
menuList+=("Donate" "Donate")
menuList+=("Become a Patron" "Become a Patron")
@ -806,8 +781,7 @@ kill_game() {
# Create the menu of installed games
declare -a menuList
for i in "${lines[@]}" ; do
IFS='|' read -ra gameInfo <<< "$i"
menuList+=("${gameInfo[0]}|${gameInfo[1]}" "${gameInfo[2]}")
menuList+=("${i%|*}" "${i##*|}")
done
menuList+=("Donate" "Donate")
menuList+=("Become a Patron" "Become a Patron")
@ -838,142 +812,11 @@ kill_game() {
exit 0
}
# for games that require custom scripts before launch or custom launch parameters
custom_launch_parameters() {
if [[ "${game[0]}" == "dragon-pong" ]]; then
"${0%/*}/speech/speak_window_title.sh" DragonPong.exe &
pushd "$(winepath "$winePath")"
wine "$wineExec"
popd
exit 0
fi
if [[ "${game[0]}" == "executioner's-rage" ]]; then
find "${WINEPREFIX}/drive_c/Program Files" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
fi
if [[ "${game[0]}" == "haunted-party" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "${game[0]}" == "laser-breakout" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
"${0%/*}/speech/speak_window_title.sh" play.exe &
fi
if [[ "${game[0]}" == "light-battles" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "${game[0]}" == "mist-world" ]]; then
"${0%/*}/speech/speak_window_title.sh" mw.exe &
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "${game[0]}" == "oh-shit" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "${game[0]}" == "bokurano-daibouken-2" ]]; then
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken2 &
fi
if [[ "${game[0]}" == "bokurano-daibouken" ]]; then
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken &
fi
if [[ "${game[0]}" =~ "bokurano-daibouken-3" ]]; then
dictPath="$(winepath "${winePath}")"
if [[ -r "${cache}/bk3-dict.dat" ]] && [[ ! -d "${dictPath}/dict" ]]; then
cp "${cache}/bk3-dict.dat" "${dictPath}/dict.dat"
fi
if [[ -d "${dictPath}/dict" ]]; then
if [[ ! -e "${dictPath}/data/nvdaControllerClient.dll" ]]; then
cp "${cache}/nvda2speechd32.dll" "${dictPath}/data/nvdaControllerClient.dll"
fi
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ ! -d "${dictPath}/dict" ]] && [[ ! -r "${cache}/bk3-dict.dat" ]]; then
find "${WINEPREFIX}/drive_c/nyanchangame/bk3" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken3 &
fi
fi
if [[ "${game[0]}" == "bop-it-emulator" ]]; then
"${0%/*}/speech/speak_window_title.sh" bop.exe &
fi
if [[ "${game[0]}" == "breu2-shadow-hunt" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "${game[0]}" == "road-to-rage" ]]; then
"${0%/*}/speech/speak_window_title.sh" trtr.exe &
fi
if [[ "${game[0]}" == "sequence-storm" ]]; then
"${0%/*}/speech/clipboard_reader.sh" SequenceStorm &
fi
if [[ "${game[0]}" == "shadow-line" ]]; then
find "${WINEPREFIX}/drive_c/" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
"${0%/*}/speech/clipboard_translator.sh" play_sr.exe shadow-line &
fi
if [[ "${game[0]}" == "sketchbook" ]]; then
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
fi
if [[ "${game[0]}" == "audiodisc" ]]; then
wine "$winePath\\$wineExec"
exit 0
fi
if [[ "${game[0]}" == "audioquake" ]]; then
wine "$winePath\\$wineExec"
exit 0
fi
if [[ "${game[0]}" == "screaming-strike-2" ]]; then
pushd "$(winepath "$winePath")"
${wine} "$wineExec"
popd
exit 0
fi
if [[ "${game[0]}" == "warsim" ]]; then
pushd "$(winepath "${game[1]%\\*}")"
wine "${game[1]##*\\}"
popd
exit 0
fi
if [[ "${game[0]}" == "interceptor" ]]; then
pushd "$(winepath "$winePath")"
wine "$wineExec"
popd
exit 0
fi
if [[ "${game[0]}" == "vip-mud" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ -d "${WINEPREFIX}/drive_c/windows/syswow64" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
# switch to wine64 for 64 bit prefix.
[[ "${wine}" == "wine" ]] && export wine="wine64"
fi
if [[ "${game[0]}" == "the-great-toy-robbery" ]] ; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
}
# Process game launcher flags
process_launcher-flags() {
flags=("${game[@]:3}")
for i in "${flags[@]}" ; do
if [[ "${i}" =~ ^export\ [a-zA-Z_][a-zA-Z0-9_]*=\'?.*\'?$ ]]; then
eval "${i}"
fi
done
}
create_game_array() {
# Game array 0 bottle, 1 path, 2 title, 3+ flags
for i in "${lines[@]}" ; do
if [[ "${game}" =~ ^${i} ]]; then
# This is weird. Why do I have to set game to i before making the array?
game="$i"
IFS='|' read -ra game <<< "$i"
break
fi
done
}
# launch games that are installed
game_launcher() {
# For use by update scripts that want to source functions in this file.
[[ "$agmNoLaunch" == "true" ]] && return
mapfile -t lines < <(sed -e '/^$/d' -e '/^ *#/d' "${configFile}" 2> /dev/null)
mapfile -t lines < <(sed '/^$/d' "${configFile}" 2> /dev/null)
if [[ ${#lines} -eq 0 ]]; then
echo "Install some games first."
exit 0
@ -982,8 +825,7 @@ game_launcher() {
# Create the menu of installed games
declare -a menuList
for i in "${lines[@]}" ; do
IFS='|' read -ra gameInfo <<< "$i"
menuList+=("${gameInfo[0]}|${gameInfo[1]}" "${gameInfo[2]}")
menuList+=("${i%|*}" "${i##*|}")
done
menuList+=("Donate" "Donate")
menuList+=("Become a Patron" "Become a Patron")
@ -1000,47 +842,156 @@ game_launcher() {
elif [[ $menuCode -eq 3 ]]; then
documentation "$game" "$(echo "$game" | cut -d '|' -f2)"
fi
create_game_array
else
create_game_array
local game="$(grep "^${1}|" "${configFile}" 2> /dev/null)"
game="${game%|*}"
if [[ -z "$game" ]]; then
echo "Game $1 not found."
exit 1
fi
fi
if [[ ${#game[@]} -gt 0 ]]; then
if [[ "${game[0]}" == "Donate" ]]; then
if [[ ${#game} -gt 0 ]]; then
if [[ "$game" == "Donate" ]]; then
open_url "https://ko-fi.com/stormux"
exit 0
fi
if [[ "${game[0]}" == "Become a Patron" ]]; then
if [[ "$game" == "Become a Patron" ]]; then
open_url "https://2mb.games/product/2mb-patron/"
exit 0
fi
get_bottle "${game[0]}"
get_bottle "$game"
# make sure wine is actually set to something
export wine="${wine:-wine}"
echo -n "launching "
${wine} --version
local winePath="${game#*|}"
winePath="${winePath%\\*.exe}"
local wineExec="${game#*|}"
wineExec="${wineExec%|*}"
wineExec="${wineExec##*\\}"
# kill any previous existing wineservers for this prefix in case they didn't shut down properly.
${wine}server -k
# launch the game
if command -v qjoypad &> /dev/null ; then
mkdir -p ~/.qjoypad3
touch "${HOME}/.qjoypad3/${game[2]}.lyt"
touch "${HOME}/.qjoypad3/${game%|*}.lyt"
# A | separated list of games that should not start with qjoypad.
noQjoypadGames="A Hero's Call"
if [[ "${noqjoypad}" != "true" ]] && ! [[ "${game[2]}" =~ ${noQjoypadGames} ]]; then
noQjoypadGames="a-hero's-call"
if [[ "${noqjoypad}" != "true" ]] && ! [[ "${game}" =~ ${noQjoypadGames} ]]; then
if pgrep qjoypad &> /dev/null ; then
qjoypad -T "${game[2]}" 2> /dev/null
qjoypad -T "${game%|*}" 2> /dev/null
else
qjoypad -T "${game[2]}" 2> /dev/null &
qjoypad -T "${game%|*}" 2> /dev/null &
fi
fi
fi
process_launcher-flags
custom_launch_parameters
${wine:-wine} start /d "${game[1]%\\*}" "${game[1]##*\\}" /realtime
# for games that require custom scripts before launch or custom launch parameters
if [[ "$game" =~ dragon-pong ]]; then
"${0%/*}/speech/speak_window_title.sh" DragonPong.exe &
pushd "$(winepath "$winePath")"
wine "$wineExec"
popd
exit 0
fi
if [[ "$game" =~ executioner\'s ]]; then
find "${WINEPREFIX}/drive_c/Program Files" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
fi
if [[ "$game" =~ haunted-party ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "$game" =~ laser-breakout ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
"${0%/*}/speech/speak_window_title.sh" play.exe &
fi
if [[ "$game" =~ light-battles ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "$game" =~ mist-world ]]; then
"${0%/*}/speech/speak_window_title.sh" mw.exe &
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "$game" =~ oh-shit ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "$game" =~ ^bokurano-daibouken-2\| ]]; then
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken2 &
fi
if [[ "$game" =~ ^bokurano-daibouken\| ]]; then
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken &
fi
if [[ "$game" =~ bokurano-daibouken-3 ]]; then
dictPath="$(winepath "${winePath}")"
if [[ -r "${cache}/bk3-dict.dat" ]] && [[ ! -d "${dictPath}/dict" ]]; then
cp "${cache}/bk3-dict.dat" "${dictPath}/dict.dat"
fi
if [[ -d "${dictPath}/dict" ]]; then
if [[ ! -e "${dictPath}/data/nvdaControllerClient.dll" ]]; then
cp "${cache}/nvda2speechd32.dll" "${dictPath}/data/nvdaControllerClient.dll"
fi
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ ! -d "${dictPath}/dict" ]] && [[ ! -r "${cache}/bk3-dict.dat" ]]; then
find "${WINEPREFIX}/drive_c/nyanchangame/bk3" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
"${0%/*}/speech/clipboard_translator.sh" play.exe bokurano-daibouken3 &
fi
fi
if [[ "$game" =~ bop-it-emulator ]]; then
"${0%/*}/speech/speak_window_title.sh" bop.exe &
fi
if [[ "$game" =~ breu2-shadow-hunt ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ "$game" =~ road-to-rage\| ]]; then
"${0%/*}/speech/speak_window_title.sh" trtr.exe &
fi
if [[ "$game" =~ sequence-storm ]]; then
"${0%/*}/speech/clipboard_reader.sh" SequenceStorm &
fi
if [[ "$game" =~ shadow-line ]]; then
find "${WINEPREFIX}/drive_c/" -type f -name 'nvdaControllerClient.dll' -exec rm -v "{}" \;
"${0%/*}/speech/clipboard_translator.sh" play_sr.exe shadow-line &
fi
if [[ "$game" =~ sketchbook ]]; then
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
fi
if [[ "$game" =~ audiodisc ]]; then
wine "$winePath\\$wineExec"
exit 0
fi
if [[ "$game" =~ audioquake ]]; then
wine "$winePath\\$wineExec"
exit 0
fi
if [[ "$game" =~ screaming-strike-2 ]]; then
pushd "$(winepath "$winePath")"
${wine} "$wineExec"
popd
exit 0
fi
if [[ "$game" =~ warsim ]]; then
pushd "$(winepath "$winePath")"
wine "$wineExec"
popd
exit 0
fi
if [[ "$game" =~ interceptor ]]; then
pushd "$(winepath "$winePath")"
wine "$wineExec"
popd
exit 0
fi
if [[ "$game" =~ vip-mud ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
if [[ -d "${WINEPREFIX}/drive_c/windows/syswow64" ]]; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
# switch to wine64 for 64 bit prefix.
[[ "${wine}" == "wine" ]] && export wine="wine64"
fi
if [[ "$game" =~ the-great-toy-robbery ]] ; then
pgrep -u "$USER" nvda2speechd &> /dev/null || ${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd &
fi
${wine:-wine} start /d "${winePath}" "$wineExec" /realtime
fi
exit 0
}
@ -1053,11 +1004,6 @@ game_launcher() {
add_launcher() {
local launchSettings="${game,,}"
launchSettings="${launchSettings//[[:space:]]/-}|${1}|${game}"
shift
while [[ $# -gt 0 ]]; do
launchSettings+="|$1"
shift
done
if ! grep -F -q -x "${launchSettings}" "${configFile}" 2> /dev/null ; then
echo "${launchSettings}" >> "${configFile}"
sort -o "${configFile}" "${configFile}"
@ -1116,7 +1062,6 @@ unset manualInstall
unset version
# ipfs gateway
export ipfsGateway="${ipfsGateway:-https://gateway.pinata.cloud}"
export nvdaControllerClientDll="${ipfsGateway}/ipfs/QmWu7YdSbKMk1Qm5DKvEA5hk1YuAK8wVkwhDf2CsmPkmF1?filename=nvdaControllerClient32.dll"
# The list of games available for installation.
@ -1129,7 +1074,6 @@ gameList=(
"Angel Gift"
"AudioDisc"
"AudioQuake"
"Balatro"
"Battlefield 2D"
"Battle of the Hunter"
"Battle Zone"
@ -1192,7 +1136,6 @@ gameList=(
"Castaways"
"Castaways 2"
"Challenge of the Horse"
"Change Reaction"
"Chillingham"
#"Chopper Challenge"
"Christmas Chaos"
@ -1287,7 +1230,6 @@ gameList=(
"Sarah and the Castle of Witchcraft and Wizardry"
"Scramble!"
"Screaming Strike 2"
"Scrolling Battles"
"Sketchbook"
"Sequence Storm"
#"Shades of Doom 1.2"
@ -1295,13 +1237,11 @@ gameList=(
"Shadow Line"
"Shooter"
"Silver Dollar"
"Simple Fighter"
"Skateboarder Pro"
"Slender Lost Vision"
"Sonic the Hedgehog"
"Sonic Zoom"
#"Space Defender"
#"Star Treck Final Conflict"
"Super Deekout"
"Super Dogs Bone Hunt"
"Super Egg Hunt"
@ -1345,7 +1285,7 @@ for i in curl sox wine winetricks ; do
fi
done
# Get latest news if available
check_news
#check_news
# With no arguments, open the game launcher.
if [[ $# -eq 0 ]]; then
game_launcher
@ -1417,7 +1357,7 @@ done
# Install game based on the selection above.
case "${game}" in
"A Hero's Call")
download "https://blindgamers.com/downloads/a-heros-call-freeware.zip" "${nvdaControllerClientDll}"
download "https://blindgamers.com/downloads/a-heros-call-freeware.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
export winVer="win7"
export winetricksSettings="vd=1024x768"
install_wine_bottle speechsdk corefonts
@ -1443,12 +1383,9 @@ case "${game}" in
;;
"Alien Outback")
download "http://download.dracoent.com/Windows/classic/AOSetup.exe"
export bottle="draconis"
export winVer="win7"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/AOSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/AOSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/AOSetup.exe"
wine "${cache}/AOSetup.exe" /sp- /silent
# warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20
@ -1478,26 +1415,6 @@ download "https://erion.cf/files/ag_103.zip"
echo "After you launch the game, press tab then enter and it should begin speaking."
alert
;;
"Balatro")
download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd64.dll" "https://stormgames.wolfe.casa/downloads/Tolk.dll" "https://github.com/Aurelius7309/BlackHole/releases/download/0.3.1/BlackHole-Release.zip"
export WINEARCH=win64
export winVer="win10"
install_wine_bottle
get_steam "2379780" "https://store.steampowered.com/app/2379780/Balatro/"
mkdir -p "$WINEPREFIX/drive_c/users/$USER/AppData/Roaming/Balatro/Mods"
unzip -d "$WINEPREFIX/drive_c/users/$USER/AppData/Roaming/Balatro" "$cache/BlackHole-Release.zip"
pushd "$WINEPREFIX/drive_c/users/$USER/AppData/Roaming/Balatro/Mods"
(cat mod_urls.txt ; echo) | while read -r x ; do
git clone "$x"
done
cp -v BlackHole/bin/*.dll "$WINEPREFIX/drive_c/Program Files/Balatro"
cp -v "$cache/Tolk.dll" "$WINEPREFIX/drive_c/Program Files/Balatro/tolk.dll"
cp -v "$cache/Tolk.dll" BlackHole/bin/tolk.dll
cp -v "$cache/nvda2speechd64.dll" "$WINEPREFIX/drive_c/Program Files/Balatro/nvdaControllerClient64.dll"
cp -v "$cache/nvda2speechd64.dll" BlackHole/bin/nvdaControllerClient64.dll
cp -v ../version.dll "$WINEPREFIX/drive_c/Program Files/Balatro"
add_launcher 'c:\Program Files\Balatro\Balatro.exe' 'export WINEDLLOVERRIDES=version=n,b'
;;
"Battlefield 2D")
get_installer "bf.zip" "https://tunmi13.itch.io/battlefield-2d"
download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd64.dll"
@ -1949,7 +1866,7 @@ download "https://erion.cf/files/ag_103.zip"
add_launcher "c:\Program Files\bomvercats\game.exe"
;;
"Breed Memorial")
download "https://hirotaka2014.sakura.ne.jp/mh0406/game/breed_memorial.zip" "${nvdaControllerClientDll}"
download "https://hirotaka2014.sakura.ne.jp/mh0406/game/breed_memorial.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
export winVer="win7"
install_wine_bottle cjkfonts speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/breed_memorial.zip"
@ -1983,20 +1900,6 @@ download "https://erion.cf/files/ag_103.zip"
find "${WINEPREFIX}" -type f -name "nvdaControllerClient32.dll" -exec rm -fv "{}" \;
add_launcher "c:\Program Files\\${game}\game.exe"
;;
"Change Reaction")
download "https://download.dracoent.com/Windows/ChangeReactionSetup.exe"
export bottle="draconis"
export winVer="win7"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/ChangeReactionSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/ChangeReactionSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/ChangeReactionSetup.exe"
# warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20
wineserver -k # Damn you, dotnet.
add_launcher "c:\Program Files\Draconis Entertainment\Change Reaction\ChangeReactionGui.exe"
;;
"Chillingham")
download "https://stormgames.wolfe.casa/downloads/chillingham.zip"
install_wine_bottle vb6run mfc42
@ -2085,14 +1988,12 @@ download "https://erion.cf/files/ag_103.zip"
add_launcher "c:\Program Files\copter mission\game.exe"
;;
"Crazy Party")
export WINEARCH=win64
export winVer="win8"
download "http://pragmapragma.free.fr/crazy-party/Crazy-Party-beta82.zip" "https://stormgames.wolfe.casa/downloads/Tolk.dll" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd64.dll"
install_wine_bottle
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/Crazy-Party-beta82.zip"
find "${WINEPREFIX}" -type f -name 'Tolk.dll' -exec cp -v "${cache}/Tolk.dll" "{}" \;
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
add_launcher "c:\Program Files\Crazy-Party-beta82\Crazy Party.exe"
export winVer="win7"
download "${ipfsGateway}/ipfs/QmZPsVdizDW6nrNj9czPTctAomYxafs7SYRw6YjqxPidvn?filename=Crazy-Party-beta78.zip"
install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/Crazy-Party-beta78.zip"
add_launcher "c:\Program Files\Crazy-Party-beta78\Crazy Party.exe"
rm -f "${WINEPREFIX}/drive_c/Program Files/Crazy-Party-beta78/nvdaControllerClient32.dll"
;;
"Crazy Tennis")
download "https://www.agarchive.net/games/VIP/crazy%20tennis%20setup.exe"
@ -2194,12 +2095,9 @@ download "https://erion.cf/files/ag_103.zip"
;;
"DynaMan")
export winVer="win7"
export bottle="draconis"
download "http://download.dracoent.com/Windows/classic/DMSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/DMSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/DMSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/DMSetup.exe"
wine "${cache}/DMSetup.exe" /sp- /silent
# warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20
@ -2251,12 +2149,10 @@ download "https://erion.cf/files/ag_103.zip"
;;
"ESP Pinball Classic")
export winVer="win7"
export bottle="draconis"
export bottle="esp-pinball"
download "http://download.dracoent.com/Windows/classic/PBCSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/PBCSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/PBCSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/PBCSetup.exe"
wine "${cache}/PBCSetup.exe" /sp- /silent
# warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20
@ -2265,12 +2161,10 @@ download "https://erion.cf/files/ag_103.zip"
;;
"ESP Pinball Extreme")
export winVer="win7"
export bottle="draconis"
export bottle="esp-pinball"
download "http://download.dracoent.com/Windows/classic/PBXSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/PBXSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/PBXSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/PBXSetup.exe"
wine "${cache}/PBXSetup.exe" /sp- /silent
# warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20
@ -2279,17 +2173,15 @@ download "https://erion.cf/files/ag_103.zip"
;;
"ESP Pinball Party Pack")
export winVer="win7"
export bottle="draconis"
export WINEPREFIX="$HOME/.local/wine/draconis"
export bottle="esp-pinball"
export WINEPREFIX="$HOME/.local/wine/esp-pinball"
# Only works in conjunction with esp pinball extreme.
if ! [ -f "$HOME/.local/wine/$bottle/drive_c/Program Files/Draconis Entertainment/ESP Pinball Xtreme/pbx.exe" ] ; then
echo "Error: You need to install ESP Pinball Extreme first to use this game. Please do so before continuing." >&2
exit 1
fi
download "http://download.dracoent.com/Windows/classic/PP1Setup.exe"
cp -v "${cache}/PP1Setup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/PP1Setup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/PP1Setup.exe"
wine "${cache}/PP1Setup.exe" /sp- /silent
add_launcher "c:\Program Files\Draconis Entertainment\ESP Pinball Xtreme\pbx.exe"
;;
"Eurofly")
@ -2670,12 +2562,9 @@ EOF
;;
"Monkey Business")
export winVer="win7"
export bottle="draconis"
download "http://download.dracoent.com/Windows/classic/MBSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/MBSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/MBSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/MBSetup.exe"
wine "${cache}/MBSetup.exe" /sp- /silent
# warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20
@ -2715,7 +2604,7 @@ EOF
"Oh Shit")
export winVer="win7"
export norh="true" # Requires sapi even though uses nvda
download "${ipfsGateway}/ipfs/QmQnAJJrt5uABFziQc7enXYrJ74J9GKQSMi8Ry8ebsxfPV?filename=OhShit.zip" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd" "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd32.dll"
download "${ipfsGateway}/ipfs/QmQnAJJrt5uABFziQc7enXYrJ74J9GKQSMi8Ry8ebsxfPV?filename=OhShit.zip" "https://stormgames.wolfe.casa/downloads/nvda2speechd32.dll"
install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/OhShit.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvda2speechd32.dll" "{}" \;
@ -2884,7 +2773,7 @@ EOF
"Rhythm Rage")
export bottle="oriol-gomez"
export winVer="win7"
download "http://oriolgomez.com/games/rr_en.zip" "${nvdaControllerClientDll}"
download "http://oriolgomez.com/games/rr_en.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/rhythm rage" "${cache}/rr_en.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
@ -2919,7 +2808,7 @@ EOF
;;
"RS Games")
export version="7.0"
download "http://rsgames.org/rsdownloads/rsgclient/rsgames-client-setup-2.01.exe" "${nvdaControllerClientDll}"
download "http://rsgames.org/rsdownloads/rsgclient/rsgames-client-setup-2.01.exe" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
install_wine "$version" "32"
export winVer="win7"
install_wine_bottle speechsdk
@ -2937,7 +2826,7 @@ EOF
;;
"Sammy Center")
export winVer="win7"
download "http://www.samtupy.com/games/SCSetup.exe" "${nvdaControllerClientDll}"
download "http://www.samtupy.com/games/SCSetup.exe" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
install_wine_bottle speechsdk
wine "${cache}/SCSetup.exe" /silent
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
@ -2953,7 +2842,7 @@ EOF
"Scramble!")
winetricksSettings="vd=1024x768"
export winVer="win7"
download "https://stevend.net/downloads/scramble_win32.zip" "${nvdaControllerClientDll}"
download "https://stevend.net/downloads/scramble_win32.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/scramble_win32.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
@ -2962,7 +2851,7 @@ EOF
"Screaming Strike 2")
export bottle="nyanchan"
export winVer="win7"
download "https://www.nyanchangames.com/softs/screamingStrike2.exe" "${nvdaControllerClientDll}"
download "https://www.nyanchangames.com/softs/screamingStrike2.exe" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
install_wine_bottle fakejapanese speechsdk
wine "${cache}/screamingStrike2.exe" &
xdotool sleep 10 key Return
@ -2970,19 +2859,9 @@ EOF
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
add_launcher "c:\nyanchangame\Screaming Strike 2\play.exe"
;;
"Scrolling Battles")
export WINEARCH=win64
export winVer="win7"
get_installer "sbrw-win.zip" "https://masonasons.itch.io/sbrw"
download "https://stormgames.wolfe.casa/downloads/Tolk.dll"
install_wine_bottle
unzip -d "$WINEPREFIX/drive_c/Program Files/sbrw" "${cache}/sbrw-win.zip"
find "${WINEPREFIX}" -type f -name 'Tolk.dll' -exec cp -v "${cache}/Tolk.dll" "{}" \;
add_launcher "c:\Program Files\sbrw\sb.exe"
;;
"Sketchbook")
export winVer="win7"
download "http://sbyw.games/SBYW/SBYW.zip" "http://sbyw.games/SBYW/sounds.zip" "${nvdaControllerClientDll}"
download "http://sbyw.games/SBYW/SBYW.zip" "http://sbyw.games/SBYW/sounds.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
install_wine_bottle speechsdk
mv -v "${cache}/sounds.zip" "${cache}/SBYW-sounds.zip"
unzip -d "$WINEPREFIX/drive_c/Program Files/sketchbook" "${cache}/SBYW.zip"
@ -3015,7 +2894,7 @@ EOF
;;
"Shadow Line")
export version="7.7"
download "https://www.mm-galabo.com/sr/Download_files_srfv/shadowrine_fullvoice3.171.exe" "https://raw.githubusercontent.com/LordLuceus/sr-english-localization/master/language_en.dat"
download "https://www.mm-galabo.com/sr/Download_files_srfv/shadowrine_fullvoice3.171.exe"
install_wine "$version" "32"
export winVer="win8"
install_wine_bottle
@ -3029,44 +2908,19 @@ EOF
xdotool key --clearmodifiers --delay=500 space
xdotool key --clearmodifiers --delay=500 alt+f
${wine}server -w
mv -v "${cache}/language_en.dat" "${WINEPREFIX}/drive_c/Program Files/GalaxyLaboratory/ShadowRine_FullVoice/SystemData/language_en.dat"
add_launcher "c:\Program Files\GalaxyLaboratory\ShadowRine_FullVoice\play_sr.exe"
echo "Please set the language to English when the game opens."
echo "Go to options and press enter."
echo "Press down arrow 5 times and press enter."
echo "Press down arrow 1 time and press enter."
echo "Press up arrow 2 times and press enter."
echo "If everything worked as expected you should be back on the game menu and speech should work."
alert
;;
"Silver Dollar")
export winVer="win7"
export bottle="draconis"
download "http://download.dracoent.com/Windows/SilverDollarSetup.exe"
install_wine_bottle speechsdk
cp -v "${cache}/SilverDollarSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/SilverDollarSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/SilverDollarSetup.exe"
wine "${cache}/SilverDollarSetup.exe" /silent
# warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet40 by itself so it actually doesn't hang.
DISPLAY="" winetricks -q dotnet40
wineserver -k # Damn you, dotnet.
add_launcher "c:\Program Files\Draconis Entertainment\Silver Dollar\SilverDollarGui.exe"
;;
"Simple Fighter")
export WINEARCH=win64
export winVer="win7"
get_installer "simple fighter.exe" "https://tsatria03.itch.io/simple-fighter"
if [[ ! -r "${cache}/simple-fighter-sounds.7z" ]] && [[ ! -r "${cache}/sounds.7z" ]]; then
get_installer "sounds.7z" "https://tsatria03.itch.io/simple-fighter"
mv "${cache}/sounds.7z" "${cache}/simple-fighter-sounds.7z"
fi
install_wine_bottle
7z x -o"$WINEPREFIX/drive_c/Program Files/simple fighter" "${cache}/simple fighter.exe"
7z x -o"$WINEPREFIX/drive_c/Program Files/simple fighter/sounds" "${cache}/simple-fighter-sounds.7z"
find "${WINEPREFIX}/drive_c/Program Files/bf" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
add_launcher "c:\Program Files\simple fighter\game.exe"
;;
"Slender Lost Vision")
export winVer="win7"
download "https://www.iamtalon.me/games/slender.zip"
@ -3116,12 +2970,6 @@ EOF
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/space_defender.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvdaControllerClient64.dll" "{}" \;
add_launcher "c:\Program Files\space_defender\sdefender.exe"
;;
"Star Treck Final Conflict")
download "https://agarchive.net/games/USA/star%20trek%20final%20conflict%20Setup.exe"
install_wine_bottle speechsdk
wine "${cache}/star trek final conflict Setup.exe" /silent
add_launcher "c:\Program Files\USA Games\Final Conflict\stfc.exe"
;;
"Super Deekout")
export bottle=dan-z
@ -3242,12 +3090,9 @@ EOF
;;
"Ten Pin Alley")
export winVer="win7"
export bottle="draconis"
download "http://download.dracoent.com/Windows/classic/TPAXPSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/TPAXPSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/TPAXPSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/TPAXPSetup.exe"
wine "${cache}/TPAXPSetup.exe" /sp- /silent
#winetricks -q msdxmocx # I think having this installed first breaks things.
# warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
@ -3422,12 +3267,9 @@ export norh=false # Must install a voice, and rhvoice works easily with 64 bit.
;;
"Ultimate SounDoku")
export winVer="win7"
export bottle="draconis"
download "http://download.dracoent.com/Windows/classic/USSetup.exe"
install_wine_bottle vb6run dx8vb speechsdk quartz
cp -v "${cache}/USSetup.exe" "$WINEPREFIX/drive_c/windows/temp/"
wine "c:/windows/temp/USSetup.exe" /sp- /silent
rm -fv "$WINEPREFIX/drive_c/windows/temp/USSetup.exe"
wine "${cache}/USSetup.exe" /sp- /silent
# warning warning warning: Do not change location, or installer will not function.
# FIXME: Hacky, but it works. Install dotnet20 by itself so it actually doesn't hang.
winetricks -q dotnet20
@ -3436,7 +3278,7 @@ export norh=false # Must install a voice, and rhvoice works easily with 64 bit.
;;
"Undead Assault")
export winVer="win7"
download "http://undead-assault.com/static/files/public/undead_assault.zip" "${nvdaControllerClientDll}"
download "http://undead-assault.com/static/files/public/undead_assault.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
install_wine_bottle speechsdk
unzip -d "$WINEPREFIX/drive_c/Program Files/undead_assault" "${cache}/undead_assault.zip"
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;

View File

@ -37,37 +37,16 @@
# Works which are defined in the CPAL as a work which combines Covered Code
# or portions thereof with code not governed by the terms of the CPAL.
newVersion=82
WINEPREFIX="${XDG_DATA_HOME:-$HOME/.local}/wine/crazy-party"
oldVersion=$(find ~/.local/wine/crazy-party -type d -name 'Crazy-Party-beta*' | tr -cd '[:digit:]')
cache="${XDG_CACHE_HOME:-$HOME/.cache}/audiogame-manager"
configFile="${XDG_CONFIG_HOME:-$HOME/.config}/storm-games/audiogame-manager/games.conf"
if [[ $oldVersion -le 78 ]]; then
echo "Crazy party has to be reinstalled because it is now a 64 bit application."
echo "Please run audiogame-manager -r to remove the old version."
echo "You can then install it again with audiogame-manager -i"
echo "Don't forget to make a backup of your save.bin file, custom card decks, and custom game lists."
find "${WINEPREFIX}/drive_c/Program Files" -type f -name 'save.bin' 2> /dev/null
find "${WINEPREFIX}/drive_c/Program Files" -type d -name 'deck' 2> /dev/null
find "${WINEPREFIX}/drive_c/Program Files" -type d -name 'game' 2> /dev/null
fi
if [[ $oldVersion -eq $newVersion ]]; then
echo "Crazy Party is up to date."
exit 0
fi
url="http://pragmapragma.free.fr/crazy-party/Crazy-Party-beta${newVersion}.zip"
(rm -v "${cache}/Crazy-Party-beta${oldVersion}.zip"
wget -O "${cache}/Crazy-Party-beta${newVersion}.zip" "$url" || { echo "Could not download file."; exit 1; }
unzip -DDod "${WINEPREFIX}/drive_c/Program Files" "${cache}/Crazy-Party-beta${newVersion}.zip"
find "${WINEPREFIX}" -type f -name 'Tolk.dll' -exec cp -v "${cache}/Tolk.dll" "{}" \;
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient64.dll' -exec cp -v "${cache}/nvda2speechd64.dll" "{}" \;
sed -i "s/Crazy-Party-beta${oldVersion}/Crazy-Party-beta${newVersion}/" "$configFile"
cp -v "${WINEPREFIX}/drive_c/Program Files/Crazy-Party-beta${oldVersion}/save.bin" "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta${newVersion}/"
cp -ruv "${WINEPREFIX}/drive_c/Program Files/Crazy-Party-beta${oldVersion}/"* "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta${newVersion}/" 2> /dev/null
rm -rf "${WINEPREFIX}/drive_c/Program Files/Crazy-Party-beta${oldVersion}/") | dialog --progressbox "updating Crazy Party, please wait..." -1 -1
url="http://pragmapragma.free.fr/crazy-party/Crazy-Party-beta78.zip"
(rm -v "${cache}/Crazy-Party-beta77.zip"
wget -O "${cache}/Crazy-Party-beta78.zip" "$url" || { echo "Could not download file."; exit 1; }
unzip -DDod "$HOME/.local/wine/crazy-party/drive_c/Program Files" "${cache}/Crazy-Party-beta78.zip"
rm -fv "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta78/nvdaControllerClient32.dll"
sed -i 's/Crazy-Party-beta77/Crazy-Party-beta78/' "$configFile"
mv -v "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta77/save.bin" "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta78/"
cp -ruv "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta77/"* "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta78/" 2> /dev/null
rm -rf "$HOME/.local/wine/crazy-party/drive_c/Program Files/Crazy-Party-beta77/") | dialog --progressbox "updating Crazy Party, please wait..." -1 -1
exit 0