diff --git a/games-fps/unreal-tournament-data/Manifest b/games-fps/unreal-tournament-data/Manifest new file mode 100644 index 0000000000000..373676636f4cb --- /dev/null +++ b/games-fps/unreal-tournament-data/Manifest @@ -0,0 +1,6 @@ +DIST UT_GOTY_CD1.iso 649633792 BLAKE2B f4054aaf30a90c1992d4592f43a199512da21cf8072a523a78d30dadeb669285001b86aa0d9475e1d687a3ee5afa957a250312d1abe8543d348faea5d57ed6e1 SHA512 a3b0bab60c1e76034ec2f3e3069ddddc56ec5992f0b6419053faa5a72f0518f7349fc1ef2428ec775982f771e45853d37cfffe8f66f330549a83448a7c03ee3a +DIST setup_ut_goty_2.0.0.5.exe 316872152 BLAKE2B 5f83fa23d0a16888702e4db22c717e904e5836e8def35603115e3561e4bc506224172671ae20d5ab4c448f7f237f3c1a4f755fc30f0e4ebb4fbaa484d6dd9ac9 SHA512 228e8b553826d7eaaf2dcacd20675f1d1921337139d61f00e273fc668beeafad451be92a685a6ce73b83bed6379cb8d9bdc95336ae967239b241485c4b4bc1d5 +DIST utbonuspack-zip.zip 13732267 BLAKE2B 7991e6273b4484b422f685a5eda97660ebd5147bbb6d0a5faedb2ef4c07b5cb554c12041f66e53f827479095983afc81a7da631589a77f5fa2b3764630634aeb SHA512 54dd43e082a1ea81631a3c540331efcbc753d687e9c35543cc60cbc27515e92fca81aaf538862eefab1d08556d7bdde458495ce4c6bc8c9c6fce2a2df3ab1131 +DIST utbonuspack2.zip 1594762 BLAKE2B b758f092179e556fed0b6cb3a3931dea10cd81536c27fff25cd2ed02f9e4a0006af1b693a571b54060a6611f94511bb4b4703fd22f69c8989c0b2ba27933182e SHA512 3e7d5961628cb9aadcd044f5b3608186b34d7d5784a96be2d12cd982ac5f1b52404ea8dfc40f16b3324868479f410cce483816056039252d1740fab277eebc87 +DIST utbonuspack3-zip.zip 4799960 BLAKE2B e0dc1b6716d4f89f27cba5efdc12a3a4d014c5fdc8cdc9087cf229e04b23e42f380643979fc5a9c85e9f90586c28d1e44e9efe395b2a6653e508924708e025e0 SHA512 6b7b58aee9148b3a8a2eb65f5753c98c962a79e362f88fcd44e037b8fbb2deadbfb85036d4141dc30fc3bcb3c9ed8e7f84fc5215ac8427b4b1d4d6165ec6ee6d +DIST utbonuspack4-zip.7z 11268844 BLAKE2B 73ab0fa5e6656b371997e449bc3577f48d1bd84343aba9c332f2dda0a92bf36f766943e176a596758160311b5cc3b8e94db2fc938360d954268d19a416506357 SHA512 8ec6f4da1e567665750087bdc27f2284ce7e9c8a698cc0114a5e9663f73810c42bf6010d174232f6c80e16bcfe51090e2a21764f9a0ce75e437ae758d2335c5f diff --git a/games-fps/unreal-tournament-data/files/listings/Help b/games-fps/unreal-tournament-data/files/listings/Help new file mode 100644 index 0000000000000..3e823d97f19b4 --- /dev/null +++ b/games-fps/unreal-tournament-data/files/listings/Help @@ -0,0 +1,7 @@ +BonusPackReadme.txt +BP4Readme.txt +Logo.bmp +ReadMe.htm +Unreal.ico +UnrealTournamentLogo.bmp +UnrealTournamentSetupLogo.bmp diff --git a/games-fps/unreal-tournament-data/files/listings/Maps b/games-fps/unreal-tournament-data/files/listings/Maps new file mode 100644 index 0000000000000..e376f1a219b74 --- /dev/null +++ b/games-fps/unreal-tournament-data/files/listings/Maps @@ -0,0 +1,95 @@ +AS-Frigate.unr +AS-Guardia.unr +AS-HiSpeed.unr +AS-Mazon.unr +AS-OceanFloor.unr +AS-Overlord.unr +AS-Rook.unr +AS-Tutorial.unr +CityIntro.unr +CTF-Beatitude.unr +CTF-Command.unr +CTF-Coret.unr +CTF-Cybrosis][.unr +CTF-Darji16.unr +CTF-Dreary.unr +CTF-EpicBoy.unr +CTF-EternalCave.unr +CTF-Face-SE.unr +CTF-Face.unr +CTF-Face][.unr +CTF-Gauntlet.unr +CTF-HallOfGiants.unr +CTF-High.unr +CTF-Hydro16.unr +CTF-Kosov.unr +CTF-LavaGiant.unr +CTF-Niven.unr +CTF-November.unr +CTF-Noxion16.unr +CTF-Nucleus.unr +CTF-Orbital.unr +CTF-Ratchet.unr +CTF-Tutorial.unr +DM-Agony.unr +DM-ArcaneTemple.unr +DM-Barricade.unr +DM-Bishop.unr +DM-Closer.unr +DM-Codex.unr +DM-Conveyor.unr +DM-Crane.unr +DM-Curse][.unr +DM-Cybrosis][.unr +DM-Deck16][.unr +DM-Fetid.unr +DM-Fractal.unr +DM-Gothic.unr +DM-Grinder.unr +DM-Grit-TOURNEY.unr +DM-HealPod][.unr +DM-HyperBlast.unr +DM-KGalleon.unr +DM-Liandri.unr +DM-Malevolence.unr +DM-Mojo][.unr +DM-Morbias][.unr +DM-Morpheus.unr +DM-Oblivion.unr +DM-Peak.unr +DM-Phobos.unr +DM-Pressure.unr +DM-Pyramid.unr +DM-Shrapnel][.unr +DM-SpaceNoxx.unr +DM-Stalwart.unr +DM-StalwartXL.unr +DM-Tempest.unr +DM-Turbine.unr +DM-Tutorial.unr +DM-Viridian-TOURNEY.unr +DM-Zeto.unr +DOM-Bullet.unr +DOM-Cidom.unr +DOM-Cinder.unr +DOM-Condemned.unr +DOM-Cryptic.unr +DOM-Gearbolt.unr +DOM-Ghardhen.unr +DOM-Lament.unr +DOM-Lament][.unr +DOM-Leadworks.unr +DOM-MetalDream.unr +DOM-Olden.unr +DOM-Sesmar.unr +DOM-Tutorial.unr +DOM-WolfsBay.unr +Entry.unr +EOL_Assault.unr +EOL_Challenge.unr +EOL_CTF.unr +EOL_Deathmatch.unr +EOL_Domination.unr +EOL_Statues.unr +UTCredits.unr +UT-Logo-Map.unr diff --git a/games-fps/unreal-tournament-data/files/listings/Music b/games-fps/unreal-tournament-data/files/listings/Music new file mode 100644 index 0000000000000..9c40fbaff216c --- /dev/null +++ b/games-fps/unreal-tournament-data/files/listings/Music @@ -0,0 +1,30 @@ +Botmca9.umx +Botpck10.umx +Cannon.umx +Colossus.umx +Course.umx +Credits.umx +Ending.umx +Enigma.umx +firebr.umx +Foregone.umx +Godown.umx +Lock.umx +Mech8.umx +Mission.umx +Nether.umx +Organic.umx +Phantom.umx +Razor-ub.umx +Run.umx +Savemeg.umx +SaveMe.umx +Seeker2.umx +Seeker.umx +Skyward.umx +Strider.umx +Suprfist.umx +UnWorld2.umx +utmenu23.umx +Uttitle.umx +Wheels.umx diff --git a/games-fps/unreal-tournament-data/files/listings/Sounds b/games-fps/unreal-tournament-data/files/listings/Sounds new file mode 100644 index 0000000000000..c2cdb388c72c0 --- /dev/null +++ b/games-fps/unreal-tournament-data/files/listings/Sounds @@ -0,0 +1,29 @@ +Activates.uax +Addon1.uax +AmbAncient.uax +AmbCity.uax +AmbModern.uax +AmbOutside.uax +Announcer.uax +BossVoice.uax +DDay.uax +DMatch.uax +DoorsAnc.uax +DoorsMod.uax +Extro.uax +Female1Voice.uax +Female2Voice.uax +FemaleSounds.uax +LadderSounds.uax +Male1Voice.uax +Male2Voice.uax +MaleSounds.uax +noxxsnd.uax +openingwave.uax +Pan1.uax +rain.uax +TutVoiceAS.uax +TutVoiceCTF.uax +TutVoiceDM.uax +TutVoiceDOM.uax +VRikers.uax diff --git a/games-fps/unreal-tournament-data/files/listings/System b/games-fps/unreal-tournament-data/files/listings/System new file mode 100644 index 0000000000000..5d53264b2d35a --- /dev/null +++ b/games-fps/unreal-tournament-data/files/listings/System @@ -0,0 +1,3 @@ +BotPack.u +Manifest.ini +OpenGlDrv.ini diff --git a/games-fps/unreal-tournament-data/files/listings/Textures b/games-fps/unreal-tournament-data/files/listings/Textures new file mode 100644 index 0000000000000..55706ed32c713 --- /dev/null +++ b/games-fps/unreal-tournament-data/files/listings/Textures @@ -0,0 +1,110 @@ +AlfaFX.utx +Ancient.utx +ArenaTex.utx +Belt_fx.utx +BluffFX.utx +BossSkins.utx +castle1.utx +ChizraEFX.utx +city.utx +commandoskins.utx +Coret_FX.utx +Creative.utx +credits.utx +Crypt2.utx +Crypt_FX.utx +Crypt.utx +CTF.utx +DacomaFem.utx +DacomaSkins.utx +DDayFX.utx +DecayedS.utx +Detail.utx +DMeffects.utx +EgyptPan.utx +Egypt.utx +eol.utx +Faces.utx +Factory.utx +FCommandoSkins.utx +Female1Skins.utx +Female2Skins.utx +FireEng.utx +FlareFX.utx +FractalFX.utx +GenEarth.utx +GenFluid.utx +GenFX.utx +GenIn.utx +GenTerra.utx +GenWarp.utx +GothFem.utx +GothSkins.utx +GreatFire2.utx +GreatFire.utx +HubEffects.utx +Indus1.utx +Indus2.utx +Indus3.utx +Indus4.utx +Indus5.utx +Indus6.utx +Indus7.utx +ISVFX.utx +JWSky.utx +LadrArrow.utx +LadrStatic.utx +LavaFX.utx +Lian-X.utx +Liquids.utx +Logo.utx +Male1Skins.utx +Male2Skins.utx +Male3Skins.utx +MenuGr.utx +Metalmys.utx +Mine.utx +NaliCast.utx +NaliFX.utx +NivenFX.utx +noxxpack.utx +of1.utx +Old_FX.utx +Palettes.utx +PhraelFx.utx +PlayrShp.utx +Queen.utx +RainFX.utx +Render.utx +RotatingU.utx +Scripted.utx +SGirlSkins.utx +SGTech1.utx +ShaneChurch.utx +ShaneDay.utx +ShaneSky.utx +Skaarj.utx +SkTrooperSkins.utx +SkyBox.utx +SkyCity.utx +Slums.utx +Soldierskins.utx +SpaceFX.utx +Starship.utx +tcowmeshskins.utx +TCrystal.utx +Terranius.utx +tnalimeshskins.utx +TrenchesFX.utx +tskmskins.utx +UT_ArtFX.utx +UTbase1.utx +UTcrypt.utx +UTtech1.utx +UTtech2.utx +UTtech3.utx +UT.utx +XbpFX.utx +XFX.utx +Xtortion.utx +xutfx.utx diff --git a/games-fps/unreal-tournament-data/metadata.xml b/games-fps/unreal-tournament-data/metadata.xml new file mode 100644 index 0000000000000..f33f842ae33f2 --- /dev/null +++ b/games-fps/unreal-tournament-data/metadata.xml @@ -0,0 +1,42 @@ + + + + + games@gentoo.org + Gentoo Games Project + + + Install from the GOG.com release. Note that the game is no longer sold here. + Download Bonus Packs 1 to 3. Mandatory if installing from the original non-GOTY Edition CD. + + + This package installs just the data files, not the engine, for Epic's + popular first-person shooter game, Unreal Tournament (99). + + Epic privately shared the engine sources with the community OldUnreal + team, who now maintain it and publish modern builds. Epic also, somewhat + informally, gave permission for OldUnreal to host a CD ISO of the game + for the community to download and play for free. + + GamingOnLinux shared this news and confirmed it with Epic here: + https://www.gamingonlinux.com/2024/11/classic-unreal-tournament-and-unreal-now-easier-to-download-free-thanks-to-oldunreal/ + + "We can confirm that Unreal 1 and Unreal Tournament are available on + archive.org and people are free to independently link to and play + these versions." + + Epic's web page for Unreal Tournament links to OldUnreal for downloads: + https://www.epicgames.com/unrealtournament + + By default, this package will fetch that ISO from OldUnreal. If you do + not want to use OldUnreal's ISO, you also have the option to install + from CD, DVD, or GOG instead. Note that the game can no longer be + purchased from GOG or anywhere else. Epic even removed it from their own + store. Also note that the GOG edition lacks the French, German, Italian, + and Spanish sound files. + + If you are installing from the original non Game of the Year Edition CD, + which lacks Bonus Packs 1 to 3, you must enable the bonuspacks USE flag + to download them. Bonus Pack 4 is downloaded unconditionally. + + diff --git a/games-fps/unreal-tournament-data/unreal-tournament-data-436_p4.ebuild b/games-fps/unreal-tournament-data/unreal-tournament-data-436_p4.ebuild new file mode 100644 index 0000000000000..c8c2fd21891c7 --- /dev/null +++ b/games-fps/unreal-tournament-data/unreal-tournament-data-436_p4.ebuild @@ -0,0 +1,209 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CDROM_OPTIONAL="yes" +inherit cdrom check-reqs multiprocessing + +DESCRIPTION="Data files for Unreal Tournament (99)" +HOMEPAGE="https://liandri.beyondunreal.com/Unreal_Tournament" +GOG="setup_ut_goty_2.0.0.5.exe" +SRC_URI=" + fetch+https://files.oldunreal.net/utbonuspack4-zip.7z + !cdinstall? ( !gog? ( fetch+https://files.oldunreal.net/UT_GOTY_CD1.ISO -> UT_GOTY_CD1.iso ) ) + gog? ( ${GOG} ) + bonuspacks? ( + fetch+https://unreal-archive-files-na.s3.ca-east-tor.io.cloud.ovh.net/managed/Unreal%20Tournament/patches-updates/bonus-packs/utbonuspack-zip.zip + fetch+https://unreal-archive-files-na.s3.ca-east-tor.io.cloud.ovh.net/managed/Unreal%20Tournament/patches-updates/bonus-packs/utbonuspack2.zip + fetch+https://unreal-archive-files-na.s3.ca-east-tor.io.cloud.ovh.net/managed/Unreal%20Tournament/patches-updates/bonus-packs/utbonuspack3-zip.zip + ) +" +S="${WORKDIR}" + +LICENSE="Epic-TOS" # See metadata.xml for the legal background. +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="bonuspacks doc gog l10n_es l10n_fr l10n_it" +RESTRICT="bindist gog? ( fetch ) mirror" +REQUIRED_USE=" + ?? ( cdinstall gog ) + !cdinstall? ( !bonuspacks ) +" + +UT_DEPEND=">=games-fps/unreal-tournament-469e" + +BDEPEND=" + ${UT_DEPEND} + app-arch/libarchive + cdinstall? ( app-arch/unshield ) + gog? ( app-arch/innoextract ) +" +RDEPEND=" + ${UT_DEPEND} +" + +# Assuming the OldUnreal ISO. +CHECKREQS_DISK_BUILD="2G" + +pkg_nofetch() { + einfo "Please download ${GOG} from GOG and move it" + einfo "to your distfiles directory. Note that you can no longer buy this" + einfo "game from GOG, so disable USE=\"gog\" to use OldUnreal's free ISO if" + einfo "you don't already own the game." +} + +locale_mismatch() { + case "${1}" in + *.est|*.est_*|3_UnrealTournament_*_Spanish) ! use l10n_es ;; + *.frt|*.frt_*|3_UnrealTournament_*_French) ! use l10n_fr ;; + *.itt|*.itt_*|3_UnrealTournament_*_Italian) ! use l10n_it ;; + *) return 1 ;; + esac +} + +src_unpack() { + if use gog; then + if use l10n_es || use l10n_fr || use l10n_it; then + ewarn "The GOG edition lacks localised audio. Please disable USE=\"gog\" if you" + ewarn "would prefer to use a free game download that does include this content." + echo + fi + + ln -s . app || die + innoextract --extract --include app "${DISTDIR}/${GOG}" || die + else + if use cdinstall; then + ewarn "It is no longer necessary to install this from CD or DVD. Please" + ewarn "disable USE=\"cdinstall\" if you would prefer to download the game for" + ewarn "free." + echo + else + # We might as well handle a downloaded ISO and a user-provided ISO + # the same way through cdrom.eclass. + CD_ROOT="${DISTDIR}/UT_GOTY_CD1.iso" + fi + + # The German Midway DVD doesn't include UT99. + cdrom_get_cds Manuals/UnrealTournament_English.pdf:Maps/DM-SpaceNoxx.unr.uz:Maps/DM-Pressure.unr + + case ${CDROM_SET} in + 0) einfo "Found Midway Unreal Anthology DVD" ;; + 1) einfo "Found Unreal Tournament Game of the Year Edition CD" ;; + 2) einfo "Found Unreal Tournament original CD" ;; + esac + + case ${CDROM_SET} in + 2) + if ! use bonuspacks; then + die "Your installation source lacks Bonus Packs 1 to 3. Please enable USE=\"bonuspacks\" to download them." + fi ;; + *) + if use bonuspacks; then + ewarn "Enabling USE=\"bonuspacks\" just downloads unnecessary files with" + ewarn "this installation source. Please disable it." + fi ;; + esac + + local group dir cdnum + case ${CDROM_SET} in + 0) + # Symlinks for unshield. These files need to be in the same + # directory but on the disk, they are not for some reason. + ln -snf "${CDROM_ROOT}"/{Disk1/data1.hdr,Disk*/data*.cab} "${T}"/ || die + + for group in $(unshield g "${T}"/data1.cab || die); do + case ${group} in + 3_UnrealTournament_System_All) : ;; + 3_UnrealTournament_EXE|3_UnrealTournament_Manual_*|3_UnrealTournament_NetGamesUSA|3_UnrealTournament_System_*|3_UnrealTournament_Web) continue ;; + 3_UnrealTournament_*) : ;; + *) continue ;; + esac + locale_mismatch "${group}" && continue + unshield -g "${group}" x "${T}"/data1.cab || die + done + + for dir in 3_UnrealTournament_*; do + mv -v "${dir}" "${dir#3_UnrealTournament_}" || die + done + + use l10n_es && { rename -v .uax .est_uax Sounds_Spanish/*.uax || die; } + use l10n_fr && { rename -v .uax .frt_uax Sounds_French/*.uax || die; } + use l10n_it && { rename -v .uax .itt_uax Sounds_Italian/*.uax || die; } + + for dir in *_*/; do + mkdir -p "${dir%_*}" || die + tar -C "${dir}" --remove-files -cf - . | tar -C "${dir%_*}" -xvf - || die + done + ;; + + 1) + tar -C "${CDROM_ROOT}" --mode=u+w -cf - . | tar -xvf - || die + + # The engine has the decompresser for the maps. TODO: Use the + # new -samefolder option when bumping the engine to 469f. + unreal-tournament-ucc &>/dev/null || die # Create ~/.utpg early to avoid race. + ls Maps/*.unr.uz | xargs -P "$(get_makeopts_jobs)" -ti unreal-tournament-ucc decompress "${PWD}"/{} >/dev/null || die + mv -v ~/.utpg/System/*.unr Maps/ || die + rm -v Maps/*.unr.uz || die + ;; + + 2) + tar -C "${CDROM_ROOT}" --mode=u+w -cf - . | tar -xvf - || die + + # Extract Bonus Packs 1-3, which were included in GOTY Edition. + bsdtar --strip-components=1 -xvf "${DISTDIR}"/utbonuspack-zip.zip || die + bsdtar -C Maps -xvf "${DISTDIR}"/utbonuspack2.zip \*.unr || die + bsdtar --strip-components=1 -xvf "${DISTDIR}"/utbonuspack3-zip.zip || die + mv system/* System/ || die + mv textures/* Textures/ || die + ;; + esac + + # Filename casing of localised audio needs to match the English version. + mv -v Sounds/{OpeningWave,openingwave}.est_uax || die + fi + + # None of the installation sources include Bonus Pack 4, but OldUnreal's + # installer includes it, so we should too. + bsdtar -xvf "${DISTDIR}"/utbonuspack4-zip.7z || die +} + +src_install() { + local dir file + + if use doc; then + case ${CDROM_SET} in + 0) newdoc "${CDROM_ROOT}"/Manuals/UnrealTournament_English.pdf Manual.pdf ;; + 1|2) : ;; # No PDF + *) dodoc Manual/Manual.pdf ;; + esac + fi + + # Drop unwanted localisation files. + while read -r file; do + if locale_mismatch "${file}"; then + rm -v "${file}" || die + fi + done < <(find -type f) + + insinto /opt/unreal-tournament + keepdir /opt/unreal-tournament/Logs + + # Drop any other non-localisation files not included in our listings for + # cleanliness and consistency between installation sources. These listings + # are (mostly) based on OldUnreal's installation. + for file in "${FILESDIR}"/listings/*; do + dir=${file##*/} + find "${dir}" -type f | grep -Fxvf <(sed -r -e "s:^:${dir}/:" -e 's:(.*)\.uax$:\1.uax\n\1.est_uax\n\1.frt_uax\n\1.itt_uax:' "${file}") | xargs -r rm -v -- || die + doins -r "${dir}" + done + + # The same map with different filenames works for Deathmatch and Domination. + dosym "DM-Cybrosis][.unr" "/opt/unreal-tournament/Maps/DOM-Cybrosis][.unr" +} + +pkg_postinst() { + einfo "Much better textures are available from the Unreal HD Textures project." + einfo "You can simply extract their .utx files into ~/.utpg/Textures." +}