#!/bin/bash set -xeuo pipefail function steam() { # for systemd, so it can terminate the process (for other things sudo would have been enough) setpriv --reuid=steam --regid=steam --init-groups "$@" <&0 export HOME=/opt/l4d2/steam } declare -A addons=( [Ions_Vocalizer]=698857882 [EMS_Admin_System]=2524204971 ) function install_addon() { local overlay="$1" local addon_name="$2" local addon_id="${addons[${addon_name}]}" steam mkdir -p "/opt/l4d2/overlays/${overlay}/left4dead2/addons" test -f "/opt/l4d2/overlays/${overlay}/left4dead2/addons/${addon_id}.vpk" || \ steam /opt/l4d2/steam-workshop-download "${addon_id}" --out "/opt/l4d2/overlays/${overlay}/left4dead2/addons" } function install_admin_system() { local overlay="$1" install_addon "${overlay}" EMS_Admin_System steam mkdir -p "/opt/l4d2/overlays/${overlay}/left4dead2/ems/admin system" steam echo "STEAM_1:0:12376499" > "/opt/l4d2/overlays/${overlay}/left4dead2/ems/admin system/admins.txt" } function install_tickrate_enabler() { local overlay="$1" steam mkdir -p "/opt/l4d2/overlays/${overlay}/left4dead2/addons" for file in tickrate_enabler.dll tickrate_enabler.so tickrate_enabler.vdf do curl -L "https://github.com/SirPlease/L4D2-Competitive-Rework/raw/refs/heads/master/addons/${file}" -o "/opt/l4d2/overlays/${overlay}/left4dead2/addons/${file}" done }