├── .gitignore ├── header.bmp ├── src ├── icon.tga ├── maps │ ├── hldemo1.bsp │ ├── hldemo2.bsp │ ├── hldemo3.bsp │ └── graphs │ │ ├── hldemo1.nod │ │ ├── hldemo2.nod │ │ └── hldemo3.nod ├── sound │ ├── sentences.txt │ └── scientist │ │ ├── c1a4_dying.wav │ │ └── c1a4_sci_rocket.wav ├── resource │ ├── game_menu.tga │ ├── game_menu_mouseover.tga │ ├── background │ │ ├── 320_1_a_loading.tga │ │ ├── 320_1_b_loading.tga │ │ ├── 640_1_c_splash.tga │ │ ├── 640_2_a_splash.tga │ │ ├── 640_2_b_splash.tga │ │ └── 640_2_c_splash.tga │ ├── BackgroundLoadingLayout.txt │ ├── BackgroundLayout.txt │ └── GameMenu.res ├── run_hlulsl.sh ├── liblist.gam └── titles.txt ├── welcomefinish.bmp ├── .github └── workflows │ └── ci.yml ├── README.md ├── install.sh ├── hlulsl.nsi └── LICENSE.md /.gitignore: -------------------------------------------------------------------------------- 1 | hlulsl-setup.exe 2 | -------------------------------------------------------------------------------- /header.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/header.bmp -------------------------------------------------------------------------------- /src/icon.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/icon.tga -------------------------------------------------------------------------------- /welcomefinish.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/welcomefinish.bmp -------------------------------------------------------------------------------- /src/maps/hldemo1.bsp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/maps/hldemo1.bsp -------------------------------------------------------------------------------- /src/maps/hldemo2.bsp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/maps/hldemo2.bsp -------------------------------------------------------------------------------- /src/maps/hldemo3.bsp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/maps/hldemo3.bsp -------------------------------------------------------------------------------- /src/sound/sentences.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/sound/sentences.txt -------------------------------------------------------------------------------- /src/resource/game_menu.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/resource/game_menu.tga -------------------------------------------------------------------------------- /src/maps/graphs/hldemo1.nod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/maps/graphs/hldemo1.nod -------------------------------------------------------------------------------- /src/maps/graphs/hldemo2.nod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/maps/graphs/hldemo2.nod -------------------------------------------------------------------------------- /src/maps/graphs/hldemo3.nod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/maps/graphs/hldemo3.nod -------------------------------------------------------------------------------- /src/sound/scientist/c1a4_dying.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/sound/scientist/c1a4_dying.wav -------------------------------------------------------------------------------- /src/resource/game_menu_mouseover.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/resource/game_menu_mouseover.tga -------------------------------------------------------------------------------- /src/sound/scientist/c1a4_sci_rocket.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/sound/scientist/c1a4_sci_rocket.wav -------------------------------------------------------------------------------- /src/resource/background/320_1_a_loading.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/resource/background/320_1_a_loading.tga -------------------------------------------------------------------------------- /src/resource/background/320_1_b_loading.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/resource/background/320_1_b_loading.tga -------------------------------------------------------------------------------- /src/resource/background/640_1_c_splash.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/resource/background/640_1_c_splash.tga -------------------------------------------------------------------------------- /src/resource/background/640_2_a_splash.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/resource/background/640_2_a_splash.tga -------------------------------------------------------------------------------- /src/resource/background/640_2_b_splash.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/resource/background/640_2_b_splash.tga -------------------------------------------------------------------------------- /src/resource/background/640_2_c_splash.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rfinnie/hlulsl/HEAD/src/resource/background/640_2_c_splash.tga -------------------------------------------------------------------------------- /src/resource/BackgroundLoadingLayout.txt: -------------------------------------------------------------------------------- 1 | resolution 320 200 2 | 3 | resource/background/320_1_a_loading.tga scaled 0 0 4 | resource/background/320_1_b_loading.tga scaled 256 0 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/resource/BackgroundLayout.txt: -------------------------------------------------------------------------------- 1 | resolution 640 480 2 | 3 | resource/background/640_1_a_splash.tga scaled 0 0 4 | resource/background/640_1_b_splash.tga scaled 256 0 5 | resource/background/640_1_c_splash.tga scaled 512 0 6 | 7 | resource/background/640_2_a_splash.tga scaled 0 256 8 | resource/background/640_2_b_splash.tga scaled 256 256 9 | resource/background/640_2_c_splash.tga scaled 512 256 10 | -------------------------------------------------------------------------------- /src/run_hlulsl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # HL!UL!SL run_hlulsl 4 | # Copyright (C) 2013-2021 Ryan Finnie 5 | # SPDX-License-Identifier: MPL-2.0 6 | 7 | hldir="$(dirname "$(dirname "$(readlink "$0")")")" 8 | MODNAME="hlulsl" 9 | 10 | if [ -x "$hldir/hl.sh" ]; then 11 | exec "$hldir/hl.sh" -game ${MODNAME} "$@" 12 | else 13 | echo "Cannot find hl.sh!" 14 | echo "Please use install.sh to install to the appropriate directory." 15 | exit 1 16 | fi 17 | -------------------------------------------------------------------------------- /src/liblist.gam: -------------------------------------------------------------------------------- 1 | // HL!UL!SL - Half-Life: Uplink for Steam 2 | // Ported to Steam by Ryan Finnie 3 | // https://www.halflifeuplink.com/hlulsl 4 | 5 | game "Half-Life: Uplink" 6 | icon "icon" 7 | developer "Valve" 8 | developer_url "http://www.valvesoftware.com/" 9 | manual "https://www.halflifeuplink.com/hlulsl" 10 | 11 | startmap "hldemo1" 12 | trainmap "t0a0" 13 | gamedll "dlls/hl.dll" 14 | gamedll_linux "dlls/hl.so" 15 | gamedll_osx "dlls/hl.dylib" 16 | type "singleplayer_only" 17 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | on: [push, pull_request] 3 | jobs: 4 | build: 5 | runs-on: windows-latest 6 | steps: 7 | - uses: actions/checkout@v2 8 | - name: Install Scoop 9 | run: | 10 | iex "& {$(irm get.scoop.sh)} -RunAsAdmin" 11 | scoop bucket add extras 12 | scoop install nsis 13 | - name: Print NSIS version 14 | run: makensis -VERSION 15 | - name: Print NSIS compile flags 16 | run: makensis -HDRINFO 17 | - name: makensis 18 | run: makensis hlulsl.nsi 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HL!UL!SL - Half-Life: Uplink for Steam 2 | 3 | * Ported by [Ryan Finnie](https://www.finnie.org/) 4 | * [Mod web site](https://www.halflifeuplink.com/hlulsl) 5 | 6 | ## About 7 | 8 | HL!UL!SL is an effort to run Half-Life: Uplink from Steam as easily as possible, while leaving it as true to the original demo as possible. No in-game content has been modified, and the "loading" and menu backgrounds are taken directly from the original Half-Life: Uplink, as opposed to the generic Half-Life screens in Steam. 9 | 10 | ## Installation 11 | 12 | Please see [the mod web site](https://www.halflifeuplink.com/hlulsl) for installation instructions. 13 | 14 | ## Thanks 15 | 16 | * Valve Software, of course, for Half-Life, Half-Life: Uplink and Steam. 17 | * Jason Stephens' Uplink Lite, for inspiring me to create a proper "mod" for Half-Life: Uplink. 18 | * Werner Spahl's Uplink Addon, for fixing the scientist-speaking-with-two-tongues bug. 19 | * "Rusty Le Cyborg", for showing how to remove the multiplayer options from the main menu. 20 | * All contributors who have submitted [Github pull requests and issues](https://github.com/rfinnie/steamlink/issues?q=). 21 | -------------------------------------------------------------------------------- /src/resource/GameMenu.res: -------------------------------------------------------------------------------- 1 | "GameMenu" 2 | { 3 | "1" 4 | { 5 | "label" "#GameUI_GameMenu_ResumeGame" 6 | "command" "ResumeGame" 7 | "OnlyInGame" "1" 8 | } 9 | "2" 10 | { 11 | "label" "#GameUI_GameMenu_Disconnect" 12 | "command" "Disconnect" 13 | "OnlyInGame" "1" 14 | "notsingle" "1" 15 | } 16 | "3" 17 | { 18 | "label" "#GameUI_GameMenu_PlayerList" 19 | "command" "OpenPlayerListDialog" 20 | "OnlyInGame" "1" 21 | "notsingle" "1" 22 | } 23 | "4" 24 | { 25 | "label" "" 26 | "command" "" 27 | "OnlyInGame" "1" 28 | } 29 | "5" 30 | { 31 | "label" "#GameUI_GameMenu_NewGame" 32 | "command" "OpenNewGameDialog" 33 | "notmulti" "1" 34 | } 35 | "6" 36 | { 37 | "label" "#GameUI_GameMenu_LoadGame" 38 | "command" "OpenLoadGameDialog" 39 | "notmulti" "1" 40 | } 41 | "7" 42 | { 43 | "label" "#GameUI_GameMenu_SaveGame" 44 | "command" "OpenSaveGameDialog" 45 | "notmulti" "1" 46 | "OnlyInGame" "1" 47 | } 48 | // "8" 49 | // { 50 | // "label" "" 51 | // "command" "" 52 | // "notmulti" "1" 53 | // } 54 | // "9" 55 | // { 56 | // "label" "#GameUI_GameMenu_FindServers" 57 | // "command" "OpenServerBrowser" 58 | // "notsingle" "1" 59 | // } 60 | // "10" 61 | // { 62 | // "label" "#GameUI_GameMenu_CreateServer" 63 | // "command" "OpenCreateMultiplayerGameDialog" 64 | // "notsingle" "1" 65 | // } 66 | // "11" 67 | // { 68 | // "name" "LoadDemo" 69 | // "label" "#GameUI_GameMenu_PlayDemo" 70 | // "command" "OpenLoadDemoDialog" 71 | // } 72 | "12" 73 | { 74 | "label" "" 75 | "command" "" 76 | "notsingle" "1" 77 | } 78 | "13" 79 | { 80 | "label" "#GameUI_GameMenu_ChangeGame" 81 | "command" "OpenChangeGameDialog" 82 | "notsteam" "1" 83 | "notsingle" "1" 84 | "notmulti" "1" 85 | } 86 | "14" 87 | { 88 | "label" "#GameUI_GameMenu_Options" 89 | "command" "OpenOptionsDialog" 90 | } 91 | "15" 92 | { 93 | "label" "#GameUI_GameMenu_Quit" 94 | "command" "Quit" 95 | } 96 | } -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # HL!UL!SL install 4 | # Copyright (C) 2013-2021 Ryan Finnie 5 | # SPDX-License-Identifier: MPL-2.0 6 | 7 | set -e 8 | 9 | S="$(dirname "$0")" 10 | PRODUCT_NAME="HL!UL!SL - Half-Life: Uplink for Steam" 11 | MODNAME="hlulsl" 12 | 13 | if [ -n "$1" ]; then 14 | if [ -e "$1/hl.sh" ]; then 15 | INSTDIR="$1" 16 | else 17 | echo "$1 does not appear to be a valid Half-Life installation." 18 | exit 1 19 | fi 20 | else 21 | for dir in \ 22 | "$HOME/.steam/steam/steamapps/common/Half-Life" \ 23 | "$HOME/.steam/root/SteamApps/common/Half-Life" \ 24 | "$HOME/.local/share/Steam/SteamApps/common/Half-Life" \ 25 | "$HOME/Library/Application\ Support/Steam/SteamApps/common/Half-Life" \ 26 | "$HOME/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Half-Life" \ 27 | ; do 28 | if [ -e "${dir}/hl.sh" ]; then 29 | INSTDIR="${dir}" 30 | break 31 | fi 32 | done 33 | fi 34 | if [ -z "${INSTDIR}" ]; then 35 | echo "Cannot find Steam Half-Life installation directory!" 36 | echo "Please provide it by running:" 37 | echo " $0 /path/to/Steam/SteamApps/common/Half-Life" 38 | exit 1 39 | fi 40 | 41 | echo "Ready to install ${PRODUCT_NAME} to: $INSTDIR/${MODNAME}" 42 | echo "Proceed? [y/N]"; read CONFIRM 43 | if [ ! "$CONFIRM" = "y" ] && [ ! "$CONFIRM" = "Y" ]; then 44 | echo "Exiting." 45 | exit 1 46 | fi 47 | 48 | echo 49 | 50 | # Copy files 51 | mkdir -p "$INSTDIR/${MODNAME}" 52 | cp -a "$S"/src/* "$INSTDIR/${MODNAME}/" 53 | 54 | # Hack to make the menu item in Steam work 55 | if [ -e "$INSTDIR/hl.exe" ]; then 56 | if [ ! -h "$INSTDIR/hl.exe" ]; then 57 | echo "WARNING: hl.exe exists, but is not a symlink." 58 | echo "Did Steam install the base Windows version of Half-Life?" 59 | echo "Launching Half-Life: Uplink from the Steam menu will not likely work." 60 | echo 61 | fi 62 | else 63 | ln -s hl.sh "$INSTDIR/hl.exe" 64 | fi 65 | 66 | # Install symlink 67 | [ -d "$HOME/bin" ] || mkdir -p "$HOME/bin" 68 | ln -sf "$INSTDIR/${MODNAME}/run_${MODNAME}.sh" "$HOME/bin/${MODNAME}" 69 | 70 | echo "Done! You may launch ${PRODUCT_NAME} by running:" 71 | echo " $HOME/bin/${MODNAME}" 72 | -------------------------------------------------------------------------------- /hlulsl.nsi: -------------------------------------------------------------------------------- 1 | ; HL!UL!SL hlulsl.nsi 2 | ; Copyright (C) 2013-2021 Ryan Finnie 3 | ; SPDX-License-Identifier: MPL-2.0 4 | 5 | SetCompressor /FINAL /SOLID lzma 6 | 7 | ; HM NIS Edit Wizard helper defines 8 | !define PRODUCT_NAME "HL!UL!SL - Half-Life: Uplink for Steam" 9 | !define PRODUCT_VERSION "2.1" 10 | !define PRODUCT_PUBLISHER "Ryan Finnie" 11 | !define PRODUCT_WEB_SITE "https://www.halflifeuplink.com/hlulsl" 12 | !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" 13 | !define PRODUCT_UNINST_ROOT_KEY "HKCU" 14 | !DEFINE MODNAME "hlulsl" 15 | 16 | !include "MUI2.nsh" 17 | 18 | ; MUI Settings 19 | !define MUI_ABORTWARNING 20 | !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" 21 | !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" 22 | !define MUI_HEADERIMAGE 23 | !define MUI_HEADERIMAGE_BITMAP "header.bmp" 24 | !define MUI_WELCOMEFINISHPAGE_BITMAP "welcomefinish.bmp" 25 | 26 | !define MUI_WELCOMEPAGE_TEXT "Version ${PRODUCT_VERSION}$\r$\n${PRODUCT_WEB_SITE}$\r$\n$\r$\nThis wizard will guide you through the installation of ${PRODUCT_NAME}.$\r$\n$\r$\n${PRODUCT_NAME} requires Steam, and Half-Life to be installed and run at least once. This setup will automatically determine the correct folder to install into for your Steam profile.$\r$\n$\r$\nClick Next to continue." 27 | !define MUI_FINISHPAGE_TEXT "${PRODUCT_NAME} has been installed on your computer.$\r$\n$\r$\nSteam must be restarted for Half-Life: Uplink to show on the games list.$\r$\n$\r$\nClick Finish to close this wizard." 28 | !define MUI_DIRECTORYPAGE_TEXT_DESTINATION "Steam Half-Life Mods Folder" 29 | !define MUI_DIRECTORYPAGE_TEXT_TOP "Setup will install ${PRODUCT_NAME} in the ${MODNAME} subdirectory of the following folder.$\r$\n$\r$\nThis folder has been detected as the proper folder for Half-Life mods for your current Steam profile. To install in a different folder, click Browse and select another folder.$\r$\n$\r$\nClick Install to start the installation." 30 | 31 | ; Welcome page 32 | !insertmacro MUI_PAGE_WELCOME 33 | ; Directory page 34 | !insertmacro MUI_PAGE_DIRECTORY 35 | ; Instfiles page 36 | !insertmacro MUI_PAGE_INSTFILES 37 | ; Finish page 38 | !insertmacro MUI_PAGE_FINISH 39 | 40 | ; Uninstaller pages 41 | !insertmacro MUI_UNPAGE_INSTFILES 42 | 43 | ; Language files 44 | !insertmacro MUI_LANGUAGE "English" 45 | 46 | ; MUI end ------ 47 | 48 | Name "${PRODUCT_NAME}" 49 | OutFile "${MODNAME}-setup.exe" 50 | ; Should always be overwritten by the user's Steam directory (or the installer will exit). 51 | InstallDir "$DESKTOP\${PRODUCT_NAME}" 52 | ShowInstDetails show 53 | ShowUnInstDetails show 54 | 55 | ; Nothing needs admin-level privileges 56 | RequestExecutionLevel user 57 | 58 | Section "MainSection" SEC01 59 | SetOutPath "$INSTDIR\${MODNAME}" 60 | SetOverwrite try 61 | File "src\icon.tga" 62 | File "src\liblist.gam" 63 | SetOutPath "$INSTDIR\${MODNAME}\maps\graphs" 64 | File "src\maps\graphs\hldemo1.nod" 65 | File "src\maps\graphs\hldemo2.nod" 66 | File "src\maps\graphs\hldemo3.nod" 67 | SetOutPath "$INSTDIR\${MODNAME}\maps" 68 | File "src\maps\hldemo1.bsp" 69 | File "src\maps\hldemo2.bsp" 70 | File "src\maps\hldemo3.bsp" 71 | SetOutPath "$INSTDIR\${MODNAME}\resource\background" 72 | File "src\resource\background\320_1_a_loading.tga" 73 | File "src\resource\background\320_1_b_loading.tga" 74 | File "src\resource\background\640_1_a_splash.tga" 75 | File "src\resource\background\640_1_b_splash.tga" 76 | File "src\resource\background\640_1_c_splash.tga" 77 | File "src\resource\background\640_2_a_splash.tga" 78 | File "src\resource\background\640_2_b_splash.tga" 79 | File "src\resource\background\640_2_c_splash.tga" 80 | SetOutPath "$INSTDIR\${MODNAME}\resource" 81 | File "src\resource\BackgroundLayout.txt" 82 | File "src\resource\BackgroundLoadingLayout.txt" 83 | File "src\resource\GameMenu.res" 84 | File "src\resource\game_menu.tga" 85 | File "src\resource\game_menu_mouseover.tga" 86 | SetOutPath "$INSTDIR\${MODNAME}\sound\scientist" 87 | File "src\sound\scientist\c1a4_dying.wav" 88 | File "src\sound\scientist\c1a4_sci_rocket.wav" 89 | SetOutPath "$INSTDIR\${MODNAME}\sound" 90 | File "src\sound\sentences.txt" 91 | SetOutPath "$INSTDIR\${MODNAME}" 92 | File "src\titles.txt" 93 | SectionEnd 94 | 95 | Section -AdditionalIcons 96 | CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}" 97 | SetOutPath "$INSTDIR" 98 | CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Half-Life Uplink.lnk" "$INSTDIR\hl.exe" "-game ${MODNAME}" 99 | SetOutPath "$INSTDIR\${MODNAME}" 100 | CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall ${PRODUCT_NAME}.lnk" "$INSTDIR\${MODNAME}\uninst.exe" 101 | SectionEnd 102 | 103 | Section -Post 104 | WriteUninstaller "$INSTDIR\${MODNAME}\uninst.exe" 105 | WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" 106 | WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\${MODNAME}\uninst.exe" 107 | WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" 108 | WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" 109 | WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" 110 | SectionEnd 111 | 112 | 113 | Function un.onUninstSuccess 114 | HideWindow 115 | MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." 116 | FunctionEnd 117 | 118 | Function un.onInit 119 | MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 120 | Abort 121 | FunctionEnd 122 | 123 | Section Uninstall 124 | Delete "$INSTDIR\${MODNAME}\uninst.exe" 125 | Delete "$INSTDIR\${MODNAME}\titles.txt" 126 | Delete "$INSTDIR\${MODNAME}\sound\sentences.txt" 127 | Delete "$INSTDIR\${MODNAME}\sound\scientist\c1a4_sci_rocket.wav" 128 | Delete "$INSTDIR\${MODNAME}\sound\scientist\c1a4_dying.wav" 129 | Delete "$INSTDIR\${MODNAME}\resource\game_menu_mouseover.tga" 130 | Delete "$INSTDIR\${MODNAME}\resource\game_menu.tga" 131 | Delete "$INSTDIR\${MODNAME}\resource\GameMenu.res" 132 | Delete "$INSTDIR\${MODNAME}\resource\BackgroundLoadingLayout.txt" 133 | Delete "$INSTDIR\${MODNAME}\resource\BackgroundLayout.txt" 134 | Delete "$INSTDIR\${MODNAME}\resource\background\640_2_c_splash.tga" 135 | Delete "$INSTDIR\${MODNAME}\resource\background\640_2_b_splash.tga" 136 | Delete "$INSTDIR\${MODNAME}\resource\background\640_2_a_splash.tga" 137 | Delete "$INSTDIR\${MODNAME}\resource\background\640_1_c_splash.tga" 138 | Delete "$INSTDIR\${MODNAME}\resource\background\640_1_b_splash.tga" 139 | Delete "$INSTDIR\${MODNAME}\resource\background\640_1_a_splash.tga" 140 | Delete "$INSTDIR\${MODNAME}\resource\background\320_1_b_loading.tga" 141 | Delete "$INSTDIR\${MODNAME}\resource\background\320_1_a_loading.tga" 142 | Delete "$INSTDIR\${MODNAME}\maps\hldemo3.bsp" 143 | Delete "$INSTDIR\${MODNAME}\maps\hldemo2.bsp" 144 | Delete "$INSTDIR\${MODNAME}\maps\hldemo1.bsp" 145 | Delete "$INSTDIR\${MODNAME}\maps\graphs\hldemo3.nod" 146 | Delete "$INSTDIR\${MODNAME}\maps\graphs\hldemo2.nod" 147 | Delete "$INSTDIR\${MODNAME}\maps\graphs\hldemo1.nod" 148 | Delete "$INSTDIR\${MODNAME}\liblist.gam" 149 | Delete "$INSTDIR\${MODNAME}\icon.tga" 150 | 151 | Delete "$SMPROGRAMS\${PRODUCT_NAME}\Half-Life Uplink.lnk" 152 | Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall ${PRODUCT_NAME}.lnk" 153 | 154 | RMDir "$SMPROGRAMS\${PRODUCT_NAME}" 155 | RMDir "$INSTDIR\${MODNAME}\sound\scientist" 156 | RMDir "$INSTDIR\${MODNAME}\sound" 157 | RMDir "$INSTDIR\${MODNAME}\resource\background" 158 | RMDir "$INSTDIR\${MODNAME}\resource" 159 | RMDir "$INSTDIR\${MODNAME}\maps\graphs" 160 | RMDir "$INSTDIR\${MODNAME}\maps" 161 | RMDir "$INSTDIR\${MODNAME}" 162 | 163 | DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" 164 | SetAutoClose true 165 | SectionEnd 166 | 167 | LangString SteamNotInstalled ${LANG_ENGLISH} "Steam is not detected! Please install Steam and sign in to a Steam profile before starting ${PRODUCT_NAME} Setup.$\r$\n$\r$\nThis setup will now exit." 168 | 169 | Function .onInit 170 | ReadRegStr $R0 HKCU "Software\Valve\Steam" "ModInstallPath" 171 | StrCmp $R0 "" noSteam 172 | Goto +3 173 | 174 | noSteam: 175 | MessageBox MB_OK|MB_ICONSTOP $(SteamNotInstalled) 176 | Abort 177 | 178 | StrCpy $INSTDIR "$R0" 179 | FunctionEnd 180 | -------------------------------------------------------------------------------- /src/titles.txt: -------------------------------------------------------------------------------- 1 | //TITLES FOR HALF-LIFE 2 | // Position command $position x y 3 | // x & y are from 0 to 1 to be screen resolution independent 4 | // -1 means center in each dimension 5 | // Effect command $effect 6 | // effect 0 is fade in/fade out 7 | // effect 1 is flickery credits 8 | // effect 2 is write out (training room) 9 | // Text color r g b command $color 10 | // fadein time fadeout time / hold time 11 | // $fadein (message fade in time - per character in effect 2) 12 | // $fadeout (message fade out time) 13 | // $holdtime (stay on the screen for this long) 14 | 15 | //INTRO TITLES 16 | // All centered for now 17 | $position -1 -1 18 | $effect 2 19 | // This is the final color 20 | $color 100 100 100 21 | // This is the highlight color 22 | $color2 240 110 0 23 | // This is the time it takes to fade each character 24 | $fadein 0.01 25 | // This is the amount of time the highlight lags behind the leading edge of the text 26 | $fxtime 0.25 27 | // How long to hold the message on the screen (after it scans out) 28 | $holdtime 3.5 29 | // How long it takes to fade out the message after holding 30 | $fadeout 1.5 31 | 32 | CR27 33 | { 34 | Black Mesa Research Facility 35 | Black Mesa, New Mexico 36 | } 37 | 38 | 39 | //INTRO CREDITS 40 | // Test values -- JAY 41 | // Lower left 42 | $position 0.1 0.8 43 | $effect 1 44 | // Final fade-in color 45 | $color 128 128 128 46 | // This is the highlight/flash color 47 | $color2 0 0 0 48 | $fadein 1.5 49 | $fadeout 0.5 50 | $holdtime 1.2 51 | 52 | CR1 53 | { 54 | Ted Backman 55 | } 56 | 57 | CR2 58 | { 59 | TK Backman 60 | } 61 | 62 | CR3 63 | { 64 | Kelly Bailey 65 | } 66 | 67 | CR4 68 | { 69 | Yahn Bernier 70 | } 71 | 72 | CR5 73 | { 74 | Ken Birdwell 75 | } 76 | 77 | CR6 78 | { 79 | Steve Bond 80 | } 81 | 82 | CR7 83 | { 84 | Dario Casali 85 | } 86 | 87 | CR8 88 | { 89 | John Cook 90 | } 91 | 92 | CR9 93 | { 94 | Greg Coomer 95 | } 96 | 97 | CR10 98 | { 99 | Wes Cumberland 100 | } 101 | 102 | CR11 103 | { 104 | John Guthrie 105 | } 106 | 107 | CR12 108 | { 109 | Mona Lisa Guthrie 110 | } 111 | 112 | CR13 113 | { 114 | Mike Harrington 115 | } 116 | 117 | CR14 118 | { 119 | Monica Harrington 120 | } 121 | 122 | CR15 123 | { 124 | Brett Johnson 125 | } 126 | 127 | CR16 128 | { 129 | Chuck Jones 130 | } 131 | 132 | CR17 133 | { 134 | Marc Laidlaw 135 | } 136 | 137 | CR18 138 | { 139 | Karen Laur 140 | } 141 | 142 | CR19 143 | { 144 | Randy Lundeen 145 | } 146 | 147 | CR20 148 | { 149 | Yatsze Mark 150 | } 151 | 152 | CR21 153 | { 154 | Lisa Mennet 155 | } 156 | 157 | CR22 158 | { 159 | Gabe Newell 160 | } 161 | 162 | CR23 163 | { 164 | Dave Riller 165 | } 166 | 167 | CR24 168 | { 169 | Aaron Stackpole 170 | } 171 | 172 | CR25 173 | { 174 | Jay Stelly 175 | } 176 | 177 | CR26 178 | { 179 | Harry Teasley 180 | } 181 | 182 | CR35 183 | { 184 | Steve Theodore 185 | } 186 | 187 | CR36 188 | { 189 | Bill Van Buren 190 | } 191 | 192 | CR37 193 | { 194 | Robin Walker 195 | } 196 | 197 | CR38 198 | { 199 | Douglas R. Wood 200 | } 201 | 202 | //END CREDITS 203 | $position -1 -1 204 | $effect 0 205 | // Final fade-in color 206 | $color 128 128 128 207 | // This is the highlight/flash color 208 | $color2 0 0 0 209 | $fadein 0.5 210 | $fadeout 0.5 211 | $holdtime 4 212 | 213 | VALVEIS 214 | { 215 | Valve is: 216 | } 217 | 218 | END1 219 | { 220 | Ted Backman 221 | TK Backman 222 | Kelly Bailey 223 | Yahn Bernier 224 | Ken Birdwell 225 | Steve Bond 226 | Dario Casali 227 | John Cook 228 | Greg Coomer 229 | Wes Cumberland 230 | } 231 | 232 | END2 233 | { 234 | John Guthrie 235 | Mona Lisa Guthrie 236 | Mike Harrington 237 | Monica Harrington 238 | Brett Johnson 239 | Chuck Jones 240 | Marc Laidlaw 241 | Karen Laur 242 | Randy Lundeen 243 | Yatsze Mark 244 | } 245 | 246 | END3 247 | { 248 | Lisa Mennet 249 | Gabe Newell 250 | Dave Riller 251 | Aaron Stackpole 252 | Jay Stelly 253 | Harry Teasley 254 | Steve Theodore 255 | Bill Van Buren 256 | Robin Walker 257 | Douglas R. Wood 258 | } 259 | 260 | //INTRO TITLES 261 | // All centered for now 262 | $position -1 -1 263 | $effect 2 264 | // This is the final color 265 | $color 100 100 100 266 | // This is the highlight color 267 | $color2 240 110 0 268 | // This is the time it takes to fade each character 269 | $fadein 0.01 270 | // This is the amount of time the highlight lags behind the leading edge of the text 271 | $fxtime 0.25 272 | // How long to hold the message on the screen (after it scans out) 273 | $holdtime 3.5 274 | // How long it takes to fade out the message after holding 275 | $fadeout 1.5 276 | 277 | 278 | CR28 279 | { 280 | SUBJECT: 281 | Gordon Freeman 282 | Male, age 27 283 | } 284 | 285 | CR29 286 | { 287 | EDUCATION: 288 | Ph.D., MIT, Theoretical Physics 289 | } 290 | 291 | CR30 292 | { 293 | POSITION: 294 | Research Associate 295 | } 296 | 297 | CR31 298 | { 299 | ASSIGNMENT: 300 | Anomalous Materials Laboratory 301 | } 302 | 303 | CR32 304 | { 305 | CLEARANCE: 306 | Level 3 307 | } 308 | 309 | CR33 310 | { 311 | ADMINISTRATIVE SPONSOR: 312 | Classified 313 | } 314 | 315 | CR34 316 | { 317 | DISASTER RESPONSE PRIORITY: 318 | Discretionary 319 | } 320 | 321 | $fadein 0.03 322 | $holdtime 9 323 | 324 | GAMEOVER 325 | { 326 | SUBJECT: FREEMAN 327 | 328 | STATUS: EVALUATION TERMINATED 329 | 330 | POSTMORTEM: 331 | Subject failed to effectively utilize 332 | human assets in achievement of goal. 333 | } 334 | 335 | $fadein 0.03 336 | $holdtime 9 337 | TRAITOR 338 | { 339 | SUBJECT: FREEMAN 340 | 341 | STATUS: HIRED 342 | 343 | AWAITING ASSIGNMENT 344 | } 345 | 346 | 347 | $fadein 0.03 348 | $holdtime 9 349 | LOSER 350 | { 351 | SUBJECT: FREEMAN 352 | 353 | STATUS: OBSERVATION TERMINATED 354 | 355 | POSTMORTEM: 356 | Subject declined offer of employment. 357 | } 358 | 359 | //CHAPTER TITLES 360 | 361 | $fadein 0.01 362 | $position -1 0.4 363 | $holdtime 3.5 364 | T0A0TITLE 365 | { 366 | HAZARD COURSE 367 | } 368 | 369 | $position -1 0.65 370 | C0A0TITLE 371 | { 372 | BLACK MESA INBOUND 373 | } 374 | 375 | C0A1TITLE 376 | { 377 | ANOMALOUS MATERIALS 378 | } 379 | 380 | C1A1TITLE 381 | { 382 | UNFORESEEN CONSEQUENCES 383 | } 384 | 385 | C1A2TITLE 386 | { 387 | OFFICE COMPLEX 388 | } 389 | 390 | C1A3TITLE 391 | { 392 | "WE'VE GOT HOSTILES" 393 | } 394 | 395 | C1A4TITLE 396 | { 397 | BLAST PIT 398 | } 399 | 400 | C2A1TITLE 401 | { 402 | POWER UP 403 | } 404 | 405 | C2A2TITLE 406 | { 407 | ON A RAIL 408 | } 409 | 410 | C2A3TITLE 411 | { 412 | APPREHENSION 413 | } 414 | 415 | C2A4TITLE1 416 | { 417 | RESIDUE PROCESSING 418 | } 419 | 420 | C2A4TITLE2 421 | { 422 | QUESTIONABLE ETHICS 423 | } 424 | 425 | C2A5TITLE 426 | { 427 | SURFACE TENSION 428 | } 429 | 430 | C3A1TITLE 431 | { 432 | "FORGET ABOUT FREEMAN!" 433 | } 434 | 435 | C3A2TITLE 436 | { 437 | LAMBDA CORE 438 | } 439 | 440 | C4A1TITLE 441 | { 442 | XEN 443 | } 444 | 445 | C4A1ATITLE 446 | { 447 | INTERLOPER 448 | } 449 | 450 | C4A2TITLE 451 | { 452 | GONARCH'S LAIR 453 | } 454 | 455 | C4A3TITLE 456 | { 457 | NIHILANTH 458 | } 459 | 460 | C5TITLE 461 | { 462 | ENDGAME 463 | } 464 | 465 | 466 | // In-Game messages 467 | $position -1 0.65 468 | $effect 2 469 | // This is the final color 470 | $color 100 100 100 471 | // This is the highlight color 472 | $color2 240 110 0 473 | // This is the time it takes to fade each character 474 | $fadein 0.01 475 | // This is the amount of time the highlight lags behind the leading edge of the text 476 | $fxtime 0.25 477 | // How long to hold the message on the screen (after it scans out) 478 | $holdtime 2.0 479 | // How long it takes to fade out the message after holding 480 | $fadeout 0.5 481 | 482 | GAMESAVED 483 | { 484 | Saved... 485 | } 486 | 487 | // Game title 488 | // This is a placeholder to hold the effects controls for the "Half-Life" title 489 | $position -1 -1 490 | // Only effect 0 is supported for game title 491 | $effect 0 492 | // This is the final color 493 | $color 180 180 180 494 | // Not used color2 495 | $color2 0 0 0 496 | // This is the time it takes to fade in the title 497 | $fadein 1.0 498 | // How long to hold the message on the screen (after it scans out) 499 | $holdtime 3.0 500 | // How long it takes to fade out the message after holding 501 | $fadeout 1.5 502 | 503 | GAMETITLE 504 | { 505 | Half-Life 506 | } 507 | 508 | //HAZARD COURSE TEXT 509 | 510 | // Test values -- JAY 511 | $position -1 0.65 512 | // Scan-out text effect 513 | $effect 2 514 | // This is the final color 515 | $color 100 100 100 516 | // This is the highlight color 517 | $color2 0 200 50 518 | // This is the time it takes to fade each character 519 | $fadein 0.005 520 | // This is the amount of time the highlight lags behind the leading edge of the text 521 | $fxtime 0.5 522 | // How long to hold the message on the screen (after it scans out) 523 | $holdtime 3.5 524 | // How long it takes to fade out the message after holding 525 | $fadeout 1.5 526 | 527 | $position -1 0.3 528 | HZBUTTON1 529 | { 530 | PRESS YOUR USE KEY TO PUSH A BUTTON 531 | } 532 | 533 | $position -1 0.65 534 | HZBUTTON2 535 | { 536 | PRESS YOUR USE KEY TO PUSH A BUTTON 537 | } 538 | 539 | HZMOVE 540 | { 541 | MOVE FORWARD BY PRESSING FORWARD KEY 542 | MOVE BACKWARD BY PRESSING BACKWARD KEY 543 | MOVE LEFT BY PRESSING MOVELEFT 544 | MOVE RIGHT BY PRESSING MOVERIGHT 545 | } 546 | 547 | HZJUMP 548 | { 549 | PRESS FORWARD KEY TO RUN FORWARD 550 | PRESS JUMP KEY TO JUMP 551 | } 552 | 553 | HZDUCK 554 | { 555 | PRESS FORWARD KEY TO RUN FORWARD 556 | PRESS DUCK KEY TO DUCK 557 | PRESS FORWARD + DUCK KEYS TOGETHER 558 | TO MOVE IN STEALTH MODE 559 | } 560 | 561 | HZCOMBO 562 | { 563 | PRESS FORWARD KEY TO RUN FORWARD 564 | PRESS JUMP KEY TO JUMP 565 | PRESS DUCK KEY TO DUCK 566 | PRESS JUMP KEY TO JUMP 567 | } 568 | 569 | HZDUCKJUMP 570 | { 571 | PRESS FORWARD + JUMP TOGETHER, 572 | THEN THE DUCK KEY 573 | } 574 | 575 | HZLADDER 576 | { 577 | PRESS FORWARD KEY TO MOVE UP LADDERS 578 | PRESS BACKWARD KEY TO MOVE DOWN LADDERS 579 | } 580 | 581 | HZLJUMP 582 | { 583 | WHILE MOVING FORWARD, 584 | HOLD DOWN DUCK KEY-- 585 | THEN PRESS JUMP 586 | } 587 | 588 | $position -1 0.3 589 | HZLMOD 590 | { 591 | BE SURE YOU PICKED UP THE LONG-JUMP MODULE 592 | AT THE BEGINNING OF THE OBSTACLE 593 | } 594 | 595 | $position -1 0.65 596 | HZMEDKIT 597 | { 598 | USE MED-KITS BY HOLDING DOWN THE USE KEY 599 | HOLD DOWN USE KEY UNTIL HEALTH IS 600 | AT 100 OR KIT IS DEPLETED 601 | } 602 | 603 | HZMOMENT 604 | { 605 | ACTIVATE WHEELS AND DIALS 606 | BY HOLDING DOWN THE USE KEY 607 | HOLD USE KEY UNTIL BRIDGE IS IN POSITION 608 | } 609 | 610 | HZPUSH 611 | { 612 | PRESS FORWARD KEY TO MOVE AGAINST BOX 613 | KEEP PRESSING FORWARD TO PUSH BOX 614 | } 615 | 616 | HZPULL 617 | { 618 | PRESS USE + BACKWARD KEYS TOGETHER 619 | TO PULL BOX BACKWARD 620 | } 621 | 622 | HZCROWBAR 623 | { 624 | MOVE UP TO CROWBAR 625 | PRESS ATTACK1 KEY TO BREAK OBJECTS 626 | } 627 | 628 | HZLITEON 629 | { 630 | PRESS FLASHLIGHT KEY 631 | TO TURN FLASHLIGHT ON 632 | } 633 | 634 | HZLITEOFF 635 | { 636 | PRESS FLASHLIGHT KEY AGAIN 637 | TO TURN FLASHLIGHT OFF 638 | } 639 | 640 | HZWEAPON 641 | { 642 | MOVE UP TO WEAPON TO PICK IT UP 643 | } 644 | 645 | HZFIREWEAP 646 | { 647 | PRESS ATTACK1 KEY FOR PRIMARY ATTACK 648 | PRESS ATTACK2 KEY FOR ALTERNATE ATTACK 649 | PRESS RELOAD KEY TO RELOAD AT WILL 650 | } 651 | 652 | HZARMOR 653 | { 654 | PRESS AND HOLD YOUR USE KEY 655 | HOLD DOWN UNTIL SUIT ARMOR IS CHARGED 656 | OR CHARGER IS DEPLETED 657 | } 658 | 659 | HZSWIM 660 | { 661 | PRESS YOUR FORWARD KEY 662 | AIM WITH THE MOUSE AS YOU SWIM 663 | FIND AIR IF YOU BEGIN TO LOSE HEALTH 664 | WAIT IN THE AIR UNTIL HEALTH 665 | RETURNS TO FORMER LEVEL 666 | } 667 | 668 | HZDAMAGE 669 | { 670 | CERTAIN TYPES OF DAMAGE WILL REGISTER 671 | ON YOUR HEADS-UP DISPLAY. 672 | DIRECTION OF DAMAGE IS INDICATED BY RED 673 | FLASHES IN THE CENTER OF YOUR SCREEN 674 | } 675 | 676 | HZHAZARD 677 | { 678 | RADIATION HAZARDS 679 | ACTIVATE A GEIGER COUNTER 680 | } 681 | 682 | HZSCIENTIST 683 | { 684 | APPROACH SCIENTIST 685 | PRESS USE KEY TO RECEIVE HEALTH FROM SCIENTIST 686 | } 687 | 688 | HZBARNEY 689 | { 690 | APPROACH SECURITY GUARD 691 | PRESS YOUR USE KEY TO GET HIS HELP 692 | WALK TOWARD DOOR AND GUARD 693 | WILL ACTIVATE BUTTONS 694 | } 695 | 696 | HZTRAIN 697 | { 698 | PRESS USE KEY TO ENGAGE TRAIN 699 | PRESS FORWARD KEY TO ACCELERATE 700 | PRESS BACKWARD KEY TO DECELERATE 701 | PRESS USE KEY AGAIN TO DISENGAGE 702 | } 703 | 704 | HZDONE 705 | { 706 | CONGRATULATIONS! 707 | YOU HAVE COMPLETED 708 | THE BLACK MESA HAZARD COURSE. 709 | COME BACK ANY TIME. 710 | } 711 | 712 | 713 | //DEMO CHAPTER TITLES 714 | 715 | $fadein 0.01 716 | $position -1 0.65 717 | $holdtime 3.5 718 | 719 | DEMOTITLE 720 | { 721 | UPLINK 722 | } 723 | 724 | 725 | //DEMO INTRO TEXT 726 | 727 | 728 | $position -1 0.65 729 | $effect 2 730 | $color 100 100 100 731 | $color2 0 200 50 732 | $fadein 0.005 733 | $fxtime 0.5 734 | $holdtime 3.5 735 | $fadeout 2.5 736 | 737 | //FROM INTRO TITLES 738 | // All centered for now 739 | $position -1 -1 740 | $effect 2 741 | // This is the final color 742 | $color 100 100 100 743 | // This is the highlight color 744 | $color2 240 110 0 745 | // This is the time it takes to fade each character 746 | $fadein 0.02 747 | // This is the amount of time the highlight lags behind the leading edge of the text 748 | $fxtime 0.25 749 | // How long to hold the message on the screen (after it scans out) 750 | $holdtime 3.5 751 | // How long it takes to fade out the message after holding 752 | $fadeout 1.5 753 | 754 | 755 | DEMOTXT1 756 | { 757 | SUBJECT: 758 | GORDON FREEMAN, Ph.D. 759 | } 760 | 761 | DEMOTXT2 762 | { 763 | CURRENT LOCATION: 764 | LAMBDA REACTOR COMPLEX 765 | BLACK MESA RESEARCH FACILITY 766 | } 767 | 768 | DEMOTXT3 769 | { 770 | TIME: 771 | CONTAINMENT FAILURE + 48.00 HRS 772 | } 773 | 774 | DEMOTXT4 775 | { 776 | STATUS: 777 | EVALUATION IN PROGRESS 778 | } 779 | 780 | 781 | $holdtime 7.5 782 | 783 | DEMOTXT6 784 | { 785 | CURRENT EVALUATION: 786 | UPLINK COMPLETED. 787 | } 788 | 789 | DEMOTXT7 790 | { 791 | REQUIRE FURTHER DATA. 792 | } -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Mozilla Public License Version 2.0 2 | ================================== 3 | 4 | ### 1. Definitions 5 | 6 | **1.1. “Contributor”** 7 | means each individual or legal entity that creates, contributes to 8 | the creation of, or owns Covered Software. 9 | 10 | **1.2. “Contributor Version”** 11 | means the combination of the Contributions of others (if any) used 12 | by a Contributor and that particular Contributor's Contribution. 13 | 14 | **1.3. “Contribution”** 15 | means Covered Software of a particular Contributor. 16 | 17 | **1.4. “Covered Software”** 18 | means Source Code Form to which the initial Contributor has attached 19 | the notice in Exhibit A, the Executable Form of such Source Code 20 | Form, and Modifications of such Source Code Form, in each case 21 | including portions thereof. 22 | 23 | **1.5. “Incompatible With Secondary Licenses”** 24 | means 25 | 26 | * **(a)** that the initial Contributor has attached the notice described 27 | in Exhibit B to the Covered Software; or 28 | * **(b)** that the Covered Software was made available under the terms of 29 | version 1.1 or earlier of the License, but not also under the 30 | terms of a Secondary License. 31 | 32 | **1.6. “Executable Form”** 33 | means any form of the work other than Source Code Form. 34 | 35 | **1.7. “Larger Work”** 36 | means a work that combines Covered Software with other material, in 37 | a separate file or files, that is not Covered Software. 38 | 39 | **1.8. “License”** 40 | means this document. 41 | 42 | **1.9. “Licensable”** 43 | means having the right to grant, to the maximum extent possible, 44 | whether at the time of the initial grant or subsequently, any and 45 | all of the rights conveyed by this License. 46 | 47 | **1.10. “Modifications”** 48 | means any of the following: 49 | 50 | * **(a)** any file in Source Code Form that results from an addition to, 51 | deletion from, or modification of the contents of Covered 52 | Software; or 53 | * **(b)** any new file in Source Code Form that contains any Covered 54 | Software. 55 | 56 | **1.11. “Patent Claims” of a Contributor** 57 | means any patent claim(s), including without limitation, method, 58 | process, and apparatus claims, in any patent Licensable by such 59 | Contributor that would be infringed, but for the grant of the 60 | License, by the making, using, selling, offering for sale, having 61 | made, import, or transfer of either its Contributions or its 62 | Contributor Version. 63 | 64 | **1.12. “Secondary License”** 65 | means either the GNU General Public License, Version 2.0, the GNU 66 | Lesser General Public License, Version 2.1, the GNU Affero General 67 | Public License, Version 3.0, or any later versions of those 68 | licenses. 69 | 70 | **1.13. “Source Code Form”** 71 | means the form of the work preferred for making modifications. 72 | 73 | **1.14. “You” (or “Your”)** 74 | means an individual or a legal entity exercising rights under this 75 | License. For legal entities, “You” includes any entity that 76 | controls, is controlled by, or is under common control with You. For 77 | purposes of this definition, “control” means **(a)** the power, direct 78 | or indirect, to cause the direction or management of such entity, 79 | whether by contract or otherwise, or **(b)** ownership of more than 80 | fifty percent (50%) of the outstanding shares or beneficial 81 | ownership of such entity. 82 | 83 | 84 | ### 2. License Grants and Conditions 85 | 86 | #### 2.1. Grants 87 | 88 | Each Contributor hereby grants You a world-wide, royalty-free, 89 | non-exclusive license: 90 | 91 | * **(a)** under intellectual property rights (other than patent or trademark) 92 | Licensable by such Contributor to use, reproduce, make available, 93 | modify, display, perform, distribute, and otherwise exploit its 94 | Contributions, either on an unmodified basis, with Modifications, or 95 | as part of a Larger Work; and 96 | * **(b)** under Patent Claims of such Contributor to make, use, sell, offer 97 | for sale, have made, import, and otherwise transfer either its 98 | Contributions or its Contributor Version. 99 | 100 | #### 2.2. Effective Date 101 | 102 | The licenses granted in Section 2.1 with respect to any Contribution 103 | become effective for each Contribution on the date the Contributor first 104 | distributes such Contribution. 105 | 106 | #### 2.3. Limitations on Grant Scope 107 | 108 | The licenses granted in this Section 2 are the only rights granted under 109 | this License. No additional rights or licenses will be implied from the 110 | distribution or licensing of Covered Software under this License. 111 | Notwithstanding Section 2.1(b) above, no patent license is granted by a 112 | Contributor: 113 | 114 | * **(a)** for any code that a Contributor has removed from Covered Software; 115 | or 116 | * **(b)** for infringements caused by: **(i)** Your and any other third party's 117 | modifications of Covered Software, or **(ii)** the combination of its 118 | Contributions with other software (except as part of its Contributor 119 | Version); or 120 | * **(c)** under Patent Claims infringed by Covered Software in the absence of 121 | its Contributions. 122 | 123 | This License does not grant any rights in the trademarks, service marks, 124 | or logos of any Contributor (except as may be necessary to comply with 125 | the notice requirements in Section 3.4). 126 | 127 | #### 2.4. Subsequent Licenses 128 | 129 | No Contributor makes additional grants as a result of Your choice to 130 | distribute the Covered Software under a subsequent version of this 131 | License (see Section 10.2) or under the terms of a Secondary License (if 132 | permitted under the terms of Section 3.3). 133 | 134 | #### 2.5. Representation 135 | 136 | Each Contributor represents that the Contributor believes its 137 | Contributions are its original creation(s) or it has sufficient rights 138 | to grant the rights to its Contributions conveyed by this License. 139 | 140 | #### 2.6. Fair Use 141 | 142 | This License is not intended to limit any rights You have under 143 | applicable copyright doctrines of fair use, fair dealing, or other 144 | equivalents. 145 | 146 | #### 2.7. Conditions 147 | 148 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted 149 | in Section 2.1. 150 | 151 | 152 | ### 3. Responsibilities 153 | 154 | #### 3.1. Distribution of Source Form 155 | 156 | All distribution of Covered Software in Source Code Form, including any 157 | Modifications that You create or to which You contribute, must be under 158 | the terms of this License. You must inform recipients that the Source 159 | Code Form of the Covered Software is governed by the terms of this 160 | License, and how they can obtain a copy of this License. You may not 161 | attempt to alter or restrict the recipients' rights in the Source Code 162 | Form. 163 | 164 | #### 3.2. Distribution of Executable Form 165 | 166 | If You distribute Covered Software in Executable Form then: 167 | 168 | * **(a)** such Covered Software must also be made available in Source Code 169 | Form, as described in Section 3.1, and You must inform recipients of 170 | the Executable Form how they can obtain a copy of such Source Code 171 | Form by reasonable means in a timely manner, at a charge no more 172 | than the cost of distribution to the recipient; and 173 | 174 | * **(b)** You may distribute such Executable Form under the terms of this 175 | License, or sublicense it under different terms, provided that the 176 | license for the Executable Form does not attempt to limit or alter 177 | the recipients' rights in the Source Code Form under this License. 178 | 179 | #### 3.3. Distribution of a Larger Work 180 | 181 | You may create and distribute a Larger Work under terms of Your choice, 182 | provided that You also comply with the requirements of this License for 183 | the Covered Software. If the Larger Work is a combination of Covered 184 | Software with a work governed by one or more Secondary Licenses, and the 185 | Covered Software is not Incompatible With Secondary Licenses, this 186 | License permits You to additionally distribute such Covered Software 187 | under the terms of such Secondary License(s), so that the recipient of 188 | the Larger Work may, at their option, further distribute the Covered 189 | Software under the terms of either this License or such Secondary 190 | License(s). 191 | 192 | #### 3.4. Notices 193 | 194 | You may not remove or alter the substance of any license notices 195 | (including copyright notices, patent notices, disclaimers of warranty, 196 | or limitations of liability) contained within the Source Code Form of 197 | the Covered Software, except that You may alter any license notices to 198 | the extent required to remedy known factual inaccuracies. 199 | 200 | #### 3.5. Application of Additional Terms 201 | 202 | You may choose to offer, and to charge a fee for, warranty, support, 203 | indemnity or liability obligations to one or more recipients of Covered 204 | Software. However, You may do so only on Your own behalf, and not on 205 | behalf of any Contributor. You must make it absolutely clear that any 206 | such warranty, support, indemnity, or liability obligation is offered by 207 | You alone, and You hereby agree to indemnify every Contributor for any 208 | liability incurred by such Contributor as a result of warranty, support, 209 | indemnity or liability terms You offer. You may include additional 210 | disclaimers of warranty and limitations of liability specific to any 211 | jurisdiction. 212 | 213 | 214 | ### 4. Inability to Comply Due to Statute or Regulation 215 | 216 | If it is impossible for You to comply with any of the terms of this 217 | License with respect to some or all of the Covered Software due to 218 | statute, judicial order, or regulation then You must: **(a)** comply with 219 | the terms of this License to the maximum extent possible; and **(b)** 220 | describe the limitations and the code they affect. Such description must 221 | be placed in a text file included with all distributions of the Covered 222 | Software under this License. Except to the extent prohibited by statute 223 | or regulation, such description must be sufficiently detailed for a 224 | recipient of ordinary skill to be able to understand it. 225 | 226 | 227 | ### 5. Termination 228 | 229 | **5.1.** The rights granted under this License will terminate automatically 230 | if You fail to comply with any of its terms. However, if You become 231 | compliant, then the rights granted under this License from a particular 232 | Contributor are reinstated **(a)** provisionally, unless and until such 233 | Contributor explicitly and finally terminates Your grants, and **(b)** on an 234 | ongoing basis, if such Contributor fails to notify You of the 235 | non-compliance by some reasonable means prior to 60 days after You have 236 | come back into compliance. Moreover, Your grants from a particular 237 | Contributor are reinstated on an ongoing basis if such Contributor 238 | notifies You of the non-compliance by some reasonable means, this is the 239 | first time You have received notice of non-compliance with this License 240 | from such Contributor, and You become compliant prior to 30 days after 241 | Your receipt of the notice. 242 | 243 | **5.2.** If You initiate litigation against any entity by asserting a patent 244 | infringement claim (excluding declaratory judgment actions, 245 | counter-claims, and cross-claims) alleging that a Contributor Version 246 | directly or indirectly infringes any patent, then the rights granted to 247 | You by any and all Contributors for the Covered Software under Section 248 | 2.1 of this License shall terminate. 249 | 250 | **5.3.** In the event of termination under Sections 5.1 or 5.2 above, all 251 | end user license agreements (excluding distributors and resellers) which 252 | have been validly granted by You or Your distributors under this License 253 | prior to termination shall survive termination. 254 | 255 | 256 | ### 6. Disclaimer of Warranty 257 | 258 | > Covered Software is provided under this License on an “as is” 259 | > basis, without warranty of any kind, either expressed, implied, or 260 | > statutory, including, without limitation, warranties that the 261 | > Covered Software is free of defects, merchantable, fit for a 262 | > particular purpose or non-infringing. The entire risk as to the 263 | > quality and performance of the Covered Software is with You. 264 | > Should any Covered Software prove defective in any respect, You 265 | > (not any Contributor) assume the cost of any necessary servicing, 266 | > repair, or correction. This disclaimer of warranty constitutes an 267 | > essential part of this License. No use of any Covered Software is 268 | > authorized under this License except under this disclaimer. 269 | 270 | ### 7. Limitation of Liability 271 | 272 | > Under no circumstances and under no legal theory, whether tort 273 | > (including negligence), contract, or otherwise, shall any 274 | > Contributor, or anyone who distributes Covered Software as 275 | > permitted above, be liable to You for any direct, indirect, 276 | > special, incidental, or consequential damages of any character 277 | > including, without limitation, damages for lost profits, loss of 278 | > goodwill, work stoppage, computer failure or malfunction, or any 279 | > and all other commercial damages or losses, even if such party 280 | > shall have been informed of the possibility of such damages. This 281 | > limitation of liability shall not apply to liability for death or 282 | > personal injury resulting from such party's negligence to the 283 | > extent applicable law prohibits such limitation. Some 284 | > jurisdictions do not allow the exclusion or limitation of 285 | > incidental or consequential damages, so this exclusion and 286 | > limitation may not apply to You. 287 | 288 | 289 | ### 8. Litigation 290 | 291 | Any litigation relating to this License may be brought only in the 292 | courts of a jurisdiction where the defendant maintains its principal 293 | place of business and such litigation shall be governed by laws of that 294 | jurisdiction, without reference to its conflict-of-law provisions. 295 | Nothing in this Section shall prevent a party's ability to bring 296 | cross-claims or counter-claims. 297 | 298 | 299 | ### 9. Miscellaneous 300 | 301 | This License represents the complete agreement concerning the subject 302 | matter hereof. If any provision of this License is held to be 303 | unenforceable, such provision shall be reformed only to the extent 304 | necessary to make it enforceable. Any law or regulation which provides 305 | that the language of a contract shall be construed against the drafter 306 | shall not be used to construe this License against a Contributor. 307 | 308 | 309 | ### 10. Versions of the License 310 | 311 | #### 10.1. New Versions 312 | 313 | Mozilla Foundation is the license steward. Except as provided in Section 314 | 10.3, no one other than the license steward has the right to modify or 315 | publish new versions of this License. Each version will be given a 316 | distinguishing version number. 317 | 318 | #### 10.2. Effect of New Versions 319 | 320 | You may distribute the Covered Software under the terms of the version 321 | of the License under which You originally received the Covered Software, 322 | or under the terms of any subsequent version published by the license 323 | steward. 324 | 325 | #### 10.3. Modified Versions 326 | 327 | If you create software not governed by this License, and you want to 328 | create a new license for such software, you may create and use a 329 | modified version of this License if you rename the license and remove 330 | any references to the name of the license steward (except to note that 331 | such modified license differs from this License). 332 | 333 | #### 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses 334 | 335 | If You choose to distribute Source Code Form that is Incompatible With 336 | Secondary Licenses under the terms of this version of the License, the 337 | notice described in Exhibit B of this License must be attached. 338 | 339 | ## Exhibit A - Source Code Form License Notice 340 | 341 | This Source Code Form is subject to the terms of the Mozilla Public 342 | License, v. 2.0. If a copy of the MPL was not distributed with this 343 | file, You can obtain one at http://mozilla.org/MPL/2.0/. 344 | 345 | If it is not possible or desirable to put the notice in a particular 346 | file, then You may include the notice in a location (such as a LICENSE 347 | file in a relevant directory) where a recipient would be likely to look 348 | for such a notice. 349 | 350 | You may add additional accurate notices of copyright ownership. 351 | 352 | ## Exhibit B - “Incompatible With Secondary Licenses” Notice 353 | 354 | This Source Code Form is "Incompatible With Secondary Licenses", as 355 | defined by the Mozilla Public License, v. 2.0. 356 | --------------------------------------------------------------------------------