summaryrefslogtreecommitdiff
path: root/games-fps
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-07-31 03:04:46 -0500
committerroot <root@alpha.trunkmasters.com>2026-07-31 03:04:46 -0500
commit3f283d6a71e35a9c6d89dc73d76f01aec1c1a6b3 (patch)
treebe269d99a452403d508fed631b1bdd5ebdc98d9f /games-fps
parent0fb86e044f244e00302b1878b3e15e0db0e4b7e5 (diff)
downloadbaldeagleos-repo-3f283d6a71e35a9c6d89dc73d76f01aec1c1a6b3.tar.gz
baldeagleos-repo-3f283d6a71e35a9c6d89dc73d76f01aec1c1a6b3.tar.xz
baldeagleos-repo-3f283d6a71e35a9c6d89dc73d76f01aec1c1a6b3.zip
Adding metadata
Diffstat (limited to 'games-fps')
-rw-r--r--games-fps/etlegacy/Manifest2
-rw-r--r--games-fps/etlegacy/etlegacy-2.84.0.ebuild (renamed from games-fps/etlegacy/etlegacy-2.82.0.ebuild)8
-rw-r--r--games-fps/etlegacy/metadata.xml2
-rw-r--r--games-fps/ut2004-bonuspack-cbp1/ut2004-bonuspack-cbp1-1-r5.ebuild (renamed from games-fps/ut2004-bonuspack-cbp1/ut2004-bonuspack-cbp1-1-r4.ebuild)17
-rw-r--r--games-fps/ut2004-bonuspack-cbp2/ut2004-bonuspack-cbp2-1-r5.ebuild (renamed from games-fps/ut2004-bonuspack-cbp2/ut2004-bonuspack-cbp2-1-r4.ebuild)35
-rw-r--r--games-fps/ut2004-bonuspack-xp/Manifest1
-rw-r--r--games-fps/ut2004-bonuspack-xp/metadata.xml9
-rw-r--r--games-fps/ut2004-bonuspack-xp/ut2004-bonuspack-xp-1.ebuild41
-rw-r--r--games-fps/ut2004-data/Manifest4
-rw-r--r--games-fps/ut2004-data/files/listings/Animations47
-rw-r--r--games-fps/ut2004-data/files/listings/Help7
-rw-r--r--games-fps/ut2004-data/files/listings/KarmaData6
-rw-r--r--games-fps/ut2004-data/files/listings/Maps131
-rw-r--r--games-fps/ut2004-data/files/listings/Music64
-rw-r--r--games-fps/ut2004-data/files/listings/Sounds49
-rw-r--r--games-fps/ut2004-data/files/listings/Speech5
-rw-r--r--games-fps/ut2004-data/files/listings/StaticMeshes194
-rw-r--r--games-fps/ut2004-data/files/listings/System6
-rw-r--r--games-fps/ut2004-data/files/listings/Textures379
-rw-r--r--games-fps/ut2004-data/metadata.xml40
-rw-r--r--games-fps/ut2004-data/ut2004-data-3186-r5.ebuild399
-rw-r--r--games-fps/ut2004-data/ut2004-data-3369.ebuild267
-rw-r--r--games-fps/ut2004/Manifest4
-rw-r--r--games-fps/ut2004/files/gentoo-mod.patch25
-rw-r--r--games-fps/ut2004/files/ut2004-ded.confd6
-rw-r--r--games-fps/ut2004/files/ut2004-ded.initd6
-rw-r--r--games-fps/ut2004/files/wrapper.sh15
-rw-r--r--games-fps/ut2004/ut2004-3369.3-r4.ebuild124
-rw-r--r--games-fps/ut2004/ut2004-3374_pre23.ebuild117
29 files changed, 1455 insertions, 555 deletions
diff --git a/games-fps/etlegacy/Manifest b/games-fps/etlegacy/Manifest
index 7c6dfa9a637e..35f4e2eae05c 100644
--- a/games-fps/etlegacy/Manifest
+++ b/games-fps/etlegacy/Manifest
@@ -1,3 +1,3 @@
DIST et260b.x86_full.zip 275647724 BLAKE2B ea52d1859e78c6da5a16bd3598c2b649e9f79596be93fe35858a1174b0d63ef94eaecdb24b8f749d7dc39b1a70dd38557d455238cbc4b857ed7083369fe47262 SHA512 7a9639c7a67c6c058ae1c85ca1e04e74526194a8a676eaccffa1984869251cc058f0cb79b96604ec087492003d14f7f3e96c8ebe7e527959ae47d4d25645d3e1
-DIST etlegacy-2.82.0.tar.gz 15179026 BLAKE2B 8821fd752e0779959ee858368280fdeca1ea3d9c230d7e93a5eee8aba40522110f8fd47dba08b1244730ac83fea7385c926f973f0a43ccf07ac39c3c5f5684f1 SHA512 7ca18da3d92e12c9aba6477646f14b57e9cfbeb267c6d19661b7f2fe2331e8b0496b55001ba3f7dbf5bc253ccdfd153223ae8767a43169dcd8df250219933ceb
DIST etlegacy-2.83.2.tar.gz 15738267 BLAKE2B 7cae3c0471a9f93ab98ebc1a57383df6f9f1ff1800c38a70d9cbc4091a7c54fbe421d7a126d2a6d3425dd9f9d0aef65402c533ce9cebab930200eb1aaae4edb3 SHA512 2d4d2f27ec522690d72836b1e3b3fcb3a9f1d43887d51e46ace01ef241a604a574a8b32e47dd4d291b9396983c19a8601359575b419cb8a9d7647d066c1f9b06
+DIST etlegacy-2.84.0.tar.gz 17740104 BLAKE2B 94fd3e2cc826f1296b06cc7f96058697d1de335e2ba272156c9716981c3b743a77ca85c44a0678caf0de7a4edaa90e1aeef79c2ce58c444440b08761ef897b75 SHA512 019f118579e5fc1151d8b3ada0df6cb33273563d4a29468ca032a9052fc5aa79fe6ecd3153ba0293a42344cb65211abcbcf41bd8f981498891c2e1ebd070d61d
diff --git a/games-fps/etlegacy/etlegacy-2.82.0.ebuild b/games-fps/etlegacy/etlegacy-2.84.0.ebuild
index 90de809ad6c1..fb9853bbdda3 100644
--- a/games-fps/etlegacy/etlegacy-2.82.0.ebuild
+++ b/games-fps/etlegacy/etlegacy-2.84.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -42,9 +42,9 @@ UIDEPEND="
media-libs/glew:=
media-libs/libsdl2[sound,video,X]
media-libs/libogg
- media-libs/libjpeg-turbo:0
+ media-libs/libjpeg-turbo:0=
virtual/opengl
- virtual/minizip
+ virtual/minizip:=
curl? ( net-misc/curl )
freetype? ( media-libs/freetype )
gettext? ( sys-devel/gettext )
@@ -52,7 +52,7 @@ UIDEPEND="
openal? ( media-libs/openal )
png? ( media-libs/libpng:0= )
ssl? ( dev-libs/openssl:0= )
- theora? ( media-libs/libtheora )
+ theora? ( media-libs/libtheora:= )
vorbis? ( media-libs/libvorbis )
${LUADEPEND}
"
diff --git a/games-fps/etlegacy/metadata.xml b/games-fps/etlegacy/metadata.xml
index 990f56a03287..d72fc3738605 100644
--- a/games-fps/etlegacy/metadata.xml
+++ b/games-fps/etlegacy/metadata.xml
@@ -11,8 +11,8 @@
<flag name="gettext">Enable gettext</flag>
<flag name="irc">Enable built-in IRC client</flag>
<flag name="omnibot">Built with Omnibot</flag>
- <flag name="renderer2">Enable renderer2</flag>
<flag name="renderer-gles">Enable renderer-gles</flag>
+ <flag name="renderer2">Enable renderer2</flag>
</use>
<origin>baldeagleos-repo</origin>
</pkgmetadata>
diff --git a/games-fps/ut2004-bonuspack-cbp1/ut2004-bonuspack-cbp1-1-r4.ebuild b/games-fps/ut2004-bonuspack-cbp1/ut2004-bonuspack-cbp1-1-r5.ebuild
index 34726915269c..69d5da9d822d 100644
--- a/games-fps/ut2004-bonuspack-cbp1/ut2004-bonuspack-cbp1-1-r4.ebuild
+++ b/games-fps/ut2004-bonuspack-cbp1/ut2004-bonuspack-cbp1-1-r5.ebuild
@@ -3,18 +3,27 @@
EAPI=9
-DESCRIPTION="UT2003 Community Bonus Pack for UT2004 Volume 1"
+DESCRIPTION="UT2004 Community Bonus Pack Volume 1"
HOMEPAGE="https://liandri.beyondunreal.com/Unreal_Tournament_2004"
SRC_URI="https://unrealmassdestruction.com/downloads/ut2k4/essentials/cbp1.zip"
S="${WORKDIR}"
LICENSE="free-noncomm"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="~amd64 ~arm64"
RESTRICT="strip"
-BDEPEND="app-arch/unzip"
-RDEPEND="|| ( games-fps/ut2004 >=games-server/ut2004-ded-3369.3-r2 )"
+BDEPEND="
+ app-arch/unzip
+ >=games-fps/ut2004-3374_pre23
+"
+RDEPEND="
+ games-fps/ut2004-data
+"
+
+src_compile() {
+ ut2004-ucc exportcache -mod=Gentoo Maps/*.ut2 || die
+}
src_install() {
insinto /opt/ut2004
diff --git a/games-fps/ut2004-bonuspack-cbp2/ut2004-bonuspack-cbp2-1-r4.ebuild b/games-fps/ut2004-bonuspack-cbp2/ut2004-bonuspack-cbp2-1-r5.ebuild
index 6ffed9ee6c07..8faabbbf9fdc 100644
--- a/games-fps/ut2004-bonuspack-cbp2/ut2004-bonuspack-cbp2-1-r4.ebuild
+++ b/games-fps/ut2004-bonuspack-cbp2/ut2004-bonuspack-cbp2-1-r5.ebuild
@@ -13,30 +13,37 @@ S="${WORKDIR}"
LICENSE="free-noncomm all-rights-reserved"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
-RESTRICT="mirror bindist strip"
+KEYWORDS="~amd64 ~arm64"
+RESTRICT="bindist mirror strip"
-BDEPEND="app-arch/unzip"
-RDEPEND="|| ( games-fps/ut2004 >=games-server/ut2004-ded-3369.3-r2 )
+BDEPEND="
+ app-arch/unzip
+ >=games-fps/ut2004-3374_pre23
+"
+RDEPEND="
+ games-fps/ut2004-data
games-fps/ut2004-bonuspack-cbp1
- games-fps/ut2004-bonuspack-mega"
+"
src_prepare() {
default
# In ut2004-bonuspack-cbp1.
- rm Music/Soeren.ogg || die
-
- # In ut2004-bonuspack-mega.
- rm Textures/Ty_RocketTextures.utx || die
+ rm -v Music/Soeren.ogg || die
- # Useless file.
- rm Help/Note.txt || die
+ # In ut2004-data with Mega Pack.
+ rm -v Textures/Ty_RocketTextures.utx || die
cd Help || die
- mv Readme.txt CBP2-Readme.txt || die
- mv GERROIDREADME.txt DOM-CBP2-Gerroid.txt || die
- mv Tydal.txt DM-CBP2-Tydal.txt || die
+ rm -v CBP2InstallerLogoP1.bmp Note.txt || die
+ mv -v Readme.txt CBP2-Readme.txt || die
+ mv -v GERROIDREADME.txt DOM-CBP2-Gerroid.txt || die
+ mv -v ons-cbp2-valarna.txt ONS-CBP2-Valarna.txt || die
+ mv -v Tydal.txt DM-CBP2-Tydal.txt || die
+}
+
+src_compile() {
+ ut2004-ucc exportcache -mod=Gentoo System/*.u Maps/*.ut2 || die
}
src_install() {
diff --git a/games-fps/ut2004-bonuspack-xp/Manifest b/games-fps/ut2004-bonuspack-xp/Manifest
new file mode 100644
index 000000000000..e891802ac7d7
--- /dev/null
+++ b/games-fps/ut2004-bonuspack-xp/Manifest
@@ -0,0 +1 @@
+DIST UT2004-ONSBonusMapPack.zip 11018471 BLAKE2B bc915d6942c321df4031b02eaa25f83793b3fa1f2bb916c5d413c5569a3f887b6517fc4dceb8cb914e22be62f58512e727a41d5efbc6066113be12a9da9621d0 SHA512 8193375b89cd6fbc8b00de195797099c128fcf5cb73757bbc57d3c5350c497a878eaf0200f2e0711bf062e25c5d170e05b055c63f85b908b18dcc89572d71fd2
diff --git a/games-fps/ut2004-bonuspack-xp/metadata.xml b/games-fps/ut2004-bonuspack-xp/metadata.xml
new file mode 100644
index 000000000000..183ecc5ceeeb
--- /dev/null
+++ b/games-fps/ut2004-bonuspack-xp/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/games-fps/ut2004-bonuspack-xp/ut2004-bonuspack-xp-1.ebuild b/games-fps/ut2004-bonuspack-xp/ut2004-bonuspack-xp-1.ebuild
new file mode 100644
index 000000000000..d80023c009ff
--- /dev/null
+++ b/games-fps/ut2004-bonuspack-xp/ut2004-bonuspack-xp-1.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=9
+
+DESCRIPTION="UT2004 XP Bonus Maps"
+HOMEPAGE="https://liandri.beyondunreal.com/Unreal_Tournament_2004"
+SRC_URI="http://unrealmassdestruction.com/downloads/ut2k4/essentials/UT2004-ONSBonusMapPack.zip"
+S="${WORKDIR}"
+
+LICENSE="free-noncomm"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+RESTRICT="strip"
+
+BDEPEND="
+ app-arch/unzip
+ >=games-fps/ut2004-3374_pre23
+"
+RDEPEND="
+ games-fps/ut2004-data
+ !games-fps/ut2004-bonuspack-ece
+"
+
+src_unpack() {
+ mkdir Maps || die
+ cd Maps || die
+ default
+}
+
+src_compile() {
+ ut2004-ucc exportcache -mod=Gentoo Maps/*.ut2 || die
+ # The base game already knows about these maps, so it writes the cache to a
+ # single file rather than separate ones. We must rename to avoid a conflict.
+ mv -v System/{CacheRecords,${PN}}.ucl || die
+}
+
+src_install() {
+ insinto /opt/ut2004
+ doins -r *
+}
diff --git a/games-fps/ut2004-data/Manifest b/games-fps/ut2004-data/Manifest
new file mode 100644
index 000000000000..d0af577a9535
--- /dev/null
+++ b/games-fps/ut2004-data/Manifest
@@ -0,0 +1,4 @@
+DIST UT2004.iso 2995322880 BLAKE2B 5e7bf8ddaa79f438b389e0b2d919fe9f7340cc68d535fa475a5cd78c1024fa00a8ca11133240553436ca3f9a74a73b5a1193773204be001fcdc229312dc23ab5 SHA512 de9eed97e4f5c4bce1d41db7b120a117df164a4074e7f44e8a2e8dad377a72e52a8c4813ab471e6ac0f3a52043ba7489db462c79aecac83cd8c0f16750acbbd7
+DIST setup_unreal_tournament_2004_1.0_(18947)-1.bin 2795275375 BLAKE2B ba94c9bb2c1837e39d7b3afebe4faaac39ef7c448726c143959aa03573ecdda4e798819b6ef417fc489699a4dc94d8fa4b0bb0b768f36c1abb9c3b1c30aaa54e SHA512 2acef64ca9ee6ede8b61dcf9602e8d1640020fd606796adbeb8bc74617faf451b959bdbc6b169ffcd3440656f84a59bd23dc9174ef0d6593e9c3ebd5f8a31b11
+DIST setup_unreal_tournament_2004_1.0_(18947).exe 1014472 BLAKE2B dcb2b244ba4e8f4e25f1d07c5fd544bb3ccddc4af9c2fb04b50cc2974594a8a72bc7e76cf8006eddd73c316233f8763971de5b0a67287d834d345356c247db96 SHA512 87b44b3971165226cf45f95cf79a0590a86d27105821cd65884dfe44608afcc8bca6fd54e4aadbcc81d5307a77a6fdb5642be8267f7ea34e844cba9653589298
+DIST ut2004megapack-linux.tar.bz2 203124107 BLAKE2B 1459e2638181411446ec5679bceb44023382b3533951478ee06c274199688f3bbe341d7f7806299a332373791b6d0a9e1b57efdc6a13a5983220e0adbc413118 SHA512 4ae5eec0622c2bd96dfc162541bc0771399b012fb00f022282bc8c34600cb8e9bb7c18a52dd55fbef6f16fedaf225e301c46077a6accd001f4c77ddad89ed17b
diff --git a/games-fps/ut2004-data/files/listings/Animations b/games-fps/ut2004-data/files/listings/Animations
new file mode 100644
index 000000000000..9bf895fce51e
--- /dev/null
+++ b/games-fps/ut2004-data/files/listings/Animations
@@ -0,0 +1,47 @@
+2K4_NvidiaIntro.ukx
+Aliens.ukx
+AS_VehiclesFull_M.ukx
+AS_Vehicles_M.ukx
+Bot.ukx
+Cannons.ukx
+DemoFemaleA.ukx
+DemoMaleA.ukx
+GenericSD.ukx
+Hellions.ukx
+HumanFemaleA.ukx
+HumanMaleA.ukx
+Intro_brockfan.ukx
+intro_brock.ukx
+intro_crowd.ukx
+Intro_gorgefan.ukx
+Intro_gorge.ukx
+intro_jugchick.ukx
+intro_lauren.ukx
+intro_malcom.ukx
+intro_nikoli.ukx
+Jugg.ukx
+MechaSkaarjAnims.ukx
+Merc_intro.ukx
+MetalGuardAnim.ukx
+NecrisAnim.ukx
+NewNightmare.ukx
+NewWeapons2004.ukx
+NvidiaGorge.ukx
+ONSBPAnimations.ukx
+ONSFullAnimations.ukx
+ONSNewTank-A.ukx
+ONSVehicles-A.ukx
+ONSWeapons-A.ukx
+Scene3_Garrett.ukx
+Scene3_Gitty.ukx
+Scene3_Jacob.ukx
+Scene3_Kane.ukx
+Scene3_Malcom.ukx
+Scene3_Rae.ukx
+SkaarjAnims.ukx
+Skaarj_intro.ukx
+SniperAnims.ukx
+StreamAnims.ukx
+ThunderCrash.ukx
+Weapons.ukx
+XanRobots.ukx
diff --git a/games-fps/ut2004-data/files/listings/Help b/games-fps/ut2004-data/files/listings/Help
new file mode 100644
index 000000000000..245e4d58f2fa
--- /dev/null
+++ b/games-fps/ut2004-data/files/listings/Help
@@ -0,0 +1,7 @@
+BonusPackReadme.txt
+InstallerLogo2004.bmp
+ReadMe.int.txt
+SAPI-EULA.txt
+UnrealEd.ico
+Unreal.ico
+UT2004Logo.bmp
diff --git a/games-fps/ut2004-data/files/listings/KarmaData b/games-fps/ut2004-data/files/listings/KarmaData
new file mode 100644
index 000000000000..b6475fce481e
--- /dev/null
+++ b/games-fps/ut2004-data/files/listings/KarmaData
@@ -0,0 +1,6 @@
+Alien.ka
+Bot.ka
+Human.ka
+intro.ka
+jugg.ka
+Skaarj.ka
diff --git a/games-fps/ut2004-data/files/listings/Maps b/games-fps/ut2004-data/files/listings/Maps
new file mode 100644
index 000000000000..7a4257fc000b
--- /dev/null
+++ b/games-fps/ut2004-data/files/listings/Maps
@@ -0,0 +1,131 @@
+AS-BP2-Acatana.ut2
+AS-BP2-Jumpship.ut2
+AS-BP2-Outback.ut2
+AS-BP2-SubRosa.ut2
+AS-BP2-Thrust.ut2
+AS-Convoy.ut2
+AS-FallenCity.ut2
+AS-Glacier.ut2
+AS-Junkyard.ut2
+AS-MotherShip.ut2
+AS-RobotFactory.ut2
+BR-Anubis.ut2
+BR-Bifrost.ut2
+BR-BridgeOfFate.ut2
+BR-Canyon.ut2
+BR-Colossus.ut2
+BR-DE-ElecFields.ut2
+BR-Disclosure.ut2
+BR-IceFields.ut2
+BR-Serenity.ut2
+BR-Skyline.ut2
+BR-Slaughterhouse.ut2
+BR-TwinTombs.ut2
+CTF-1on1-Joust.ut2
+CTF-AbsoluteZero.ut2
+CTF-Avaris.ut2
+CTF-BP2-Concentrate.ut2
+CTF-BP2-Pistola.ut2
+CTF-BridgeOfFate.ut2
+CTF-Chrome.ut2
+CTF-Citadel.ut2
+CTF-Colossus.ut2
+CTF-December.ut2
+CTF-DE-ElecFields.ut2
+CTF-DoubleDammage.ut2
+CTF-Face3.ut2
+CTF-FaceClassic.ut2
+CTF-Geothermal.ut2
+CTF-Grassyknoll.ut2
+CTF-Grendelkeep.ut2
+CTF-January.ut2
+CTF-Lostfaith.ut2
+CTF-Magma.ut2
+CTF-Maul.ut2
+CTF-MoonDragon.ut2
+CTF-Orbital2.ut2
+CTF-Smote.ut2
+CTF-TwinTombs.ut2
+DM-1on1-Albatross.ut2
+DM-1on1-Crash.ut2
+DM-1on1-Desolation.ut2
+DM-1on1-Idoma.ut2
+DM-1on1-Irondust.ut2
+DM-1on1-Mixer.ut2
+DM-1on1-Roughinery.ut2
+DM-1on1-Serpentine.ut2
+DM-1on1-Spirit.ut2
+DM-1on1-Squader.ut2
+DM-1on1-Trite.ut2
+DM-Antalus.ut2
+DM-Asbestos.ut2
+DM-BP2-Calandras.ut2
+DM-BP2-GoopGod.ut2
+DM-Compressed.ut2
+DM-Corrugation.ut2
+DM-Curse4.ut2
+DM-Deck17.ut2
+DM-DE-Grendelkeep.ut2
+DM-DE-Ironic.ut2
+DM-DE-Osiris2.ut2
+DM-DesertIsle.ut2
+DM-Flux2.ut2
+DM-Gael.ut2
+DM-Gestalt.ut2
+DM-Goliath.ut2
+DM-HyperBlast2.ut2
+DM-Icetomb.ut2
+DM-Inferno.ut2
+DM-Injector.ut2
+DM-Insidious.ut2
+DM-IronDeity.ut2
+DM-Junkyard.ut2
+DM-Leviathan.ut2
+DM-Metallurgy.ut2
+DM-Morpheus3.ut2
+DM-Oceanic.ut2
+DM-Phobos2.ut2
+DM-Plunge.ut2
+DM-Rankin.ut2
+DM-Rrajigar.ut2
+DM-Rustatorium.ut2
+DM-Sulphur.ut2
+DM-TokaraForest.ut2
+DM-TrainingDay.ut2
+DOM-Access.ut2
+DOM-Aswan.ut2
+DOM-Atlantis.ut2
+DOM-Conduit.ut2
+DOM-Core.ut2
+DOM-Junkyard.ut2
+DOM-OutRigger.ut2
+DOM-Renascent.ut2
+DOM-Ruination.ut2
+DOM-ScorchedEarth.ut2
+DOM-SepukkuGorge.ut2
+DOM-Suntemple.ut2
+endgame.ut2
+Entry.ut2
+MOV-UT2004-Intro.ut2
+Mov-UT2-intro.ut2
+NoIntro.ut2
+NvidiaLogo.ut2
+ONS-Adara.ut2
+ONS-ArcticStronghold.ut2
+ONS-Crossfire.ut2
+ONS-Dawn.ut2
+ONS-Dria.ut2
+ONS-FrostBite.ut2
+ONS-IslandHop.ut2
+ONS-Primeval.ut2
+ONS-RedPlanet.ut2
+ONS-Severance.ut2
+ONS-Torlan.ut2
+ONS-Tricky.ut2
+ONS-Urban.ut2
+ParticleExamples.ut2
+TUT-BR.ut2
+TUT-CTF.ut2
+TUT-DM.ut2
+TUT-DOM2.ut2
+TUT-ONS.ut2
diff --git a/games-fps/ut2004-data/files/listings/Music b/games-fps/ut2004-data/files/listings/Music
new file mode 100644
index 000000000000..9caa3e373edc
--- /dev/null
+++ b/games-fps/ut2004-data/files/listings/Music
@@ -0,0 +1,64 @@
+APubWithNoBeer.ogg
+Intro_Music.ogg
+Jugs-Entrance.ogg
+KR-Absolute_Zero.ogg
+KR-Action1.ogg
+KR-Action2v2.ogg
+KR-Action3.ogg
+KR-Assault.ogg
+KR-Atlantis.ogg
+KR-Chemical-Burn.ogg
+KR-City.ogg
+KR-Collision-Course.ogg
+KR-Conduit-v2.ogg
+KR-Convoy.ogg
+KR-Corrugation-Rise.ogg
+KR-DM1.ogg
+KR-EndingSequence.ogg
+KR-From-Below-v2.ogg
+KR-Ghosts-of-Anubis.ogg
+KR-Glacier.ogg
+KR-HELL.ogg
+KR-Hyperblast-Redux.ogg
+KR-Infernal-Realm.ogg
+KR-Infiltrate.ogg
+KR-Junkyard.ogg
+KR-MenuMusic-v2.ogg
+KR-Metallurgy.ogg
+KR-Morpheus3.ogg
+KR-Pharaohs-Revenge.ogg
+KR-Rankin.ogg
+KR-RobotFactory.ogg
+KR-Roughinery.ogg
+KR-Serenity.ogg
+KR-SkaarjAssault.ogg
+KR-SkyScraper.ogg
+KR-Slaughter.ogg
+KR-Sniper-Time.ogg
+KR-Sulphur.ogg
+KR-Tomb-of-Horus.ogg
+KR-UT2003-Menu.ogg
+KR-UT2004_Intro_v2.ogg
+KR-UT2004-Menu.ogg
+KR-WasteLand.ogg
+Level11.ogg
+Level13.ogg
+Level15.ogg
+Level16.ogg
+Level2.ogg
+Level3.ogg
+Level5.ogg
+Level6.ogg
+Level7.ogg
+Level8.ogg
+Level9.ogg
+Menu1.ogg
+Mercs-Entrance.ogg
+SDG-ONS01.ogg
+SDG-ONS02.ogg
+SDG-ONS03.ogg
+SDG-ONS04.ogg
+SDG-ONS05.ogg
+SDG-ONS06.ogg
+SDG-ONS08.ogg
+StageMusic.ogg
diff --git a/games-fps/ut2004-data/files/listings/Sounds b/games-fps/ut2004-data/files/listings/Sounds
new file mode 100644
index 000000000000..a862faee40a5
--- /dev/null
+++ b/games-fps/ut2004-data/files/listings/Sounds
@@ -0,0 +1,49 @@
+2K4MenuSounds.uax
+A_Announcer_BP2.uax
+AlienMaleTaunts.uax
+AnnouncerAssault_DEMO.uax
+AnnouncerAssault.uax
+AnnouncerClassic.uax
+AnnouncerEVIL.uax
+announcerfemale2k4.uax
+AnnouncerFemale.uax
+AnnouncerLong.uax
+AnnouncerMain.uax
+announcermale2k4.uax
+AnnouncerNames.uax
+AnnouncerSEXY.uax
+Announcer.uax
+AssaultSounds.uax
+CicadaSnds.uax
+DistantBooms.uax
+EndGameAudio.uax
+GameSounds.uax
+GeneralAmbience.uax
+GeneralImpacts.uax
+IndoorAmbience.uax
+IntroAnnouncers.uax
+IntroSounds.uax
+IntroTrack.uax
+JWDecemberSnd.uax
+Male2Voice.uax
+MenuSounds.uax
+MercFemaleTaunts.uax
+MercMaleTaunts.uax
+NewDeath.uax
+NewTutorialSounds.uax
+NewWeaponSounds.uax
+NvidiaLogoSounds.uax
+ONSBPSounds.uax
+ONSVehicleSounds-S.uax
+OutdoorAmbience.uax
+PickupSounds.uax
+PlayerFootSteps.uax
+PlayerSounds.uax
+SlaughterSounds.uax
+TauntPack.uax
+TestCarS.uax
+TutorialSounds.uax
+VMGeneralSounds-S.uax
+VMVehicleSounds-S.uax
+WeaponSounds.uax
+wm_sounds.uax
diff --git a/games-fps/ut2004-data/files/listings/Speech b/games-fps/ut2004-data/files/listings/Speech
new file mode 100644
index 000000000000..d4d8ed1e6407
--- /dev/null
+++ b/games-fps/ut2004-data/files/listings/Speech
@@ -0,0 +1,5 @@
+br.xml
+ctf.xml
+dom.xml
+ons.xml
+tdm.xml
diff --git a/games-fps/ut2004-data/files/listings/StaticMeshes b/games-fps/ut2004-data/files/listings/StaticMeshes
new file mode 100644
index 000000000000..b66a27b23e71
--- /dev/null
+++ b/games-fps/ut2004-data/files/listings/StaticMeshes
@@ -0,0 +1,194 @@
+2K4chargerMESHES.usx
+2K4_Nvidia.usx
+2k4Trophies.usx
+AbaddonHardware.usx
+Albatross_architecture.usx
+AlienBrushes.usx
+Aliencrystal.usx
+AlienTech.usx
+AlleriaHardware.usx
+AntalusStatic.usx
+AnubisStatic.usx
+ArboreaHardware.usx
+ArboreaLanscape.usx
+AS_Decos.usx
+AS_Vehicles_SM.usx
+AS_Weapons_SM.usx
+AW-2004Crystals.usx
+AW_AlleriaHW.usx
+AW-Bridge.usx
+AW-DemoMeshes.usx
+AWHardware.usx
+AW-Junk2.usx
+AW-Junk.usx
+AWMagicHardware.usx
+AW-MechMeshes.usx
+AW-Natural.usx
+AW-Nature.usx
+aw-neutral.usx
+AW-PhysicMeshes.usx
+AWPipes.usx
+AW-RustMeshes.usx
+AW-Steel.usx
+AWStellarMeshes.usx
+AW-Tech.usx
+BarrenHardware-epic.usx
+BarrenHardware.usx
+BastienHardware_02.usx
+BastienHardware.usx
+BenMesh01.usx
+BenMesh02.usx
+BenTropicalSM01.usx
+BP_egyptnew.usx
+BulldogMeshes.usx
+cass_staticmesh.usx
+CaveDecoMeshes.usx
+CavernStatic.usx
+CB-Desert1.usx
+CB-Desert2.usx
+CB-StaticMesh.usx
+cf_DE.usx
+cf_sm01.usx
+cf_sm02.usx
+cf_static1.usx
+cf_staticMushrooms.usx
+Citadel_Static.usx
+Comp.usx
+Corrosion_Hardware.usx
+cp_enviromesh1.usx
+cp_Evilstatic2.usx
+cp_Evil.usx
+cp_Mechstaticpack1.usx
+CP_Nightmare1_Epic.usx
+cp_simplewall_meshs.usx
+cp_stevetest1.usx
+CP_UT2K3_TechSetMesh1.usx
+cp_wasteland_mesh.usx
+DanielsMeshes.usx
+DEBonusMeshes.usx
+DEBPchecker.usx
+DemoMeshes.usx
+DespFallencity-SM.usx
+DESP-MS.usx
+Desp_SMS-SM.usx
+DespTech-STA.usx
+DS-staticMeshes.usx
+EffectMeshes.usx
+Egypt_techmeshes_Epic.usx
+EndGame-New.usx
+EndStatic.usx
+E_Pickups.usx
+Epic_November2.usx
+epic_phobos.usx
+Face3_decomeshes.usx
+far.usx
+forest.usx
+GDC_Meshes.usx
+GeneralStatic.usx
+GeothermalStatic.usx
+G_Finalset1_M_CP.usx
+Goose.usx
+GroundCovernew.usx
+GroundCover.usx
+GunMeshes.usx
+HourAdara.usx
+HourMoriaStatics.usx
+HumanoidHardware.usx
+IceCliffs.usx
+Industrial_Static.usx
+jmalienwellc.usx
+jm-staticmeshes.usx
+JumpShipObjects.usx
+JWAssaultMeshes.usx
+JWDecember.usx
+jwjanbrushes.usx
+KarmaShapes.usx
+LP_Evil1.usx
+LP_Junk.usx
+lp_scene2_m.usx
+lp_scene3_m.usx
+MiscPhysicsMeshes.usx
+MiscStaticMeshes.usx
+NaThAncientPack.usx
+NewWeaponPickups.usx
+NewWeaponStatic.usx
+Nirvana.usx
+N_StaticMeshFX_M_SC.usx
+NvidiaLogo_M.usx
+ONS-BPJW1.usx
+ONSDeadVehicles-SM.usx
+ONSFullStaticMeshes.usx
+ONSstaticMeshVehicles.usx
+ONSWeapons-SM.usx
+ParticleMeshes.usx
+PC_ConvoyStatics.usx
+PC_NewFX.usx
+PC_UrbanStatic.usx
+Pipe_staticmeshes.usx
+Pipe_Static.usx
+PlungeMeshes.usx
+Plutonic_BP2_static.usx
+Plutonic_Robot_SM.usx
+Primeval_SM.usx
+ProcMeshes.usx
+Rahnem_Glacier.usx
+RiseSM.usx
+SC_Beach.usx
+SC_CityPrefabs.usx
+SC_FrothStuff.usx
+SC_GDC_M.usx
+SC-Intro_Meshes.usx
+SC_JungleMeshes.usx
+SC_MeshParticles.usx
+SC_Volcano_M.usx
+SG_LO_meshes.usx
+SG_Special.usx
+sg_UT2003_pickups.usx
+ShiptechHardware.usx
+skyline-meshes-epic.usx
+streamlineforest.usx
+StreamlineMeshes.usx
+StreamlineTakeOff1.usx
+str_plant_meshes.usx
+SurvivalGuideMeshes.usx
+ThorSM.usx
+TowerStatic.usx
+TroffHardware.usx
+Trophy_endroom.usx
+Ty_RocketSMeshes.usx
+VehicleMeshes.usx
+VMmeshEmitted.usx
+VMruinedVehicles.usx
+VMStructures.usx
+VMWeaponsSM.usx
+WarEffectsMeshes.usx
+WastelandHardware.usx
+WeaponStaticMesh.usx
+wm_meshes.usx
+WM-StaticMesh.usx
+X_AW-Bridge.usx
+X_AW-EvilMeshes.usx
+X_AW-MechMeshes.usx
+X_AW-Natural.usx
+X_AW-PhysicMeshes.usx
+X_AW-Tech.usx
+X_BG-FloraGen.usx
+XceptOneObjA.usx
+X_cp_enviromesh1.usx
+X_cp_Evilstatic2.usx
+X_cp_Evil.usx
+X_cp_simplewall_meshs.usx
+X_cp_stevetest1.usx
+XGame_StaticMeshes.usx
+X_jm-staticmeshes.usx
+X_LP_Evil1.usx
+X_lp_scene2_m.usx
+X_lp_scene3_m.usx
+X_MiscPhysicsMeshes.usx
+X_SC_CityPrefabs.usx
+X_SC-MechBase1.usx
+X_SC-NewMech1.usx
+X_sg_Evilstatpak1.usx
+X_SG_LO_meshes.usx
+X_sg_Mech_hbrushes.usx
+X_SG_Special.usx
diff --git a/games-fps/ut2004-data/files/listings/System b/games-fps/ut2004-data/files/listings/System
new file mode 100644
index 000000000000..c6f7c71c1ec9
--- /dev/null
+++ b/games-fps/ut2004-data/files/listings/System
@@ -0,0 +1,6 @@
+BP2.ucl
+Engine.dat
+Manifest.ini
+OnslaughtBP.ucl
+ServerFilters.ini
+UDNHelpTopics.ini
diff --git a/games-fps/ut2004-data/files/listings/Textures b/games-fps/ut2004-data/files/listings/Textures
new file mode 100644
index 000000000000..d78fa1e92aa1
--- /dev/null
+++ b/games-fps/ut2004-data/files/listings/Textures
@@ -0,0 +1,379 @@
+2K4Chargers.utx
+2k4Fonts_kot.utx
+2K4Fonts.utx
+2K4Hud.utx
+2K4Menus.utx
+2K4reducedTEXTURES.utx
+2K4TrophyTEX.utx
+AbaddonArchitecture-epic.utx
+AbaddonArchitecture.utx
+AbaddonHardwareBrush.utx
+AbaddonTerrain.utx
+Albatross_architecture.utx
+ALIENTEX.utx
+AlleriaArchitecture.utx
+AlleriaHardwareBrush.utx
+AlleriaTerrain.utx
+Animated.utx
+AntalusTextures.utx
+AnubisSky.utx
+AnubisTextures.utx
+ArboreaArchitecture.utx
+ArboreaHardwareBrush.utx
+ArboreaTerrain.utx
+ArenaTex.utx
+AS_FX_TX.utx
+ASSAULTfilmGrain.utx
+AS_Vehicles_TX.utx
+AS_Weapons_TX.utx
+Aurorae.utx
+AW-2004Explosions.utx
+AW-2004Particles.utx
+AW-2004Shaders.utx
+AW-2k4XP.utx
+AW-Alleria.utx
+AW-Ancient.utx
+AW-BumpMaps.utx
+AW-CellTest.utx
+AW-CityStuff.utx
+AWCity.utx
+AW-Clean.utx
+AW-Convert.utx
+AW-Cubes.utx
+AW-Decals.utx
+AW-Foliage.utx
+AW-Generic.utx
+AW-Genesis.utx
+AWGlobal.utx
+AW-Labels.utx
+AWMagic.utx
+AW-Metals2.utx
+AW-Metals.utx
+AW-Oceanic.utx
+AW-PoolSkins.utx
+AW_Research.utx
+AW-RustTex.utx
+AW-Shaders.utx
+AW-ShieldShaders.utx
+AWStellar.utx
+AW-Stone.utx
+AW-Stuff.utx
+AW-Terrain.utx
+AWTroff.utx
+BaneTextures.utx
+BarrenHardwareDeux.utx
+BarrensArchitecture-epic.utx
+BarrensArchitecture-Scion.utx
+BarrensArchitecture.utx
+BarrensHardwareBrush.utx
+BarrensTerrain.utx
+Bastien_02.utx
+Bastien.utx
+BenTex01.utx
+BenTex02.utx
+BenTropical01.utx
+BloodFX.utx
+BonusParticles.utx
+BP_arch1.utx
+Brdg_A.utx
+Bridge.utx
+BrightPlayerSkins.utx
+cassTextures2.utx
+CaveDecoTex.utx
+CavernTextures.utx
+CB-Particles.utx
+cf1.utx
+cf2.utx
+cf_mushrooms.utx
+cf_tex01.utx
+cf_tex02.utx
+cf_tex03.utx
+CheckerFXB.utx
+CheckerFX.utx
+Chrome_cp.utx
+CicadaTex.utx
+CitadelTextures.utx
+CliffTest.utx
+Compress.utx
+Construction_S.utx
+Coronas.utx
+CorrosionTextures.utx
+cp_cubemaps.utx
+CP_Effects1.utx
+cp_envirotex1.utx
+cp_Evil2.utx
+cp_Evil3.utx
+cp_Evillandscape.utx
+cp_Evilmetal.utx
+cp_Forestswamp.utx
+cp_fx.utx
+cp_Junkyard.utx
+cp_liquid1.utx
+cp_Mech1.utx
+cp_misc_effects.utx
+cp_newskins1.utx
+cp_particles.utx
+cp_projected_new.utx
+cp_projectedtex.utx
+cp_staticmeshskin1.utx
+cp_stevetest1.utx
+cp_terrain1.utx
+cp_texturetest1.utx
+CP_UT2K3_TechSet1.utx
+cp_wasteland.utx
+Crosshairs.utx
+CubeMaps.utx
+DanFX.utx
+DanielsTextures.utx
+DavesTextures.utx
+DEBonusTextures.utx
+December_cp.utx
+DecorationProjectors.utx
+DefaultFluid.utx
+DemoPlayerSkins.utx
+DeployableTex.utx
+DeRez.utx
+DespFallenCity.utx
+Desp_SMS-Tex.utx
+DespTech.utx
+Detail.utx
+Dom-goose.utx
+DS-textures.utx
+Egypt_tech_Epic.utx
+Elecfeildsshine.utx
+EmitterTextures2.utx
+EmitterTextures.utx
+EndTextures.utx
+EpicParticles.utx
+Epic_Phoboswing.utx
+ExitScreenNoLogo.utx
+ExitScreen.utx
+ExplosionTex.utx
+Face3_deco.utx
+FarEast.utx
+FireEngine.utx
+Foliage.utx
+Fortress.utx
+Futuretech1.utx
+GeneralStaticTextures.utx
+GeoThermalTextures.utx
+GlacierTextures.utx
+GoldCubes.utx
+gooseFX.utx
+Grendelfix.utx
+Gwotseffects.utx
+Gwotstuff.utx
+H_E_L_Ltx.utx
+HourAdaraTexor.utx
+HourMoria.utx
+HudContent.utx
+HumanoidArchitecture2.utx
+HumanoidArchitecture.utx
+HumanoidHardwareBrush.utx
+IllumShaders.utx
+Imulsive.utx
+Industrial.utx
+InstagibEffects.utx
+InterfaceContent.utx
+intro_characters.utx
+JamesEffects.utx
+jm_manhatten_project.utx
+jm-particl2.utx
+jm-particles.utx
+jm-prefabs2.utx
+jm-prefabs.utx
+JumpShipTextures.utx
+jwDecemberArchitecture.utx
+jwfasterfiles.utx
+jw_jantex.utx
+LadderShots.utx
+LastManStanding.utx
+LavaMLFX.utx
+lavaskyX.utx
+LeathamFX.utx
+Lev_Particles.utx
+LightningCoreTex.utx
+lp_scene_1_t.utx
+Malcom_scene3_textures.utx
+MapThumbnails.utx
+Mechcity1_CP.utx
+Mech_decayed.utx
+Mech_Decay_New.utx
+MechStandard.utx
+MenuEffects.utx
+MikeDemoLevel.utx
+MiscEpicTex01.utx
+MiscPhysicsMeshesTex.utx
+MutantSkins.utx
+MutatorArt.utx
+NaThCrossfire.utx
+NatureFX.utx
+NatureOne.utx
+newsniperrifle.utx
+NormalMaps.utx
+November2ship.utx
+n_StaticMeshFX_T_SC.utx
+NvidiaLogo_2.utx
+NvidiaLogo_T.utx
+OldTreeSkins.utx
+ONSBP_DestroyedVehicles.utx
+ONSBPTextures.utx
+ONSDeadVehicles-TX.utx
+ONSFullTextures.utx
+ONSInterface-TX.utx
+ONSstructureTextures.utx
+ONSTorlanREDONE.utx
+OtherWorld.utx
+Palettes.utx
+Particles.utx
+PC_ConvoyTextures.utx
+PC_NewWeaponFX.utx
+PC_UrbanTex.utx
+Phobos2_cp.utx
+PickupSkins.utx
+Pipe_Set.utx
+PipeTextures.utx
+PlayerPictures.utx
+PlayerSkins.utx
+Plutonic_BP2_textures.utx
+Plutonic_Robot_TX.utx
+Primeval_Tex.utx
+PSDria.utx
+Rimlight.utx
+SC_Animated.utx
+SC_BuggyTest.utx
+SC-City.utx
+SC_Froth.utx
+SC_GDC_FX.utx
+SC_GDC.utx
+SC_Intro.utx
+SC_Jungle.utx
+SC_MeshParticleTex.utx
+SC_Volcano_T.utx
+SC_Water.utx
+SD-Generic.utx
+ServerIcons.utx
+sg_floorsandgrates_alpha.utx
+SG_Giest_redset.utx
+SG_Hud.utx
+SG_Lost_Outpost.utx
+sg-Mech.utx
+SG_Special_Decos.utx
+sg_UT2003_Jumpboots.utx
+ShaneDay.utx
+ShaneDemoHead.utx
+ShaneJungle.utx
+Shiptech2.utx
+ShiptechHardwareBrush.utx
+Shiptech.utx
+SinglePlayerThumbs.utx
+skaarjintrotextures.utx
+SkaarjPackSkins.utx
+Skies.utx
+SkyBox.utx
+skyline-epic.utx
+SkyRenders.utx
+StreamlineIntro.utx
+StreamlineTakeOffTex1.utx
+streamlinewater.utx
+strplants.utx
+SurvivalGuideSMskins.utx
+TeamSymbols_UT2003.utx
+TeamSymbols_UT2004.utx
+TeamSymbols.utx
+T_Epic2k4BP2.utx
+Terrain2.utx
+Terrain.utx
+Terrain_w.utx
+TowerTerrain.utx
+TrophyRoom_END.utx
+TurretParticles.utx
+Turrets.utx
+Ty_RocketTextures.utx
+UCGameSpecific.utx
+UCGeneric.utx
+ULogo.utx
+UT2003Fonts_kot.utx
+UT2003Fonts_smt.utx
+UT2003Fonts_tmt.utx
+UT2003Fonts.utx
+UT2004ECEPlayerSkins.utx
+UT2004PlayerSkins.utx
+UT2004Thumbnails.utx
+UT2004Weapons.utx
+VehicleFX.utx
+VehicleSkins.utx
+Village.utx
+VMdeadVehicles.utx
+VMparticleTextures.utx
+VMVehicles-TX.utx
+VMWeaponsTX.utx
+WarEffectsTextures.utx
+WarFx.utx
+Warroomtech.utx
+WeaponSkins.utx
+WinX.utx
+wm_misc.utx
+wm_textures.utx
+X_Animated.utx
+X_AW-CellTest.utx
+X_AW-Convert.utx
+X_AW-Cubes.utx
+X_AW-MechTex.utx
+X_AW-Shaders.utx
+X_BG-FloraGen_tex.utx
+XceptOne.utx
+XceptThree.utx
+XceptTwo.utx
+X_CliffTest.utx
+X_cp_cubemaps.utx
+X_cp_envirotex1.utx
+X_cp_Evil1.utx
+X_cp_Evil2.utx
+X_cp_Evil3.utx
+X_cp_Evillandscape.utx
+X_cp_Evilmetal.utx
+X_cp_fx.utx
+X_cp_liquid1.utx
+X_cp_Mech1.utx
+X_cp_particles.utx
+X_cp_projected_new.utx
+X_cp_staticmeshskin1.utx
+X_cp_stevetest1.utx
+X_cp_terrain1.utx
+X_cp_texturetest1.utx
+X_DeployableTex.utx
+XEffectMat.utx
+X_Foliage.utx
+X_Futuretech1.utx
+XGameShaders2004.utx
+xGameShadersB.utx
+XGameShaders.utx
+XGameTextures.utx
+X_GoldCubes.utx
+X_jm_manhatten_project.utx
+X_jm-particl2.utx
+X_jm-prefabs2.utx
+X_jm-prefabs.utx
+X_lp_scene_1_t.utx
+X_Mechcity1_CP.utx
+X_Mech_decayed.utx
+X_Mech_Decay_New.utx
+X_MechStandard.utx
+XMiscEffects.utx
+X_MiscPhysicsMeshesTex.utx
+XPlantTextures.utx
+X_SC-City.utx
+X_sg_Evil1.utx
+X_sg_floorsandgrates_alpha.utx
+X_SG_Hud.utx
+X_SG_Lost_Outpost.utx
+X_sg-Mech.utx
+X_SG_Special_Decos.utx
+X_ShaneJungle.utx
+X_Skies.utx
+X_Terrain2.utx
+X_WarEffectsTextures.utx
+X_WarFx.utx
+X_WarMechGunner.utx
+X_wm_misc.utx
diff --git a/games-fps/ut2004-data/metadata.xml b/games-fps/ut2004-data/metadata.xml
index 183ecc5ceeeb..dcad0e24fd90 100644
--- a/games-fps/ut2004-data/metadata.xml
+++ b/games-fps/ut2004-data/metadata.xml
@@ -5,5 +5,45 @@
<email>games@gentoo.org</email>
<name>Gentoo Games Project</name>
</maintainer>
+ <use>
+ <flag name="gog">Install from the GOG.com release. Note that the game is no longer sold here.</flag>
+ <flag name="megapack">Download the Mega Pack content. Mandatory unless using the OldUnreal, Unreal Anthology, or GOG editions.</flag>
+ </use>
+ <longdescription>
+ This package installs just the data files, not the engine, for Epic's
+ popular first-person shooter game, Unreal Tournament 2004.
+
+ 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 DVD ISO of the game
+ for the community to download and play for free.
+
+ This was announced by OldUnreal on Reddit here:
+ https://www.reddit.com/r/unrealtournament/comments/1pdbcc3/oldunreal_takes_over_maintenance_of_unreal
+
+ Epic had already confirmed their permission to do this with their
+ earlier Unreal titles to GamingOnLinux 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. It lacks
+ the French, German, Italian, and Spanish sound files, as well as the
+ wider French, Italian, and Korean text files, included in other physical
+ editions. If you have these files and wish to use them or otherwise 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.
+
+ If the CD or DVD you are installing from lacks the Mega Pack content
+ that is included in other editions, you must enable the megapack USE
+ flag to download it.
+ </longdescription>
<origin>baldeagleos-repo</origin>
</pkgmetadata>
diff --git a/games-fps/ut2004-data/ut2004-data-3186-r5.ebuild b/games-fps/ut2004-data/ut2004-data-3186-r5.ebuild
deleted file mode 100644
index 1afad93fd0c1..000000000000
--- a/games-fps/ut2004-data/ut2004-data-3186-r5.ebuild
+++ /dev/null
@@ -1,399 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit cdrom desktop portability unpacker xdg-utils
-
-DESCRIPTION="Unreal Tournament 2004 - This is the data portion of UT2004"
-HOMEPAGE="https://liandri.beyondunreal.com/Unreal_Tournament_2004"
-
-LICENSE="ut2003"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-RESTRICT="bindist"
-
-BDEPEND="
- games-util/uz2unpack
- >=app-arch/unshield-0.5-r1
-"
-
-PDEPEND=">=games-fps/ut2004-3369.3-r2"
-RDEPEND="!games-fps/ut2004-ded"
-
-S="${WORKDIR}"
-
-check_dvd() {
- # The following is a nasty mess to determine if we are installing from
- # a DVD or from multiple CDs. Anyone feel free to submit patches to this
- # to bugs.gentoo.org as I know it is a very ugly hack.
-
- USE_DVD=
- USE_ECE_DVD=
- USE_MIDWAY_DVD=
- USE_GERMAN_MIDWAY_DVD=
-
- local point foo fs mnts=()
- while read point foo fs foo ; do
- [[ ${fs} =~ (9660|udf) ]] && mnts+=( "${point//\040/ }" )
- done < <(get_mounts)
-
- local r
- for r in "${CD_ROOT}" "${CD_ROOT_1}" "${mnts[@]}" ; do
- if [[ -n ${r} ]] ; then
- einfo "Searching ${r}"
- if [[ -f ${r}/AutoRunData/Unreal.ico ]] \
- && [[ -f ${r}/Disk5/data6.cab ]] ; then
- USE_MIDWAY_DVD=1
- USE_DVD=1
- elif [[ -f ${r}/autorund/unreal.ico ]] \
- && [[ -f ${r}/disk7/data8.cab ]] ; then
- USE_MIDWAY_DVD=1
- USE_GERMAN_MIDWAY_DVD=1
- USE_DVD=1
- else
- [[ -d ${r}/CD1 ]] && USE_DVD=1
- [[ -d ${r}/CD7 ]] && USE_ECE_DVD=1
- fi
- fi
- done
-}
-
-grabdirs() {
- local d
- for d in {Music,Sounds,Speech,StaticMeshes,Textures} ; do
- local srcdir=${CDROM_ROOT}/${1}/${d}
- # Is flexible to handle CD_ROOT vs CD_ROOT_1 mixups
- [[ -d ${srcdir} ]] || srcdir=${CDROM_ROOT}/${d}
- if [[ -d ${srcdir} ]] ; then
- insinto /opt/ut2004
- doins -r "${srcdir}"
- fi
- done
-}
-
-ut_unpack() {
- local ut_unpack="$1"
- local f=
-
- if [[ -z ${ut_unpack} ]] ; then
- die "You must provide an argument to ut_unpack"
- fi
- if [[ -f ${ut_unpack} ]] ; then
- uz2unpack "${ut_unpack}" "${ut_unpack%.uz2}" \
- || die "uncompressing file ${ut_unpack}"
- fi
- if [[ -d ${ut_unpack} ]] ; then
- while read f ; do
- uz2unpack "${ut_unpack}/${f}" "${ut_unpack}/${f%.uz2}" \
- || die "uncompressing file ${f}"
- rm -f "${ut_unpack}/${f}" || die "deleting compressed file ${f}"
- done < <(find "${ut_unpack}" -maxdepth 1 -name '*.uz2' -printf '%f\n' 2>/dev/null)
- fi
-}
-
-pkg_setup() {
- ewarn "This is a huge package. If you do not have at least 7GB of free"
- ewarn "disk space in ${PORTAGE_TMPDIR} and also in /opt"
- ewarn "then you should abort this installation now and free up some space."
-}
-
-src_unpack() {
- check_dvd
-
- if [[ ${USE_DVD} -eq 1 ]] ; then
- if [[ ${USE_MIDWAY_DVD} -eq 1 ]] ; then
- # Is 1 DVD, either UT2004-only or Anthology
- if [[ ${USE_GERMAN_MIDWAY_DVD} -eq 1 ]] ; then
- cdrom_get_cds autorund/unreal.ico
- else
- cdrom_get_cds AutoRunData/Unreal.ico
- fi
- else
- DISK1="CD1"
- DISK2="CD2"
- DISK3="CD3"
- DISK4="CD4"
- DISK5="CD5"
- DISK6="CD6"
- if [[ ${USE_ECE_DVD} -eq 1 ]] ; then
- # Editor's Choice Edition DVD
- cdrom_get_cds \
- ${DISK1}/System/UT2004.ini \
- ${DISK2}/Textures/2K4Fonts.utx.uz2 \
- ${DISK3}/Textures/ONSDeadVehicles-TX.utx.uz2 \
- ${DISK4}/Textures/XGameShaders2004.utx.uz2 \
- ${DISK5}/Speech/ons.xml \
- ${DISK6}/Sounds/TauntPack.det_uax.uz2
- else
- # Original DVD
- cdrom_get_cds \
- ${DISK1}/System/UT2004.ini \
- ${DISK2}/Textures/2K4Fonts.utx.uz2 \
- ${DISK3}/Textures/ONSDeadVehicles-TX.utx.uz2 \
- ${DISK4}/StaticMeshes/AlienTech.usx.uz2 \
- ${DISK5}/Speech/ons.xml \
- ${DISK6}/Sounds/TauntPack.det_uax.uz2
- fi
- fi
- else
- # 6 CDs
- cdrom_get_cds \
- System/UT2004.ini \
- Textures/2K4Fonts.utx.uz2 \
- Textures/ONSDeadVehicles-TX.utx.uz2 \
- StaticMeshes/AlienTech.usx.uz2 \
- Speech/ons.xml \
- Sounds/TauntPack.det_uax.uz2
- fi
-
- if [[ ${USE_MIDWAY_DVD} -ne 1 ]] ; then
- unpack_makeself "${CDROM_ROOT}"/linux-installer.sh
- use x86 && unpack ./linux-x86.tar
- use amd64 && unpack ./linux-amd64.tar
- fi
-}
-
-src_install() {
- local j
- local Ddir="${ED}"/opt/ut2004
-
- if [[ ${USE_MIDWAY_DVD} -eq 1 ]] ; then
- einfo "Copying files from UT2004 Midway DVD."
-
- if [[ -f ${CDROM_ROOT}/Manual/Manual.pdf ]] ; then
- insinto /opt/ut2004/Manual
- doins "${CDROM_ROOT}"/Manual/Manual.pdf
- elif [[ -f ${CDROM_ROOT}/Manual.pdf ]] ; then
- insinto /opt/ut2004/Manual
- doins "${CDROM_ROOT}"/Manual.pdf
- fi
-
- # Symlinks for unshield. data1&2.cab are both in Disk1.
- # unshield needs data1.hdr
- # The Midway Anthology DVD contains up to data9.cab
- local cabfile
- for cabfile in "${CDROM_ROOT}"/[dD]isk*/data*.{cab,hdr} ; do
- ln -sfn "${cabfile}" .
- done
-
- # The big extraction
- einfo "Extracting from CAB files - this will take several minutes..."
- unshield x data1.cab || die
-
- if [[ -d 4_UT2004_Animations ]] ; then
- # Delete the other games on the Anthology DVD
- rm -rf {1,2,3}_Unreal* 4_UT2004_EXE Launcher_* OCXFiles || die
- # Rename directories to be same as Midway UT2004-only DVD,
- # i.e. rename "4_UT2004_Animations" to "Animations".
- for j in 4_UT2004_* ; do
- mv -f ${j} ${j/4_UT2004_} || die
- done
- fi
-
- # The "logging" subdirectory is created by unshield.
- rm -rf logging || die
- rm -f *.{cab,hdr} || die
-
- for j in Animations Benchmark ForceFeedback Help KarmaData \
- Manual Maps Music Sounds Speech StaticMeshes \
- System Textures Web ; do
-
- # UT2004-only DVD has "All_*" dirs, and Anthology DVD has "*_All"
- if [[ -d All_${j} ]] ; then
- if [[ -d ${j} ]] ; then
- cp -rf All_${j}/* ${j}/ || die
- else
- mv -f All_${j} ${j} || die
- fi
- fi
- if [[ -d ${j}_All ]] ; then
- if [[ -d ${j} ]] ; then
- cp -rf ${j}_All/* ${j}/ || die
- else
- mv -f ${j}_All ${j} || die
- fi
- fi
-
- if [[ -d English_${j} ]] ; then
- if [[ -d ${j} ]] ; then
- cp -rf English_${j}/* ${j}/ || die
- else
- mv -f English_${j} ${j} || die
- fi
- fi
- if [[ -d ${j}_English ]] ; then
- if [[ -d ${j} ]] ; then
- cp -rf ${j}_English/* ${j}/ || die
- else
- mv -f ${j}_English ${j} || die
- fi
- fi
-
- # Ensure that the directory exists
- mkdir -p ${j}
- done
-
- # Rearrange directories
- if [[ -d English_Sounds_Speech_System_Help ]] ; then
- # http://utforums.epicgames.com/showthread.php?t=558146
- for j in Sounds Speech System Help ; do
- cp -rf English_Sounds_Speech_System_Help/${j}/* ${j}/ || die
- done
- fi
-
- if [[ ! -d Benchmark/Stuff ]] ; then
- mkdir -p Benchmark/Stuff || die
- cp -f BenchmarkStuff/timedemo.txt Benchmark/Stuff || die
- fi
-
- if [[ ! -d System/editorres ]] ; then
- mkdir -p System/editorres || die
- cp -rf Systemeditorres/* System/editorres || die
- fi
-
- if [[ ! -d Web/images ]] ; then
- mkdir -p Web/{images,ServerAdmin,Src} || die
- cp -rf Webimages/* Web/images || die
- cp -rf WebServerAdmin/* Web/ServerAdmin || die
- cp -rf WebSrc/* Web/Src || die
- fi
-
- # Other languages
- for j in Help_* Sounds_* System_* ; do
- [[ ! -d ${j} ]] && continue
- mv -n ${j}/* ${j/_*}/ || die
- done
-
- # Remove unnecessary directories
- rm -rf Benchmark{CSVs,Logs,Results,Stuff}
- rm -rf Systemeditorres Web{images,ServerAdmin,Src}
- rm -rf Help_* Sounds_* Speech_* System_*
- rm -rf \<* \[* _* All_* English_* *_All *_English
-
- # These files are replaced later, for all installations
- rm -f $(find . -type f -name 'DO_NOT_DELETE.ME')
-
- # Install icon
- if [[ -f ut2004.xpm ]] ; then
- doicon ut2004.xpm
- elif [[ -f Help/Unreal.ico ]] ; then
- newicon Help/Unreal.ico ut2004.ico
- elif [[ -f ${CDROM_ROOT}/AutoRunData/Unreal.ico ]] ; then
- newicon "${CDROM_ROOT}"/AutoRunData/Unreal.ico ut2004.ico
- elif [[ -f Help/Unreal.bmp ]] ; then
- newicon Help/Unreal.bmp ut2004.bmp
- fi
-
- # The big install
- einfo "Installing UT2004 directories..."
- insinto /opt/ut2004
- doins -r .
- else
- # Disk 1
- einfo "Copying files from Disk 1..."
- insinto /opt/ut2004
- doins -r "${CDROM_ROOT}"/${DISK1}/{Animations,ForceFeedback,Help,KarmaData,Maps,Sounds,Web}
- insinto /opt/ut2004/System
- doins -r "${CDROM_ROOT}"/${DISK1}/System/{editorres,*.{bat,bmp,dat,det,est,frt,ini,int,itt,kot,md5,smt,tmt,u,ucl,upl,url}}
- insinto /opt/ut2004/Manual
- doins "${CDROM_ROOT}"/${DISK1}/Manual/Manual.pdf
- insinto /opt/ut2004/Benchmark/Stuff
- doins -r "${CDROM_ROOT}"/${DISK1}/Benchmark/Stuff/.
- cdrom_load_next_cd
-
- local diskno
- for diskno in {2..5} ; do
- einfo "Copying files from Disk ${diskno}..."
- local varname="DISK${diskno}"
- grabdirs ${!varname}
- cdrom_load_next_cd
- done
-
- # Disk 6
- einfo "Copying files from Disk 6..."
- grabdirs "${DISK6}"
-
- # Install extra help files
- insinto /opt/ut2004/Help
- doins README.linux Unreal.bmp UT2004_EULA.txt ut2004.xpm
-
- doicon ut2004.xpm
-
- # Uncompress files
- einfo "Uncompressing files... this *will* take a while..."
- for j in Animations Maps Sounds StaticMeshes Textures ; do
- fperms -R u+w /opt/ut2004/${j}
- ut_unpack "${Ddir}"/${j}
- done
- fi
-
- # Create empty files in Benchmark
- for j in {CSVs,Logs,Results} ;do
- keepdir /opt/ut2004/Benchmark/${j}
- done
-
- # Remove unneccessary files
- rm -f "${Ddir}"/*.{bat,exe,EXE,int} || die
- rm -f "${Ddir}"/Help/{.DS_Store,SAPI-EULA.txt} || die
- rm -f "${Ddir}"/Manual/*.exe || die
- rm -rf "${Ddir}"/Speech/Redist || die
- rm -f "${Ddir}"/System/*.{bat,dll,exe,tar} || die
- rm -f "${Ddir}"/System/{{License,Manifest}.smt,{ucc,StdOut}.log} || die
- rm -f "${Ddir}"/System/{User,UT2004}.ini || die
-
- # Remove file collisions with ut2004-3369-r4
- rm -f "${Ddir}"/Animations/ONSNewTank-A.ukx || die
- rm -f "${Ddir}"/Help/UT2004Logo.bmp || die
- rm -f "${Ddir}"/System/{ALAudio.kot,AS-{Convoy,FallenCity,Glacier}.kot,AS-{Convoy,FallenCity,Glacier,Junkyard,Mothership,RobotFactory}.int,bonuspack.{det,est,frt},BonusPack.{int,itt,u},BR-Serenity.int} || die
- rm -f "${Ddir}"/System/CTF-{AbsoluteZero,BridgeOfFate,DE-ElecFields,DoubleDammage,January,LostFaith}.int || die
- rm -f "${Ddir}"/System/DM-{1on1-Albatross,1on1-Desolation,1on1-Mixer,Corrugation,IronDeity,JunkYard}.int || die
- rm -f "${Ddir}"/System/{DOM-Atlantis.int,OnslaughtBP.{kot,u,ucl},OnslaughtFull.int} || die
- rm -f "${Ddir}"/System/{Build.ini,CacheRecords.ucl,Core.{est,frt,kot,int,itt,u},CTF-January.kot,D3DDrv.kot,DM-1on1-Squader.kot} || die
- rm -f "${Ddir}"/System/{Editor,Engine,Gameplay,GamePlay,UnrealGame,UT2k4Assault,XInterface,XPickups,xVoting,XVoting,XWeapons,XWebAdmin}.{det,est,frt,int,itt,u} || die
- rm -f "${Ddir}"/System/{Fire.u,IpDrv.u,License.int,ONS-ArcticStronghold.kot} || die
- rm -f "${Ddir}"/System/{OnslaughtFull,onslaughtfull,UT2k4AssaultFull}.{det,est,frt,itt,u} || die
- rm -f "${Ddir}"/System/{GUI2K4,Onslaught,skaarjpack,SkaarjPack,XGame}.{det,est,frt,int,itt,kot,u} || die
- rm -f "${Ddir}"/System/{Setup,Window}.{det,est,frt,int,itt,kot} || die
- rm -f "${Ddir}"/System/XPlayers.{det,est,frt,int,itt} || die
- rm -f "${Ddir}"/System/{UnrealEd.u,UTClassic.u,UTV2004c.u,UTV2004s.u,UWeb.u,Vehicles.kot,Vehicles.u,Xweapons.itt,UT2K4AssaultFull.int,UTV2004.kot,UTV2004s.kot} || die
- rm -f "${Ddir}"/System/{XAdmin.kot,XAdmin.u,XMaps.det,XMaps.est} || die
- rm -f "${Ddir}"/Textures/jwfasterfiles.utx || die
- rm -f "${Ddir}"/Web/ServerAdmin/{admins_home.htm,current_bots.htm,ut2003.css,current_bots_species_group.inc} || die
- rm -f "${Ddir}"/Web/ServerAdmin/ClassicUT/current_bots.htm || die
- rm -f "${Ddir}"/Web/ServerAdmin/UnrealAdminPage/{adminsframe.htm,admins_home.htm,admins_menu.htm,current_bots.htm,currentframe.htm,current_menu.htm} || die
- rm -f "${Ddir}"/Web/ServerAdmin/UnrealAdminPage/{defaultsframe.htm,defaults_menu.htm,footer.inc,mainmenu.htm,mainmenu_itemd.inc,rootframe.htm,UnrealAdminPage.css} || die
- rm -f "${Ddir}"/Web/ServerAdmin/UT2K3Stats/{admins_home.htm,current_bots.htm,ut2003stats.css} || die
-
- # Remove file collisions with ut2004-bonuspack-ece
- rm -f "${Ddir}"/Animations/{MechaSkaarjAnims,MetalGuardAnim,NecrisAnim,ONSBPAnimations}.ukx || die
- rm -f "${Ddir}"/Help/BonusPackReadme.txt || die
- rm -f "${Ddir}"/Maps/ONS-{Adara,IslandHop,Tricky,Urban}.ut2 || die
- rm -f "${Ddir}"/Sounds/{CicadaSnds,DistantBooms,ONSBPSounds}.uax || die
- rm -f "${Ddir}"/StaticMeshes/{BenMesh02,BenTropicalSM01,HourAdara,ONS-BPJW1,PC_UrbanStatic}.usx || die
- rm -f "${Ddir}"/System/{ONS-Adara.int,ONS-IslandHop.int,ONS-Tricky.int,ONS-Urban.int,OnslaughtBP.int,xaplayersl3.upl} || die
- rm -f "${Ddir}"/Textures/{AW-2k4XP,BenTex02,BenTropical01,BonusParticles,CicadaTex,Construction_S}.utx || die
- rm -f "${Ddir}"/Textures/{HourAdaraTexor,ONSBPTextures,ONSBP_DestroyedVehicles,PC_UrbanTex,UT2004ECEPlayerSkins}.utx || die
-
- # Remove file collisions with ut2004-bonuspack-mega
- rm -f "${Ddir}"/Help/MegapackReadme.txt || die
- rm -f "${Ddir}"/Maps/{AS-BP2-Acatana,AS-BP2-Jumpship,AS-BP2-Outback,AS-BP2-SubRosa,AS-BP2-Thrust}.ut2 || die
- rm -f "${Ddir}"/Maps/{CTF-BP2-Concentrate,CTF-BP2-Pistola,DM-BP2-Calandras,DM-BP2-GoopGod}.ut2 || die
- rm -f "${Ddir}"/Music/APubWithNoBeer.ogg || die
- rm -f "${Ddir}"/Sounds/A_Announcer_BP2.uax || die
- rm -f "${Ddir}"/StaticMeshes/{JumpShipObjects,Ty_RocketSMeshes}.usx || die
- rm -f "${Ddir}"/System/{AssaultBP.u,Manifest.in{i,t},Packages.md5} || die
- rm -f "${Ddir}"/Textures/{JumpShipTextures,T_Epic2k4BP2,Ty_RocketTextures}.utx || die
-}
-
-pkg_postinst() {
- xdg_icon_cache_update
-
- elog "This is only the data portion of the game. To play UT2004,"
- elog "you still need to install games-fps/ut2004."
-}
-
-pkg_postrm() {
- xdg_icon_cache_update
-}
diff --git a/games-fps/ut2004-data/ut2004-data-3369.ebuild b/games-fps/ut2004-data/ut2004-data-3369.ebuild
new file mode 100644
index 000000000000..098dab57c1e9
--- /dev/null
+++ b/games-fps/ut2004-data/ut2004-data-3369.ebuild
@@ -0,0 +1,267 @@
+# 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 portability
+
+DESCRIPTION="Data files for Unreal Tournament 2004"
+HOMEPAGE="https://liandri.beyondunreal.com/Unreal_Tournament_2004"
+GOG=( "setup_unreal_tournament_2004_1.0_(18947).exe" "setup_unreal_tournament_2004_1.0_(18947)-1.bin" )
+SRC_URI="
+ !cdinstall? ( !gog? ( fetch+https://files.oldunreal.net/UT2004.ISO -> UT2004.iso ) )
+ gog? ( ${GOG[*]} )
+ megapack? ( fetch+https://unreal-archive-files-na.s3.ca-east-tor.io.cloud.ovh.net/managed/Unreal%20Tournament%202004/patches-updates/bonus-packs/ut2004megapack-linux.tar.bz2 )
+"
+S="${WORKDIR}"
+
+LICENSE="Epic-TOS" # See metadata.xml for the legal background.
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE="megapack doc gog l10n_de l10n_es l10n_fr l10n_it l10n_ko"
+RESTRICT="bindist gog? ( fetch ) mirror"
+REQUIRED_USE="
+ ?? ( cdinstall gog )
+ !cdinstall? ( !megapack )
+"
+
+UT_DEPEND=">=games-fps/ut2004-3374_pre23"
+
+BDEPEND="
+ ${UT_DEPEND}
+ cdinstall? ( app-arch/unshield )
+ gog? ( app-arch/innoextract )
+ !cdinstall? ( !gog? (
+ app-arch/libarchive
+ app-arch/unshield
+ ) )
+"
+RDEPEND="
+ ${UT_DEPEND}
+ !games-fps/ut2004-bonuspack-ece
+ !games-fps/ut2004-bonuspack-mega
+ !games-server/ut2004-ded
+"
+
+# Assuming the OldUnreal ISO.
+CHECKREQS_DISK_BUILD="15G"
+
+pkg_nofetch() {
+ einfo "Please download ${GOG[0]} and"
+ einfo "${GOG[1]} from GOG and move them"
+ 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
+ *.det|*.det_*|4_UT2004_*_German*) ! use l10n_de ;;
+ *.est|*.est_*|4_UT2004_*_Spanish) ! use l10n_es ;;
+ *.frt|*.frt_*|4_UT2004_*_French) ! use l10n_fr ;;
+ *.itt|*.itt_*|4_UT2004_*_Italian) ! use l10n_it ;;
+ *.kot|*.kot_*) ! use l10n_ko ;;
+ *) return 1 ;;
+ esac
+}
+
+src_unpack() {
+ if use gog; then
+ innoextract --extract "${DISTDIR}/${GOG[0]}" || die
+ return
+ elif 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. Note that the free download lacks localised audio and some"
+ ewarn "localised text."
+ echo
+ else
+ # We might as well handle a downloaded ISO and a user-provided ISO the
+ # same way through cdrom.eclass.
+ CD_ROOT="${DISTDIR}/UT2004.iso"
+ fi
+
+ # No really, Midway.tga is *not* on the Midway DVD.
+ # The German Midway DVD doesn't include UT99.
+
+ cdrom_get_cds \
+ Manuals/UnrealTournament_English.pdf:autorund/unreal.ico:AutoRunData/Midway.tga:CD6/Sounds/TauntPack.det_uax.uz2:linux-installer.sh:System/UT2004.ini \
+ ::::Textures/2K4Fonts.utx.uz2:Textures/2K4Fonts.utx.uz2 \
+ ::::Textures/ONSDeadVehicles-TX.utx.uz2:Textures/ONSDeadVehicles-TX.utx.uz2 \
+ ::::StaticMeshes/AlienTech.usx.uz2:StaticMeshes/AlienTech.usx.uz2 \
+ ::::Speech/ons.xml:Speech/ons.xml \
+ :::::Sounds/TauntPack.det_uax.uz2
+
+ case ${CDROM_SET} in
+ 0) einfo "Found Midway Unreal Anthology DVD" ;;
+ 1) einfo "Found German Midway Unreal Anthology DVD" ;;
+ 2) einfo "Found OldUnreal UT2004 DVD" ;;
+ 3) einfo "Found UT2004 DVD (original or Editor's Choice Edition)" ;;
+ 4) einfo "Found UT2004 CD 1 of 5" ;;
+ 5) einfo "Found UT2004 CD 1 of 6" ;;
+ esac
+
+ case ${CDROM_SET} in
+ 3|4|5)
+ if ! use megapack; then
+ die "Your installation source lacks the Mega Pack. Please enable USE=\"megapack\" to download it."
+ fi ;;
+ *)
+ if use megapack; then
+ ewarn "Enabling USE=\"megapack\" just downloads an unnecessary file with"
+ ewarn "this installation source. Please disable it."
+ fi ;;
+ esac
+
+ local group dir cdnum
+ case ${CDROM_SET} in
+ 0|1)
+ # 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
+ 4_UT2004_Benchmark|4_UT2004_EXE|4_UT2004_Manual_*|4_UT2004_Web) continue ;;
+ 4_UT2004_*) : ;;
+ *) continue ;;
+ esac
+ locale_mismatch "${group}" && continue
+ unshield -g "${group}" x "${T}"/data1.cab || die
+ done
+
+ for dir in 4_UT2004_*; do
+ mv -v "${dir}" "${dir#4_UT2004_}" || die
+ done
+
+ for dir in *_*/; do
+ mkdir -p "${dir%_*}" || die
+ tar -C "${dir}" --remove-files -cf - . | tar -C "${dir%_*}" -xvf - || die
+ done
+ ;;
+
+ 2)
+ # 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
+ All_Benchmark|All_Web) continue ;;
+ All_*|English_Sounds_Speech_System_Help|US_License.int) : ;;
+ *) continue ;;
+ esac
+ unshield -g "${group}" x "${T}"/data1.cab || die
+ done
+
+ for dir in All_*; do
+ mv -v "${dir}" "${dir#All_}" || die
+ done
+
+ mkdir -p Sounds Speech System Help || die
+ mv -v UT2004.EXE/* US_License.int/* System/ || die
+ for dir in English_Sounds_Speech_System_Help/*/; do
+ mv -v "${dir}"/* "${dir#*/}" || die
+ done
+ ;;
+
+ 3)
+ for cdnum in {1..6}; do
+ tar -C "${CDROM_ROOT}/CD${cdnum}" --mode=u+w -cf - . | tar -xvf - || die
+ done
+ ;;
+
+ 4|5)
+ tar -C "${CDROM_ROOT}" --mode=u+w -cf - . | tar -xvf - || die
+ for cdnum in $(seq 2 $((CDROM_SET + 1))); do
+ cdrom_load_next_cd
+ tar -C "${CDROM_ROOT}" --mode=u+w -cf - . | tar -xvf - || die
+ done
+ ;;
+ esac
+
+ # Some disks compress most of the files. The engine has the decompresser.
+ # Annoyingly, it logs to the engine's directory.
+ addpredict "${BROOT}"/opt/ut2004
+ find -name "*.uz2" -exec ut2004-ucc decompress "${PWD}"/{} -nohomedir \; -delete || die
+
+ # Install the Mega Pack where necessary for parity between different
+ # installation sources. This includes the ECE content but *not* the XP Bonus
+ # Maps (ONS-Aridoom and ONS-Ascendancy). The latter were never released as
+ # part of the game and OldUnreal does not include them in its installation.
+ case ${CDROM_SET} in
+ 3|4|5) tar --strip-components=1 -jxvf "${DISTDIR}"/ut2004megapack-linux.tar.bz2 || die ;;
+ esac
+}
+
+src_install() {
+ local dir file
+
+ if use doc; then
+ case ${CDROM_SET} in
+ 0|1)
+ newdoc "${CDROM_ROOT}"/Manuals/UT2004_English.pdf Manual.pdf
+ use l10n_de && newdoc "${CDROM_ROOT}"/Manuals/UT2004_German.pdf Manual_de.pdf
+ use l10n_es && newdoc "${CDROM_ROOT}"/Manuals/UT2004_Spanish.pdf Manual_es.pdf
+ use l10n_fr && newdoc "${CDROM_ROOT}"/Manuals/Français/UT2004.pdf Manual_fr.pdf
+ use l10n_it && newdoc "${CDROM_ROOT}"/Manuals/UT2004_Italian.pdf Manual_it.pdf ;;
+ 2) dodoc "${CDROM_ROOT}"/Manual.pdf ;;
+ 3) dodoc "${CDROM_ROOT}"/CD1/Manual/Manual.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)
+
+ # The OldUnreal patches currently lack localisation files for French,
+ # Italian, and Korean even though some editions did include these. Move them
+ # from System to SystemLocalized as recommended, but only if each has an
+ # equivalent English (.int) file. Also match the casing of the English
+ # filename for sanity and to avoid duplicates.
+ (
+ shopt -s extglob nocaseglob nullglob || die
+ local lang match
+ for lang in fr it ko; do
+ mkdir -p SystemLocalized/${lang}t || die
+ for file in System/*.${lang}t; do
+ file=${file#*/}
+ eval "match=( \"${BROOT}\"/opt/ut2004/SystemLocalized/int/?(${file%.*}.int) )"
+ if [[ -n ${match[0]} ]]; then
+ match=${match[0]##*/}
+ mv -v "System/${file}" "SystemLocalized/${lang}t/${match%.int}.${lang}t" || die
+ fi
+ done
+ done
+ )
+
+ insinto /opt/ut2004
+ doins -r SystemLocalized
+
+ # 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 ! -name "*.*_uax" | grep -Fxvf <(sed "s:^:${dir}/:" "${file}") | xargs -r rm -v -- || die
+ done
+
+ # https://github.com/OldUnreal/UT2004Patches/issues/514
+ # We could regenerate the cache for the entire base game, but it's awkward,
+ # so just cover the missing BP2 maps in a separate file.
+ ut2004-ucc exportcache -mod=Gentoo Maps/*-BP2-*.ut2 || die
+ mv -v System/{CacheRecords,BP2}.ucl || die
+
+ for file in "${FILESDIR}"/listings/*; do
+ doins -r "${file##*/}"
+ done
+
+ for dir in CSVs Logs Results; do
+ keepdir /opt/ut2004/Benchmark/${dir}
+ done
+}
diff --git a/games-fps/ut2004/Manifest b/games-fps/ut2004/Manifest
index 1cdcee8f7d96..2ca4139984ca 100644
--- a/games-fps/ut2004/Manifest
+++ b/games-fps/ut2004/Manifest
@@ -1,2 +1,2 @@
-DIST ut2004-lnxpatch3369-2.tar.bz2 22465217 BLAKE2B 9852f9d55804b7f2927a31be86aee1552aaebeb38d2a40fb206154c236e9d6eff47f7594024c0d9b25c7216d3ca62571b1f89f23f72ee9e135b2e6451bcb006a SHA512 0d6f26d5a811efd64be8c304e928e03f546d9a8eaba6b074843e2b7e76e0670b39df95200a2fe2040d72bbd204c7157ed0115649a5c85396a76d9e0b7ec284b1
-DIST ut2004-v3369-3-linux-dedicated.7z 5013927 BLAKE2B 72d24d7bc37c777f3697b767a03e052ad9b547005dd6da73833e439496e87a9c1ebbe01f88d62b29a41b2bf6380a3b3bd745e6883fbb6d0f2b7e52998d4af276 SHA512 3b2a7b64934a3647c02c9fec48565c5c2c35370d635b2af4059eb76587bfa13f46e6a4e14fdb0494ba7a4182497ed5963601986f4fcfa318e69a8a8a8c0178cf
+DIST OldUnreal-UT2004Patch3374-Linux-094b94dc.tar.bz2 59562107 BLAKE2B aed8841a25061d691efba1d13bb8275828d502ce4c8282a7997134fcd2196994bf1874df042bcb96584f5924ab17bf9e5f1cb0aa952485a2079e57ac29953cf6 SHA512 800590216a019e043b005c2c632acc37496175479d154e5cc09637f8c805db74efe373f1e24d6188677dd4bf3b2c31a2ac8c1330d2f7aa749b7132a08ae3c1d1
+DIST ut2004.png 24706 BLAKE2B dee5ca091ccd4c75e0dca728193ee7c085fb9662c1d518e2cb8977fbd7fef848ac74a37cdc77c969b5399d2b82cb3bdc0ea754cffffa4bee504a424871e7b9a9 SHA512 7b1187786f8574c6e7f47e07a1f112b726c4480a8cf30386821b5112ee1a12d34319b12c3cffb084ff8460e9de244f625de5deb325eadedcc23f431069312e29
diff --git a/games-fps/ut2004/files/gentoo-mod.patch b/games-fps/ut2004/files/gentoo-mod.patch
new file mode 100644
index 000000000000..b0d30fedee88
--- /dev/null
+++ b/games-fps/ut2004/files/gentoo-mod.patch
@@ -0,0 +1,25 @@
+This allows us to run `ut2004-ucc exportcache -mod=Gentoo` in other ebuilds.
+It will find the resources in WORKDIR and write the .ucl files there,
+regardless of whether they already exist system-wide.
+
+--- System/Default.ini 2026-06-08 08:14:27.000000000 +0100
++++ Gentoo/System/Gentoo.ini 2026-07-29 10:53:59.543115044 +0100
+@@ -53,11 +53,17 @@
+ SavePath=../Save
+ CachePath=../Cache
+ CacheExt=.uxx
+-CacheRecordPath=../System/*.ucl
++CacheRecordPath=../../../work/System/*.ucl
+ KarmaPath=../KarmaData
+ MusicPath=../Music
+ SpeechPath=../Speech
++Paths=../../../work/System/*.u
++Paths=../../../work/Maps/*.ut2
++Paths=../../../work/Textures/*.utx
++Paths=../../../work/Sounds/*.uax
++Paths=../../../work/StaticMeshes/*.usx
++Paths=../../../work/Animations/*.ukx
+ Paths=../System/*.u
+ Paths=../Maps/*.ut2
+ Paths=../Textures/*.utx
+ Paths=../Sounds/*.uax
diff --git a/games-fps/ut2004/files/ut2004-ded.confd b/games-fps/ut2004/files/ut2004-ded.confd
index e82238b93de0..971ca21a6260 100644
--- a/games-fps/ut2004/files/ut2004-ded.confd
+++ b/games-fps/ut2004/files/ut2004-ded.confd
@@ -1,6 +1,6 @@
-# User and group the server should run as.
-ut2004_ded_user="nobody"
-ut2004_ded_group="nobody"
+# User and group the server should run as. A valid HOME is required.
+ut2004_ded_user="unreal"
+ut2004_ded_group="unreal"
# Any extra options you want to pass to the server.
ut2004_ded_opts="DM-Deck17"
diff --git a/games-fps/ut2004/files/ut2004-ded.initd b/games-fps/ut2004/files/ut2004-ded.initd
index c4cf9810cd15..3324fb0ce0ac 100644
--- a/games-fps/ut2004/files/ut2004-ded.initd
+++ b/games-fps/ut2004/files/ut2004-ded.initd
@@ -1,12 +1,12 @@
#!/sbin/openrc-run
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
pidfile="/var/run/${RC_SVCNAME}.pid"
command_background="true"
command_user="${ut2004_ded_user}:${ut2004_ded_group}"
-command="ut2004-ded"
-command_args="${ut2004_ded_opts}"
+command="ut2004-ucc"
+command_args="server ${ut2004_ded_opts}"
depend() {
need net
diff --git a/games-fps/ut2004/files/wrapper.sh b/games-fps/ut2004/files/wrapper.sh
new file mode 100644
index 000000000000..2bb7445ad309
--- /dev/null
+++ b/games-fps/ut2004/files/wrapper.sh
@@ -0,0 +1,15 @@
+#!/bin/bash -eu
+
+System="@EPREFIX@/opt/ut2004/@System@"
+
+mkdir -p "${HOME}"/.ut2004/System
+cp --update=none "${System}/Default.ini" "${HOME}"/.ut2004/System/UT2004.ini
+
+lang=${LC_MESSAGES:-${LC_ALL:-${LANG:-in}}}
+[[ ${lang} == en* ]] && lang=in
+sed -i "/^\[Engine\.Engine\]/,/^\[/s:^Language=.*:Language=${lang:0:2}t:" "${HOME}"/.ut2004/System/UT2004.ini
+
+exe=${0##*/}
+exe=${exe#ut2004-}
+exe=${exe@U}
+exec "${System}/${exe}" "${@}"
diff --git a/games-fps/ut2004/ut2004-3369.3-r4.ebuild b/games-fps/ut2004/ut2004-3369.3-r4.ebuild
deleted file mode 100644
index f385f6942a1e..000000000000
--- a/games-fps/ut2004/ut2004-3369.3-r4.ebuild
+++ /dev/null
@@ -1,124 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit desktop wrapper unpacker
-
-PATCH_P="${PN}-lnxpatch${PV%.*}-2.tar.bz2"
-DESCRIPTION="Editor's Choice Edition plus Mega Pack for the well-known first-person shooter"
-HOMEPAGE="https://liandri.beyondunreal.com/Unreal_Tournament_2004"
-SRC_URI="
- https://unrealmassdestruction.com/downloads/ut2k4/essentials/${PATCH_P}
- https://unreal-archive-files-na.s3.ca-east-tor.io.cloud.ovh.net/managed/Unreal%20Tournament%202004/patches-updates/patches/${PATCH_P}
- https://dev.gentoo.org/~chewi/distfiles/ut2004-v${PV/./-}-linux-dedicated.7z
-"
-S="${WORKDIR}/${PN^^}-Patch"
-LICENSE="ut2003"
-SLOT="0"
-KEYWORDS="-* ~amd64 ~x86"
-RESTRICT="bindist mirror strip"
-
-RDEPEND="
- !games-server/ut2004-ded
- games-fps/ut2004-bonuspack-ece
- games-fps/ut2004-bonuspack-mega
- >=games-fps/ut2004-data-3186-r5
- media-libs/libsdl
- media-libs/openal
- sys-libs/glibc
- sys-libs/libstdc++-v3:5
- virtual/opengl
- x11-libs/libX11
- x11-libs/libXau
- x11-libs/libXdmcp
- x11-libs/libXext
-"
-
-BDEPEND="$(unpacker_src_uri_depends)"
-
-DIR="/opt/${PN}"
-
-# The executable pages are required. Bug #114733.
-QA_PREBUILT="*"
-
-src_prepare() {
- default
-
- if use amd64; then
- mv System/${PN}-bin{-linux-amd64,} || die
- mv ../${PN}-ucc-bin-09192008/ucc-bin-linux-amd64 System/ucc-bin || die
- else
- rm System/${PN}-bin-linux-amd64 || die
- mv ../${PN}-ucc-bin-09192008/ucc-bin System/ucc-bin || die
- fi
-
- # In ut2004-bonuspack-mega.
- rm System/{Manifest.in[it],Packages.md5} || die
-}
-
-src_install() {
- insinto "${DIR}"
- doins -r .
- fperms +x "${DIR}"/System/{ucc,${PN}}-bin
-
- dosym ../../../usr/$(get_libdir)/libopenal.so "${DIR}"/System/openal.so
- dosym ../../../usr/$(get_libdir)/libSDL-1.2.so.0 "${DIR}"/System/libSDL-1.2.so.0
-
- make_wrapper ${PN} ./${PN}-bin "${DIR}"/System "${DIR}"
- make_wrapper ${PN}-ded "./ucc-bin server" "${DIR}"/System
-
- make_desktop_entry ${PN} "Unreal Tournament 2004"
-
- newconfd "${FILESDIR}"/${PN}-ded.confd ${PN}-ded
- newinitd "${FILESDIR}"/${PN}-ded.initd ${PN}-ded
-}
-
-pkg_postinst() {
- # Here is where we check for the existence of a cdkey.
- # If we don't find one, we ask the user for it.
- if [[ -f "${EROOT}${DIR}"/System/cdkey ]] ; then
- einfo "A cdkey file is already present in ${EPREFIX}${DIR}/System"
- else
- ewarn "You MUST run this before playing the game:"
- ewarn "emerge --config =${CATEGORY}/${PF}"
- ewarn "That way you can [re]enter your cdkey."
- fi
- elog "Starting with 3369, the game supports render-to-texture. To enable"
- elog "it, you will need the Nvidia drivers of at least version 7676 and"
- elog "you should edit the following:"
- elog 'Set "UseRenderTargets=True" in the "[OpenGLDrv.OpenGLRenderDevice]"'
- elog 'section of your UT2004.ini or Default.ini and set "bPlayerShadows=True"'
- elog 'and "bBlobShadow=False" in the "[UnrealGame.UnrealPawn]" section of'
- elog 'your User.ini or DefUser.ini.'
-}
-
-pkg_postrm() {
- ewarn "This package leaves a cdkey file in ${EROOT}${DIR}/System that you need"
- ewarn "to remove to completely get rid of this game's files."
-}
-
-pkg_config() {
- ewarn "Your CD key is NOT checked for validity here so"
- ewarn "make sure you type it in correctly."
- ewarn "If you CTRL+C out of this, the game will not run!"
- ewarn
- einfo "CD key format is: XXXXX-XXXXX-XXXXX-XXXXX"
- while true ; do
- einfo "Please enter your CD key:"
- read CDKEY1
- einfo "Please re-enter your CD key:"
- read CDKEY2
- if [[ -z ${CDKEY1} ]] || [[ -z ${CDKEY2} ]] ; then
- echo "You entered a blank CD key. Try again."
- else
- if [[ ${CDKEY1} == ${CDKEY2} ]] ; then
- echo "${CDKEY1^^}" > "${EROOT}${DIR}"/System/cdkey || die
- einfo "Thank you!"
- break
- else
- eerror "Your CD key entries do not match. Try again."
- fi
- fi
- done
-}
diff --git a/games-fps/ut2004/ut2004-3374_pre23.ebuild b/games-fps/ut2004/ut2004-3374_pre23.ebuild
new file mode 100644
index 000000000000..7045d411c1db
--- /dev/null
+++ b/games-fps/ut2004/ut2004-3374_pre23.ebuild
@@ -0,0 +1,117 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop xdg
+
+COMMIT="094b94dc"
+DESCRIPTION="Modern build of the Unreal Tournament 2004 engine"
+HOMEPAGE="https://github.com/OldUnreal/UT2004Patches"
+SRC_URI="
+ https://github.com/OldUnreal/UT2004Patches/releases/download/${PV/_pre/-preview-}/OldUnreal-UT2004Patch${PV%_*}-Linux-${COMMIT}.tar.bz2
+ mirror+https://dev.gentoo.org/~chewi/distfiles/${PN}.png
+"
+S="${WORKDIR}"
+
+LICENSE="Epic-TOS"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~arm64"
+IUSE="dedicated l10n_de l10n_es l10n_fr l10n_he l10n_it l10n_ko l10n_pl l10n_ru"
+RESTRICT="bindist mirror strip"
+
+UT_DEPEND="games-fps/ut2004-data-3369"
+
+BDEPEND="
+ dev-util/patchelf
+"
+RDEPEND="
+ media-libs/libglvnd
+ media-libs/libsdl3[opengl]
+ media-libs/openal
+ dedicated? ( acct-user/unreal )
+ !games-fps/ut2004-bonuspack-ece
+ !games-fps/ut2004-bonuspack-mega
+ !games-server/ut2004-ded
+ !<${UT_DEPEND}
+"
+PDEPEND="
+ >=${UT_DEPEND}
+"
+
+DIR="/opt/${PN}"
+QA_PREBUILT="*"
+
+declare -gA SYSTEMS=(
+ [amd64]=""
+ [arm64]="ARM64"
+ [ppc64]="PPC64LE"
+)
+
+src_prepare() {
+ declare -g System="System${SYSTEMS[${ARCH}]}"
+ default
+
+ # https://github.com/OldUnreal/FullGameInstallers/issues/93
+ ln -s ../System/{CacheRecords.ucl,Packages.md5,xaplayersl3.upl,xplayersL{1,2}.upl} SystemARM64/ || die
+
+ # https://github.com/OldUnreal/UT2004Patches/issues/508
+ patchelf --remove-needed libGLX.so.0 "${System}"/{Anti,OpenGL}Drv.so || die
+
+ # This shouldn't be executable.
+ chmod a-x System/CacheRecords.ucl || die
+
+ # Remove the non-native files. The main System directory is shared, it's not
+ # just for amd64, so we cannot delete it entirely.
+ local system
+ for system in "${!SYSTEMS[@]}"; do
+ if [[ ${system} != ${ARCH} ]]; then
+ if [[ -n ${SYSTEMS[${system}]} ]]; then
+ rm -rv "System${SYSTEMS[${system}]}/" || die
+ else
+ find System/ ! -type d \( -type l -o -executable -o -name "*.ini" -o -name "*.so*" \) | xargs rm -v -- || die
+ fi
+ fi
+ done
+
+ # Remove bundled libraries.
+ rm -v "${System}"/lib{openal,SDL3}.so* || die
+
+ # Make it easier to generate cache files in other ebuilds.
+ mkdir -p Gentoo/System || die
+ touch Gentoo/UT2K4MOD.ini || die
+ patch -p0 -o - "${System}"/Default.ini "${FILESDIR}"/gentoo-mod.patch > Gentoo/System/Gentoo.ini || die
+
+ # Drop unwanted localisation files.
+ local dir lang
+ for dir in SystemLocalized/*; do
+ lang=${dir#*/}
+ lang=${lang:0:2}
+ [[ ${lang} == in ]] && continue
+ use "l10n_${lang}" || rm -rv "${dir}" || die
+ done
+}
+
+src_install() {
+ dodir "${DIR}"
+ cp -rP * "${ED}${DIR}" || die
+
+ sed -e "s:@EPREFIX@:${EPREFIX}:g" -e "s:@System@:${System}:g" "${FILESDIR}/wrapper.sh" | newbin - ${PN}
+ dosym ${PN} /usr/bin/${PN}-ucc
+
+ doicon -s 128 "${DISTDIR}/${PN}.png"
+ make_desktop_entry --eapi9 ${PN} -n "Unreal Tournament 2004" \
+ -C "Epic's popular first-person shooter"
+
+ if use dedicated; then
+ newconfd "${FILESDIR}"/${PN}-ded.confd ${PN}-ded
+ newinitd "${FILESDIR}"/${PN}-ded.initd ${PN}-ded
+ fi
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ # The CD key is no longer needed.
+ rm -f "${EROOT}${DIR}"/System/cdkey || die
+}