#!/usr/bin/env bash # Set up the pk3 and wad files gameOption=( "${gamePath}/TobyAccMod_V${tobyVersion}.pk3" "$gamePath/Addons/MENU/TobyV*_"* ) # Get a list of pk3s to use for the custom death match. mapfile -t pk3List < <(find "${gamePath}" -maxdepth 1 -mindepth 1 -size +10M -iname '*.pk3') if [[ -e "${gamePath}/aoddoom1.wad" ]]; then pk3List+=("${gamePath}/aoddoom1.wad") fi declare -a pk3Menu for i in "${pk3List[@]}" ; do title="${i##*/}" title="${title%.*}" pk3Menu+=("${i}" "${title}") done # Death match setup ipAddress="$(dialog --backtitle "Deathmatch Options" \ --clear \ --no-tags \ --ok-label "Join" \ --cancel-label "Exit" \ --extra-button \ --extra-label "Host" \ --inputbox "Enter ip or URL, required for join." -1 -1 --stdout)" buttonCode=$? [[ $buttonCode -eq 1 ]] && exit 0 pk3="$(dialog --backtitle "Select Customization" \ --clear \ --no-tags \ --cancel-label "Exit" \ --ok-label "Next" \ --menu "Please select one" 0 0 0 "${pk3Menu[@]}" --stdout)" [[ $? -ne 0 ]] && exit 0 if [[ $buttonCode -eq 0 ]]; then if [[ "${#ipAddress}" -lt 3 ]]; then dialog --backtitle "Deathmatch" --clear --msgbox "No ip address or URL given." -1 -1 --stdout exit 1 fi flags=('-join' "${ipAddress}" '+Toby_SnapToTargetTargetingMode' '0') else # List of maps included: maps=( "1" "Com Station (2-4 players)" "2" "Warehouse (2-4 players)" "3" "Sector 3 (2-4 players)" "4" "Dungeon of Doom (2-4 players)" "5" "Ocean Fortress (2-4 players)" "6" "Water Treatment Facility (2-4 players)" "7" "Phobos Base Site 4 (2-4 players)" "8" "Hangar Bay 18 (2-4 players)" "9" "Garden of Demon (2-4 players)" "10" "Outpost 69 (2-4 players)") # Array of how many players a given map supports in dialog rangebox syntax declare -a mapPlayers=( [1]="2 4" [2]="2 4" [3]="2 4" [4]="2 4" [5]="2 4" [6]="2 4" [7]="2 4" [8]="2 4" [9]="2 4" [10]="2 4") map="$(dialog --backtitle "Select Map" \ --clear \ --no-tags \ --cancel-label "Exit" \ --ok-label "Next" \ --menu "Please select one" 0 0 0 "${maps[@]}" --stdout)" fraglimit="$(dialog --backtitle "Fraglimit" \ --clear \ --ok-label "Next" \ --cancel-label "Exit" \ --rangebox "Select Fraglimit" -1 -1 1 500 20 --stdout)" [[ $? -eq 1 ]] && exit 0 # Get ip address yourIpAddress="$(curl -4s https://icanhazip.com)" players="$(dialog --backtitle "Host Deathmatch Game" \ --clear \ --ok-label "Next" \ --cancel-label "Exit" \ --rangebox "Select number of players. Remember to give them your IP address: ${yourIpAddress}" -1 -1 ${mapPlayers[$map]} --stdout)" [[ $? -eq 1 ]] && exit 0 skillLevel="$(dialog --backtitle "Host Deathmatch Game" \ --clear \ --ok-label "Start" \ --cancel-label "Exit" \ --extra-button \ --extra-label "Bots Only" \ --rangebox "Select difficulty. 1 easiest, 5 hardest." -1 -1 1 5 3 --stdout)" code=$? [[ $code -eq 1 ]] && exit 0 if [[ $code -eq 3 ]]; then players=1 dialog --backtitle "Preparing to Launch" \ --msgbox "When the game starts, press \` to open the console. Type addbot, press enter. Repeat addbot for as many bots as you would like. Press \` again to close the console." -1 -1 --stdout fi flags=( '-host' "${players}" '-skill' "${skillLevel}" '-deathmatch' '+Toby_SnapToTargetTargetingMode' '0' '+set' 'sv_cheats' '1' '+fraglimit' "$fraglimit" '+dmflags' '16384' '+dmflags' '4' '+dmflags' '128' '+dmflags' '4096' '+dmflags2' '512' '+dmflags2' '1024' '-extratic' '-dup' '3' '-warp' "$map" ) fi gameOption+=("${pk3}" "${gamePath}/Addons/MAPS/TobyDeathArena_V1-5.wad" )