837 lines
35 KiB
Bash
Executable File
837 lines
35 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Dialog accessibility
|
|
export DIALOGOPTS='--no-lines --visit-items'
|
|
|
|
# Automatic update function
|
|
update() {
|
|
local filePath="$(command -v ${0})"
|
|
if file "${filePath}" | grep -q 'Bourne-Again shell script, ASCII text' ; then
|
|
return
|
|
fi
|
|
if [[ "$(wget --quiet -O - https://stormgames.wolfe.casa/downloads/audiogame-manager | sha256sum | cut -d ' ' -f1)" == "$(sha256sum "${filePath}" | cut -d ' ' -f1)" ]]; then
|
|
return
|
|
fi
|
|
echo "There is a new version of ${0##*/} available."
|
|
echo "Do you want to update now?"
|
|
read -r continue
|
|
if [[ "${continue,,}" =~ ^y|ye|yes$ ]]; then
|
|
if [[ -w "$0" ]]; then
|
|
wget --quiet -O "${filePath}" "https://stormgames.wolfe.casa/downloads/audiogame-manager"
|
|
else
|
|
sudo wget --quiet -O "${filePath}" "https://stormgames.wolfe.casa/downloads/audiogame-manager"
|
|
fi
|
|
echo "${0##*/} has been updated. Please launch the program again to use the latest version."
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
# Create the clipboard reading function for Sequence Storm
|
|
write_sequence_storm_reader() {
|
|
if -e ~/.SequenceStormReader ]]; then
|
|
return
|
|
fi
|
|
# Here-document start
|
|
cat << "EOF" > ~/.SequenceStormReader
|
|
#! /bin/bash
|
|
|
|
# Wait for the game to be launched
|
|
while ! pgrep -u $USER ^SequenceStorm &> /dev/null ; do
|
|
sleep 0.05
|
|
done
|
|
|
|
export DISPLAY=:0
|
|
unset cliptext
|
|
while pgrep -u $USER ^SequenceStorm &> /dev/null ; do
|
|
tmp="$(xclip -selection clipboard -o 2> /dev/null)"
|
|
tmp="${tmp//%/ percent }"
|
|
if [ "$tmp" != "$cliptext" ] ; then
|
|
cliptext="$tmp"
|
|
if [[ "${cliptext,,}" =~ key|load|private|says|terminal ]]; then
|
|
spd-say -w -r 50 -- "$cliptext"
|
|
else
|
|
spd-say -r 50 -- "$cliptext"
|
|
fi
|
|
fi
|
|
sleep 0.05
|
|
done
|
|
|
|
exit 0
|
|
EOF
|
|
# Here-document end
|
|
chmod 755 ~/.SequenceStormReader
|
|
}
|
|
|
|
# Wine configuration section
|
|
|
|
checklist() {
|
|
declare -a errorList
|
|
echo "Checking your system..."
|
|
echo
|
|
if command -v wine &> /dev/null ; then
|
|
echo "Wine is installed."
|
|
else
|
|
errorList+=("Critical: Wine is not installed. You will not be able to play any games.")
|
|
fi
|
|
if command -v winetricks &> /dev/null ; then
|
|
echo "Winetricks is installed."
|
|
else
|
|
errorList+=("Critical: Winetricks is not installed. This means wine cannot be configured, dependancies cannot be installed, and only self-voicing games have any chance of working.")
|
|
fi
|
|
if command -v wget &> /dev/null ; then
|
|
echo "Wget is installed."
|
|
else
|
|
errorList+=("Critical: Wget is not installed. You will not be able to install any games.")
|
|
fi
|
|
if command -v dialog &> /dev/null ; then
|
|
echo "Dialog is installed."
|
|
else
|
|
errorList+=("Critical: Dialog is not installed. You will not be able to install, launch, or remove any games.")
|
|
fi
|
|
for i in 7z cabextract unzip xz ; do
|
|
if command -v $i &> /dev/null ; then
|
|
echo "${i^} is installed."
|
|
else
|
|
errorList+=("Critical: ${i^} is not installed. You will not be able to install some games or their components.")
|
|
fi
|
|
done
|
|
if command -v gawk &> /dev/null ; then
|
|
echo "Gawk is installed."
|
|
else
|
|
errorList+=("Warning: gawk is not installed. Game removal with -r will not work.")
|
|
fi
|
|
if command -v ocrdesktop &> /dev/null ; then
|
|
echo "Ocrdesktop is installed."
|
|
else
|
|
errorList+=("Warning: ocrdesktop is not installed. It can help if the installer gets stuck to figure out what is happening.")
|
|
fi
|
|
if command -v unix2dos &> /dev/null ; then
|
|
echo "Dos2unix is installed."
|
|
else
|
|
errorList+=("Warning: unix2dos is not installed. Some games need a configuration file in dos format before they will run.")
|
|
fi
|
|
if [[ -d /usr/share/wine/gecko/ ]]; then
|
|
echo "Found wine gecko."
|
|
else
|
|
errorList+=("Warning: Wine gecko not found, some games may not work.")
|
|
fi
|
|
if [[ -d /usr/share/wine/mono/ ]]; then
|
|
echo "Found wine mono."
|
|
else
|
|
errorList+=("Warning: Wine mono not found, some games may not work.")
|
|
fi
|
|
if command -v xclip &> /dev/null ; then
|
|
echo "Xclip is installed."
|
|
else
|
|
errorList+=("Warning: Xclip is not installed. Some games may not speak or register properly.")
|
|
fi
|
|
if command -v xdotool &> /dev/null ; then
|
|
echo "Xdotool is installed."
|
|
else
|
|
errorList+=("Warning: Xdotool is not installed. Some installlers may not work or may need manual intervention.")
|
|
fi
|
|
# Show the results
|
|
if [[ ${#errorList[@]} -eq 0 ]]; then
|
|
echo "No problems found, you are good to go."
|
|
exit 0
|
|
fi
|
|
echo "Errors detected, here is a list along with the severity."
|
|
echo "Note that errors marked critical mean that you will not be able to install and play games until they are resolved."
|
|
for i in "${errorList[@]}" ; do
|
|
echo "$i"
|
|
done
|
|
exit 0
|
|
}
|
|
|
|
download() {
|
|
local source=($@)
|
|
for i in "${source[@]}" ; do
|
|
local dest="${i##*/}"
|
|
dest="${dest//%20/ }"
|
|
# Return if the game is in cache.
|
|
test -e "${cache}/${dest}" && return
|
|
if ! wget -O "${cache}/${dest}" "${i}" ; then
|
|
echo "Could not download game."
|
|
exit 1
|
|
fi
|
|
done
|
|
}
|
|
|
|
help() {
|
|
echo -e "Usage:\n"
|
|
echo "With no arguments, open the game launcher."
|
|
for i in "${!command[@]}" ; do
|
|
echo "-${i}: ${command[${i}]}"
|
|
done | sort
|
|
exit 0
|
|
}
|
|
|
|
install_wine_bottle() {
|
|
# 32 bit installations work best and are the default here, if you need to override it, do it in the game specific installation steps.
|
|
export WINEARCH="${WINEARCH:-win32}"
|
|
local bottle="${game,,}"
|
|
bottle="${bottle//[[:space:]]/-}"
|
|
mkdir -p "$HOME/.local/wine/${bottle}"
|
|
export WINEPREFIX="$HOME/.local/wine/${bottle}"
|
|
# Arguments to the function are dependancies to be installed.
|
|
(DISPLAY="" wineboot -u
|
|
wine msiexec /i z:/usr/share/wine/mono/$(ls -1 /usr/share/wine/mono/) /quiet
|
|
wine msiexec /i z:$(ls -1 /usr/share/wine/gecko/*x86.msi) /quiet
|
|
winetricks -q $@ ${winVer:-winxp} ${winetricksSettings}) | dialog --progressbox "Installing wine bottle, please wait..." -1 -1
|
|
}
|
|
|
|
|
|
# Install games
|
|
game_installer() {
|
|
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
|
|
local menuItem="$i"
|
|
for j in "${installedGames[@]}" ; do
|
|
if [[ "$j" == "$menuItem" ]]; then
|
|
unset menuItem
|
|
fi
|
|
done
|
|
if [[ -n "$menuItem" ]]; then
|
|
menuList+=("$menuItem" "$menuItem")
|
|
fi
|
|
done
|
|
if [[ ${#menuList[@]} -eq 0 ]]; then
|
|
echo "All games are already installed."
|
|
exit 0
|
|
fi
|
|
menuList+=("Make a One Time Donation" "Make a One Time Donation")
|
|
menuList+=("Become a Patron" "Become a Patron")
|
|
game="$(dialog --backtitle "Audio Game Installer" \
|
|
--clear \
|
|
--no-tags \
|
|
--menu "Please select a game to install" 0 0 0 "${menuList[@]}" --stdout)"
|
|
}
|
|
|
|
# remove games
|
|
game_removal() {
|
|
mapfile -t lines < <(sed '/^$/d' "${configFile}" 2> /dev/null)
|
|
if [[ ${#lines} -eq 0 ]]; then
|
|
echo "No games found."
|
|
exit 0
|
|
fi
|
|
# Create the menu of installed games
|
|
declare -a menuList
|
|
for i in "${lines[@]}" ; do
|
|
menuList+=("${i%|*}" "${i##*|}")
|
|
done
|
|
menuList+=("Make a One Time Donation" "Make a One Time Donation")
|
|
menuList+=("Become a Patron" "Become a Patron")
|
|
local game="$(dialog --backtitle "Audio Game Removal" \
|
|
--clear \
|
|
--no-tags \
|
|
--menu "Please select a game to delete" 0 0 0 "${menuList[@]}" --stdout)"
|
|
if [[ ${#game} -gt 0 ]]; then
|
|
if [[ "$game" == "Make a One Time Donation" ]]; then
|
|
xdg-open "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=stormdragon2976@gmail.com&lc=US&item_name=Donation+to+Storm+Games&no_note=0&cn=¤cy_code=USD&bn=PP-DonationsBF:btn_donateCC_LG.gif:NonHosted"
|
|
exit 0
|
|
fi
|
|
if [[ "$game" == "Become a Patron" ]]; then
|
|
xdg-open "https://patreon.com/stormux"
|
|
exit 0
|
|
fi
|
|
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.
|
|
WINEPREFIX="${HOME}/.local/wine/${game%|*}" wineserver -k
|
|
# remove the game
|
|
rm -rf "${HOME}/.local/wine/${game%|*}"
|
|
# remove the launcher
|
|
gawk -i inplace -vLine="${game//\\/\\\\}" '!index($0,Line)' "$configFile"
|
|
echo "The selected game has been deleted."
|
|
fi
|
|
exit 0
|
|
}
|
|
|
|
# launch games that are installed
|
|
game_launcher() {
|
|
mapfile -t lines < <(sed '/^$/d' "${configFile}" 2> /dev/null)
|
|
if [[ ${#lines} -eq 0 ]]; then
|
|
echo "Install some games first."
|
|
exit 0
|
|
fi
|
|
# Create the menu of installed games
|
|
declare -a menuList
|
|
for i in "${lines[@]}" ; do
|
|
menuList+=("${i%|*}" "${i##*|}")
|
|
done
|
|
menuList+=("Make a One Time Donation" "Make a One Time Donation")
|
|
menuList+=("Become a Patron" "Become a Patron")
|
|
local game="$(dialog --backtitle "Audio Game Launcher" \
|
|
--clear \
|
|
--no-tags \
|
|
--menu "Please select a game to play" 0 0 0 "${menuList[@]}" --stdout)"
|
|
if [[ ${#game} -gt 0 ]]; then
|
|
if [[ "$game" == "Make a One Time Donation" ]]; then
|
|
xdg-open "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=stormdragon2976@gmail.com&lc=US&item_name=Donation+to+Storm+Games&no_note=0&cn=¤cy_code=USD&bn=PP-DonationsBF:btn_donateCC_LG.gif:NonHosted"
|
|
exit 0
|
|
fi
|
|
if [[ "$game" == "Become a Patron" ]]; then
|
|
xdg-open "https://patreon.com/stormux"
|
|
exit 0
|
|
fi
|
|
# for games that require custom scripts before launch
|
|
if [[ "$game" =~ sequence-storm ]]; then
|
|
[[ -x ~/.SequenceStormReader ]] && ~/.SequenceStormReader &
|
|
fi
|
|
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.
|
|
WINEPREFIX="${HOME}/.local/wine/${game%|*}" wineserver -k
|
|
# launch the game
|
|
if command -v qjoypad &> /dev/null ; then
|
|
mkdir -p ~/.qjoypad3
|
|
touch "${HOME}/.qjoypad3/${game%|*}.lyt"
|
|
if pgrep qjoypad &> /dev/null ; then
|
|
qjoypad -T "${game%|*}" 2> /dev/null
|
|
else
|
|
qjoypad -T "${game%|*}" 2> /dev/null &
|
|
fi
|
|
fi
|
|
WINEPREFIX="${HOME}/.local/wine/${game%|*}" wine start /realtime /d "${winePath}" "$wineExec"
|
|
fi
|
|
exit 0
|
|
}
|
|
|
|
|
|
# main script
|
|
|
|
#functions
|
|
|
|
add_launcher() {
|
|
local launchSettings="${game,,}"
|
|
launchSettings="${launchSettings//[[:space:]]/-}|${1}|${game}"
|
|
if ! grep -F -q -x "${launchSettings}" "${configFile}" ; then
|
|
echo "${launchSettings}" >> "${configFile}"
|
|
sort -o "${configFile}" "${configFile}"
|
|
# Remove .lnk files because they don't work.
|
|
find ~/Desktop -type f -iname '*.lnk' -exec bash -c '
|
|
for f ; do
|
|
mimeType="$(file -b "$f")"
|
|
mimeType="${mimeType%%,*}"
|
|
if [[ "$mimeType" == "MS Windows shortcut" ]]; then
|
|
rm -v "$f"
|
|
fi
|
|
done' _ {} +
|
|
if [[ "${noCache}" == "true" ]]; then
|
|
rm -f "${cache}/${1##*\\}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
automate_installer() {
|
|
# Function arguments are the keys to be pressed.
|
|
sleep 15
|
|
declare -a keyList
|
|
for i in ${@} ; do
|
|
case "$i" in
|
|
"alt+f") keyList+=("sleep 15 key ${i}");;
|
|
"space") keyList+=("sleep 1 key ${i}");;
|
|
*"+"*) keyList+=("sleep 1 key ${i}");;
|
|
*) xdotool sleep 1 type ${i};;
|
|
esac
|
|
done
|
|
xdotool ${keyList[*]} &
|
|
# call wineserver -w in case something failed here, the user will have a chance to try to fix it.
|
|
wineserver -w
|
|
}
|
|
|
|
# Check for updates
|
|
update
|
|
# If display isn't set assume we are launching from console and an X environment is running using display :0
|
|
if [[ -z "$DISPLAY" ]]; then
|
|
export DISPLAY=":0"
|
|
fi
|
|
# Settings file
|
|
cache="${XDG_CONFIG_HOME:-$HOME/.config}/storm-games/audiogame-manager/cache"
|
|
configFile="${XDG_CONFIG_HOME:-$HOME/.config}/storm-games/audiogame-manager/games.conf"
|
|
mkdir -p "${cache}"
|
|
mkdir -p "${configFile%/*}"
|
|
# Turn off debug messages
|
|
export WINEDEBUG="-all"
|
|
# During installation, you can set winVer to the versions available.
|
|
# To set winetricks arguments, such as virtual desktop, set the winetricksSettings variable.
|
|
# Example: winetricksSettings="vd=1024x768"
|
|
# Files are cached unless -N no cache is set.
|
|
unset noCache
|
|
# Manual installation is not default, make sure it's unset
|
|
unset manualInstall
|
|
|
|
# The list of games available for installation.
|
|
# Use menu friendly names.
|
|
gameList=(
|
|
"A Hero's Call"
|
|
"Adrian's Doom"
|
|
"Adventurers At C"
|
|
"AudioDisc"
|
|
"Battle Zone"
|
|
"Bloodshed"
|
|
"Christmas WhoopAss"
|
|
"Crazy Party"
|
|
"Death on the Road"
|
|
"Easter Quest"
|
|
#"Entombed"
|
|
"Fantasy Story II"
|
|
"Finger Panic"
|
|
"Fuck That Bird"
|
|
"GMA Tank Commander"
|
|
"Hunter"
|
|
"Kitchensinc Games"
|
|
"Kringle Crash"
|
|
"Light Cars"
|
|
"Lockpick"
|
|
"Lone Wolf"
|
|
"Manamon"
|
|
"Manamon 2"
|
|
"Oh Shit!"
|
|
"Paladin of the Sky"
|
|
"Pontes Kickups!"
|
|
"Q9"
|
|
"Revenge of the Undead"
|
|
"Rhythm Rage"
|
|
"RS Games"
|
|
"Run For Your Life"
|
|
"Sequence Storm"
|
|
"Shades of Doom"
|
|
"Super Egg Hunt"
|
|
"Super Liam"
|
|
"Swamp"
|
|
"The Blind Swordsman"
|
|
"The Great Toy Robbery"
|
|
"Technoshock"
|
|
"Top Speed 3"
|
|
"Undead Assault"
|
|
)
|
|
|
|
# With no arguments, open the game launcher.
|
|
if [[ $# -eq 0 ]]; then
|
|
game_launcher
|
|
fi
|
|
|
|
# Array of command line arguments
|
|
declare -A command=(
|
|
[c]="Check your system for necessary components."
|
|
[h]="This help screen."
|
|
[i]="Install games."
|
|
[m]="Manually handle install screens instead of using xdotools."
|
|
[N]="No cache, delete the installer after it has been extracted."
|
|
[r]="Remove a game. This will delete all game data."
|
|
)
|
|
|
|
# Convert the keys of the associative array to a format usable by getopts
|
|
args="${!command[*]}"
|
|
args="${args//[[:space:]]/}"
|
|
while getopts "${args}" i ; do
|
|
case "$i" in
|
|
c) checklist;;
|
|
h) help;;
|
|
i) game_installer;;
|
|
m) manualInstall="true";;
|
|
N) noCache="true";;
|
|
r) game_removal;;
|
|
esac
|
|
done
|
|
|
|
# Install game based on the selection above.
|
|
case "${game}" in
|
|
"A Hero's Call")
|
|
export winVer="win7"
|
|
install_wine_bottle dotnet40 xna31 speechsdk corefonts
|
|
download "http://files.OutOfSightGames.com/files/a-heros-call.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/a-heros-call.zip"
|
|
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
|
|
add_launcher "c:\Program Files\a-heros-call\A Hero's Call.exe"
|
|
;;
|
|
"Adrian's Doom")
|
|
install_wine_bottle speechsdk
|
|
download "https://agarchive.net/games/mt/adrian's%20doom.exe"
|
|
wine "${cache}/adrian's doom.exe" /silent
|
|
add_launcher "c:\Program Files\Two Caring Citizens\Adrian's Doom!\adrian.exe"
|
|
;;
|
|
"Adventurers At C")
|
|
install_wine_bottle speechsdk
|
|
download "http://www.vgstorm.com/aac/aac.zip" "https://www.agarchive.net/games/vg/adventure%20at%20c%20stages.7z"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files/aac" "${cache}/aac.zip"
|
|
7z e -o"$WINEPREFIX/drive_c/Program Files/aac/stages" "${cache}/adventure at c stages.7z"
|
|
add_launcher "c:\Program Files\aac\aac.exe"
|
|
;;
|
|
"AudioDisc")
|
|
install_wine_bottle
|
|
download "https://agarchive.net/games/other/audiodisc.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/audiodisc.zip"
|
|
add_launcher "c:\Program Files\audiodisc\disco.exe"
|
|
;;
|
|
"Battle Zone")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "https://www.agarchive.net/games/gameMadnessInteractive/battle%20zone%2013.5%20setup.exe"
|
|
wine "${cache}/battle zone 13.5 setup.exe" /silent
|
|
add_launcher "c:\Program Files\Battle Zone\ss.exe"
|
|
rm -fv "${WINEPREFIX}/drive_c/Program Files/Battle Zone/nvdaControllerClient32.dll"
|
|
;;
|
|
"Bloodshed")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "http://www.samtupy.com/games/bloodshed.exe"
|
|
cp "${cache}/bloodshed.exe" "$WINEPREFIX/drive_c/Program Files/"
|
|
add_launcher "c:\Program Files\bloodshed.exe"
|
|
;;
|
|
"Christmas WhoopAss")
|
|
install_wine_bottle vb6run dx8vb
|
|
download "https://www.agarchive.net/games/draconis/christmas%20whoopass%20setup.exe"
|
|
wine "${cache}/christmas whoopass setup.exe" /silent &
|
|
xdotool sleep 10 key --clearmodifiers alt+y 2> /dev/null
|
|
wineserver -w
|
|
add_launcher "c:\Program Files\Draconis Entertainment\Christmas Whoop Ass\wa.exe"
|
|
;;
|
|
"Crazy Party")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "http://pragmapragma.free.fr/crazy-party/Crazy-Party-beta73.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/Crazy-Party-beta73.zip"
|
|
add_launcher "c:\Program Files\Crazy-Party-beta73\Crazy Party.exe"
|
|
rm -f "${WINEPREFIX}/drive_c/Program Files/Crazy-Party-beta73/nvdaControllerClient32.dll"
|
|
;;
|
|
"Death on the Road")
|
|
export winVer="win7"
|
|
install_wine_bottle
|
|
download "http://oriolgomez.com/games/road_en.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files/death on the road" "${cache}/road_en.zip"
|
|
add_launcher "c:\Program Files\death on the road/game.exe"
|
|
;;
|
|
"Easter Quest")
|
|
install_wine_bottle
|
|
download "https://agarchive.net/games/mt/easter%20quest%20setup.exe"
|
|
wine "${cache}/easter quest setup.exe" /silent
|
|
add_launcher "c:\Program Files\MTGames\Easter Quest\easter.exe"
|
|
;;
|
|
"Entombed")
|
|
export winVer="win7"
|
|
install_wine_bottle dotnet35 msvcrt40 speechsdk
|
|
download "http://www.blind-games.com/EntombedSetup.exe" "http://www.blind-games.com/EntombedUpdate.exe"
|
|
wine "${cache}/EntombedSetup.exe" /silent
|
|
wine "${cache}/EntombedUpdate.exe" /silent
|
|
#add_launcher "c:\Program Files\MTGames\Easter Quest\easter.exe"
|
|
;;
|
|
"Fantasy Story II")
|
|
export winVer="win10"
|
|
install_wine_bottle speechsdk
|
|
download "https://stormgames.wolfe.casa/downloads/FS2_2.2_Windows_x86.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files/" "${cache}/FS2_2.2_Windows_x86.zip"
|
|
add_launcher "c:\Program Files\FS2_2.2_Windows_x86\FantasyStory2.exe"
|
|
;;
|
|
"Finger Panic")
|
|
install_wine_bottle dx8vb vb6run
|
|
download "http://www.agarchive.net/games/bsc/FingerPanicSetup.exe"
|
|
wine "${cache}/FingerPanicSetup.exe" /silent &
|
|
xdotool sleep 10 key --clearmodifiers alt+y 2> /dev/null
|
|
wineserver -w
|
|
add_launcher "c:\Program Files\Finger Panic 1.0\FingerPanic.exe"
|
|
;;
|
|
"Fuck That Bird")
|
|
export winVer="win7"
|
|
install_wine_bottle
|
|
download "http://oriolgomez.com/games/bird_en.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files/fuck that bird" "${cache}/bird_en.zip"
|
|
add_launcher "c:\Program Files\fuck that bird/game.exe"
|
|
;;
|
|
"GMA Tank Commander")
|
|
install_wine_bottle vb6run dx8vb speechsdk
|
|
download "http://www.gmagames.com/gtc120.exe"
|
|
wine "${cache}/gtc120.exe" /silent &
|
|
xdotool sleep 10 key --clearmodifiers alt+y 2> /dev/null
|
|
xdotool sleep 15 type --clearmodifiers --delay 100 "${USER^}" 2> /dev/null
|
|
xdotool key --clearmodifiers Tab 2> /dev/null
|
|
xdotool sleep 10 type --clearmodifiers --delay 100 "${HOSTNAME^}" 2> /dev/null
|
|
xdotool key --clearmodifiers Tab 2> /dev/null
|
|
xdotool sleep 10 type --clearmodifiers --delay 100 "na@na.na" 2> /dev/null
|
|
xdotool key --clearmodifiers Tab 2> /dev/null
|
|
xdotool sleep 10 type --clearmodifiers --delay 100 "uuuuuuu" 2> /dev/null
|
|
xdotool key --clearmodifiers Tab 2> /dev/null
|
|
xdotool key --clearmodifiers Return 2> /dev/null
|
|
xdotool sleep 10 key --clearmodifiers Return 2> /dev/null
|
|
wineserver -w
|
|
echo "To accurately set your information, edit the file:"
|
|
echo "${WINEPREFIX}/drive_c/Program\ Files/GMA\ Tank\ Commander/config.dat"
|
|
echo "The default country is US. The fields are:"
|
|
echo -e "\"Firstname Lastname\"\n\"Email address\"\n\"Country code\""
|
|
add_launcher "c:\Program Files\GMA Tank Commander\gtc.exe"
|
|
;;
|
|
"Hunter")
|
|
install_wine_bottle vb6run dx8vb
|
|
# FIXME: Hacky, but it works. Install dotnet35 by itself so it actually doesn't hang.
|
|
winetricks -q dotnet35
|
|
wineserver -k # Damn you, dotnet.
|
|
download "http://www.agarchive.net/games/bsc/HunterSetup.exe" "https://www.agarchive.net/games/bsc/BSC%20unlock%20code%20generator.7z"
|
|
wine "${cache}/HunterSetup.exe" /silent &
|
|
xdotool sleep 10 key --clearmodifiers alt+y 2> /dev/null
|
|
wineserver -w
|
|
mkdir -p "$WINEPREFIX/drive_c/Program Files/bsc-key-generator"
|
|
7z e -o"$WINEPREFIX/drive_c/Program Files/bsc-key-generator" "${cache}/BSC unlock code generator.7z"
|
|
echo "$USER"$'\n'"$(hostname)"$'\n'"none"$'\n'"US" > "$WINEPREFIX/drive_c/Program Files/Hunter/config.dat"
|
|
test command -v unix2dos &> /dev/null && unix2dos "$WINEPREFIX/drive_c/Program Files/Hunter/config.dat" || echo "Warning! You do not have unix2dos or dos2unix installed, Hunter may not work!"
|
|
if command -v xclip &> /dev/null && command -v xdotool &> /dev/null ; then
|
|
wine "c:\Program Files\Hunter\HunterRegistration.exe" &
|
|
xdotool sleep 10 key Return sleep 2 key Return sleep 2 key Alt+n
|
|
sleep 1
|
|
regcode="$(xclip -selection clipboard -o)"
|
|
xdotool sleep 1 key Shift+Tab sleep 1 key Return
|
|
# FIXME: Kind of hacky, but let's make sure it actually exitted.
|
|
sleep 5
|
|
wineserver -k
|
|
wine "c:\Program Files\bsc-key-generator\BlindsoftwareUnlockCodeGenerator.exe" &
|
|
xdotool sleep 10 key Return sleep 2 type hu
|
|
xdotool sleep 1 key Tab sleep 1 type $regcode
|
|
xdotool sleep 1 key Tab sleep 1 key Return
|
|
sleep 2
|
|
regcode="$(xclip -selection clipboard -o)" # Might as well reuse the variable.
|
|
# FIXME: Kind of hacky, but let's make sure it actually exitted since I can't find a good way to exit this program.
|
|
sleep 5
|
|
wineserver -k
|
|
wine "c:\Program Files\Hunter\HunterRegistration.exe" &
|
|
echo "$regcode" | xclip -selection clipboard
|
|
xdotool sleep 10 key Return sleep 2 key Shift+Tab sleep 1 key Shift+Tab sleep 1 key Return
|
|
# FIXME: Kind of hacky, but let's make sure it actually exitted.
|
|
sleep 5
|
|
wineserver -k
|
|
else
|
|
echo "Warning: You need xclip and xdotool for this installer to finish the registration process, however, you don't have them. Either remove the program, install the stated tools, and reinstall it, or go on your own. Caveat Emptor, go to jail, do not pass go, do not collect audiogame rewards and all that stuff."
|
|
fi
|
|
add_launcher "c:\Program Files\Hunter\HunterRun.exe"
|
|
;;
|
|
"Kringle Crash")
|
|
install_wine_bottle
|
|
download "https://www.agarchive.net/games/blastbay/kringle%20crash%20setup.exe"
|
|
wine "${cache}/kringle crash setup.exe" /silent
|
|
add_launcher "c:\Program Files\Kringle Crash\kringlecrash.exe"
|
|
;;
|
|
"Kitchensinc Games")
|
|
install_wine_bottle vb6run speechsdk dx8vb
|
|
download "https://stormgames.wolfe.casa/downloads/kitchen.tar.xz"
|
|
echo "Extracting files..."
|
|
tar xf "${cache}/kitchen.tar.xz" -C "$WINEPREFIX/drive_c/Program Files/"
|
|
add_launcher "c:\Program Files\Kitchen's Sink\gamemenu.exe"
|
|
;;
|
|
"Light Cars")
|
|
install_wine_bottle dx8vb vb6run
|
|
download "https://www.agarchive.net/games/lighttech/light%20cars%20setup.exe"
|
|
if [[ -n "$manualInstall" ]]; then
|
|
wine "${cache}/light cars setup.exe"
|
|
else
|
|
wine "${cache}/light cars setup.exe" &
|
|
automate_installer alt+n alt+a space alt+n alt+n alt+i alt+f
|
|
fi
|
|
echo -e "${USER} ${HOST}\nna@na.na\nUS" > ~/.local/wine/light-cars/drive_c/Program\ Files/Lighttech\ Interactive/Light\ Cars/config.dat
|
|
unix2dos ~/.local/wine/light-cars/drive_c/Program\ Files/Lighttech\ Interactive/Light\ Cars/config.dat
|
|
add_launcher "c:\Program Files\Lighttech Interactive\Light Cars\lightCars.exe"
|
|
;;
|
|
"Lockpick")
|
|
install_wine_bottle vb6run dx8vb
|
|
download "http://files.l-works.net/lockpicksetup.exe"
|
|
wine "${cache}/lockpicksetup.exe" /silent
|
|
add_launcher "c:\Program Files\lWorks\Lockpick\lockpick.exe"
|
|
;;
|
|
"Lone Wolf")
|
|
install_wine_bottle vb6run dx8vb speechsdk
|
|
download "http://www.gmagames.com/lw350.exe"
|
|
wine "${cache}/lw350.exe" /silent &
|
|
xdotool sleep 10 key --clearmodifiers alt+y 2> /dev/null
|
|
xdotool sleep 10 type --clearmodifiers --delay 100 "$USER" 2> /dev/null
|
|
xdotool key --clearmodifiers Tab 2> /dev/null
|
|
xdotool type --clearmodifiers --delay 100 "$HOSTNAME" 2> /dev/null
|
|
xdotool key --clearmodifiers Tab 2> /dev/null
|
|
xdotool type --clearmodifiers --delay 100 "na@na.na" 2> /dev/null
|
|
xdotool key --clearmodifiers Tab 2> /dev/null
|
|
xdotool type --clearmodifiers --delay 100 "uuuuuu" 2> /dev/null
|
|
xdotool key --clearmodifiers Tab 2> /dev/null
|
|
xdotool key --clearmodifiers Return 2> /dev/null
|
|
wineserver -w
|
|
add_launcher "c:\Program Files\Lone Wolf\lw.exe"
|
|
;;
|
|
"Manamon")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "https://www.vgstorm.com/manamon/manamon_installer.exe"
|
|
wine "${cache}/manamon_installer.exe" /silent
|
|
add_launcher "c:\Program Files\VGStorm.com\Manamon\rpg.exe"
|
|
;;
|
|
"Manamon 2")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "http://www.vgstorm.com/manamon2/manamon2_installer.exe"
|
|
wine "${cache}/manamon2_installer.exe" /silent
|
|
add_launcher "c:\Program Files\VGStorm.com\Manamon 2\rpg.exe"
|
|
;;
|
|
"Oh Shit!")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "http://samtupy.com/stevend/oh_shit.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/oh_shit.zip"
|
|
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
|
|
add_launcher "c:\Program Files\oh_shit\OhShit.exe"
|
|
;;
|
|
"Paladin of the Sky")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "http://www.vgstorm.com/cod/pots/paladin_installer.exe"
|
|
wine "${cache}/paladin_installer.exe" /silent
|
|
add_launcher "c:\Program Files\VGStorm.com\Paladin of the Sky\game.exe"
|
|
;;
|
|
"Pontes Kickups!")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "http://www.pontes.ro/ro/divertisment/games/PontesKickUpsInstaller.exe"
|
|
wine "${cache}/PontesKickUpsInstaller.exe" /silent /q
|
|
rm -fv "${WINEPREFIX}/drive_c/Program Files/Pontes Games/Pontes Kick-ups/nvdaControllerClient32.dll"
|
|
add_launcher "c:\Program Files\Pontes Games\Pontes Kick-ups\PontesKickUps.exe"
|
|
;;
|
|
"Q9")
|
|
install_wine_bottle
|
|
download "http://www.blastbay.com/q9_english_installer.exe"
|
|
wine "${cache}/q9_english_installer.exe" /silent
|
|
add_launcher "c:\Program Files\Q9 Action Game\q9.exe"
|
|
;;
|
|
"Revenge of the Undead")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "https://tunmi13.dev/projects/rotu.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/rotu.zip"
|
|
rm -fv "${WINEPREFIX}/drive_c/Program Files/rotu/nvdaControllerClient32.dll"
|
|
add_launcher "c:\Program Files\rotu\rotu.exe"
|
|
;;
|
|
"Rhythm Rage")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "http://oriolgomez.com/games/rr_en.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
|
|
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" "{}" \;
|
|
add_launcher "c:\Program Files\rhythm rage/game.exe"
|
|
;;
|
|
"RS Games")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "http://rsgames.org/rsdownloads/rsgclient/rsgames-client-setup-2.01.exe" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
|
|
wine "${cache}/rsgames-client-setup-2.01.exe" /silent
|
|
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
|
|
add_launcher "c:\Program Files\RS Games Client\rsg.exe"
|
|
;;
|
|
"Run For Your Life")
|
|
export winVer="win7"
|
|
install_wine_bottle
|
|
download "http://oriolgomez.com/games/rfyl_en.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files/run for your life" "${cache}/rfyl_en.zip"
|
|
add_launcher "c:\Program Files\run for your life\game.exe"
|
|
;;
|
|
"Sequence Storm")
|
|
read -p "Make sure sequence-storm-win64.zip is available in either your Downloads or Desktop directory and press enter to continue." continue
|
|
for i in ~/Downloads ~/Desktop ; do
|
|
find $i -type f -name 'sequence-storm-win64.zip' -exec cp -v {} "${cache}/" \;
|
|
done
|
|
if [[ ! -f "${cache}/sequence-storm-win64.zip" ]]; then
|
|
echo "couldn't find sequence-storm-win64.zip. Please download the file and try again."
|
|
exit 1
|
|
fi
|
|
export WINEARCH=win64
|
|
export winVer="win10"
|
|
install_wine_bottle
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files/sequence-storm" "${cache}/sequence-storm-win64.zip"
|
|
write_sequence_storm_reader
|
|
wget -O "$WINEPREFIX/drive_c/Program Files/sequence-storm/settings.json" "https://stormgames.wolfe.casa/downloads/sequencestorm-settings.json"
|
|
add_launcher "c:\Program Files\sequence-storm\SequenceStorm.exe"
|
|
;;
|
|
"Shades of Doom")
|
|
export winVer="win7"
|
|
install_wine_bottle vb6run dx8vb speechsdk
|
|
download "http://www.gmagames.com/sod20022.exe"
|
|
wine "${cache}/sod20022.exe" /silent
|
|
add_launcher "c:\Program Files\Shades of Doom 2.0\sod.exe"
|
|
;;
|
|
"Super Egg Hunt")
|
|
install_wine_bottle
|
|
download "http://files.l-works.net/superegghuntsetup.exe"
|
|
wine "${cache}/superegghuntsetup.exe" /silent
|
|
add_launcher "c:\Program Files\Lworks\super egg hunt\superegghunt.exe"
|
|
;;
|
|
"Super Liam")
|
|
install_wine_bottle vb6run dx8vb
|
|
download "http://files.l-works.net/superliamsetup.exe"
|
|
wine "${cache}/superliamsetup.exe" /silent
|
|
add_launcher "c:\Program Files\lWorks\Super Liam\sl.exe"
|
|
;;
|
|
"Swamp")
|
|
export winVer="win7"
|
|
winetricksSettings="vd=1024x768"
|
|
install_wine_bottle vb6run dx8vb quartz speechsdk corefonts
|
|
download "https://kaldobsky.com/audiogames/SwampPart1.zip" "https://kaldobsky.com/audiogames/SwampPart2.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files/swamp" "${cache}/SwampPart1.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files/swamp" "${cache}/SwampPart2.zip"
|
|
# make sure the latest version is installed.
|
|
if wget -O "${cache}/SwampPatch.zip" "https://www.kaldobsky.com/audiogames/SwampPatch.zip" ; then
|
|
unzip -o -d "$WINEPREFIX/drive_c/Program Files/swamp" "${cache}/SwampPatch.zip"
|
|
fi
|
|
wine cmd.exe /c 'cd /d c:\Program Files\swamp && Windows32bit.bat'
|
|
add_launcher "c:\Program Files\swamp\Swamp.exe"
|
|
;;
|
|
"The Blind Swordsman")
|
|
install_wine_bottle
|
|
download "http://www.evildogserver.com/theblindswordsman/theblindswordsmanPC.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/theblindswordsmanPC.zip"
|
|
add_launcher "c:\Program Files\TheBlindSwordsman.exe"
|
|
;;
|
|
"The Great Toy Robbery")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "http://files.l-works.net/tgtrsetup_2.04.exe" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
|
|
wine "${cache}/tgtrsetup_2.04.exe" /silent
|
|
find "${WINEPREFIX}" -type f -name 'nvdaControllerClient32.dll' -exec cp -v "${cache}/nvdaControllerClient32.dll" "{}" \;
|
|
add_launcher "c:\Program Files\Lworks\The Great Toy Robbery\tgtr.exe"
|
|
;;
|
|
"Technoshock")
|
|
install_wine_bottle
|
|
download "http://tiflocomp.ru/download/games/technoshock_140b_en.zip" "http://tiflocomp.ru/download/games/technoshock140b_en_update.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/technoshock_140b_en.zip"
|
|
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/technoshock_140b_en_update.zip"
|
|
wine "$WINEPREFIX/drive_c/Program Files/setup_eng.exe" /silent
|
|
wineserver -w
|
|
wine "$WINEPREFIX/drive_c/Program Files/setup_eng_update_pack.exe" /silent
|
|
add_launcher "c:\Program Files\Tiflocomp Games\Technoshock\ts.exe"
|
|
;;
|
|
"Top Speed 3")
|
|
install_wine_bottle directplay
|
|
download "https://github.com/PlayingintheDark/TopSpeed/releases/download/h/Tspeed_3.0.3.exe"
|
|
wine "${cache}/Tspeed_3.0.3.exe" /silent
|
|
add_launcher "c:\Program Files\Playing in the dark\Top Speed 3\TopSpeed.exe"
|
|
;;
|
|
"Undead Assault")
|
|
export winVer="win7"
|
|
install_wine_bottle speechsdk
|
|
download "http://undead-assault.com/static/files/public/undead_assault.zip" "https://stormgames.wolfe.casa/downloads/nvdaControllerClient32.dll"
|
|
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" "{}" \;
|
|
add_launcher "c:\Program Files\undead_assault\Undead Assault.exe"
|
|
;;
|
|
"Make a One Time Donation")
|
|
xdg-open "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=stormdragon2976@gmail.com&lc=US&item_name=Donation+to+Storm+Games&no_note=0&cn=¤cy_code=USD&bn=PP-DonationsBF:btn_donateCC_LG.gif:NonHosted"
|
|
;;
|
|
"Become a Patron")
|
|
xdg-open "https://patreon.com/stormux"
|
|
;;
|
|
*)
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
exit 0
|