Ut99Mods
A collection of my hand-made mods for one of my my favorite games - Unreal Tournament '99!
Install / Use
/learn @1337GameDev/Ut99ModsREADME
<p align="center"> <img src="https://github.com/1337GameDev/Ut99Mods/blob/main/Github/Icons/ut_logo.png?raw=true" width="100" height="100" title="Ut99 Logo" alt="Ut99 Logo" height="35px" width="35px"> Ut99Mods <img src="https://github.com/1337GameDev/Ut99Mods/blob/main/Github/Icons/ut_logo.png?raw=true" width="100" height="100" title="Ut99 Logo" alt="Ut99 Logo" height="35px" width="35px"></p>
A collection of my hand-made mods for one of my my favorite games - Unreal Tournament '99!
Useage :video_game:
To merely use the pre-compiled packages, navigate to <a href="https://github.com/1337GameDev/Ut99Mods/releases">Releases</a> and download the latest zip and extract it over the top of your UT99 directory. If you're asked to merge any folders, answer yes.
:warning: This has been tested / compiled on v469c GOTY of UT99, but LIKELY would work on prior versions just fine (such as the latest official version of v436).
<span style="font-size:20px;color:#eb7d34">⚠</span> NOTE: <span style="font-size:20px;color:#eb7d34">⚠</span> These mods require ChaosUT and Relics to work properly. These are included with the GOTY version of the game. If you have a different version, please download and install these. These can be found <a href="https://chaoticdreams.org/chaosut-download/">here (ChaosUT)</a> and <a href="https://community.pcgamingwiki.com/files/file/133-unreal-tournament-bonus-pack-1/">here (Relics - Epic Bonus Pack #1)</a>. These are also included in the Dependencies folder for convenience.
Then load up the game, and look at the relevant test map, as well as the included mutators. The mutators should appear in the normal mutator list and be available to play with, as you would any other mutator.
To use them in your own custom maps, they need to be in EditPackages or loaded manually in the editor (or embedded into the map using MyLevel).
To host a server with these, don't forget to add them to ServerPackages otherwise there will be desync / players will fail to join / be kicked from the game randomly (or the server will just crash).
At the bottom of this README, are sections for various objects, and extra information on them / their usage.
Enjoy and frag on!
Compile Setup :wrench:
To compile, navigate to the ut99 directory with UCC.exe and run ucc make.
Alternatively
You can set up "doskey" to have macro commands in CMD. Modify macros.doskey to point to your ut99 directories.
Copy macros.doskey file to a location on C:
Run this:
reg add "HKCU\Software\Microsoft\Command Processor" /v Autorun /d "doskey /macrofile=\"C:\[doskey file location]\macros.doskey\"" /f
This will force the doskey script to run on every instance of cmd.
Verify in CMD using:
reg query "HKCU\Software\Microsoft\Command Processor" /v Autorun
Then
Add the relevant packages to your UnrealTournament.ini in the Ut99/System folder.
Look for the [Editor.EditorEngine] section, and the EditPackages entries.
Add the following to the end of them (order matters):
EditPackages=LGDUtilities
EditPackages=HaloAnnouncer
EditPackages=HeadHunter
EditPackages=Gibber
EditPackages=ItemSpawnerWeapon
EditPackages=C4
EditPackages=Juggernaut
EditPackages=EnergySword
EditPackages=Infection
EditPackages=GuidedEnergyLance
EditPackages=DeveloperMutator
EditPackages=KillConfirmed
Extra Documentation :page_facing_up:
<details> <summary>Weapons</summary> <blockquote> <details> <summary>C4 (Weapon)</summary> <blockquote>A placeable/throwable explosive weapon with a digital timer that can be changed via secondary fire.
Inventory group: 0 (same as BotPack.Translocator)
<details>
<summary>Usage</summary>
<blockquote>
- Primary Fire
- Does different things based on if you're close to what is being aimed at
- If CLOSE to a wall / actor (with collider), then you can place the C4 (instead of throwing)
- There is a "ghost" of the C4 of where it'll be placed
- If FAR from a target, the C4 will be thrown and attach to a surface / actor it collides with
- After placing / landing from a throw, it'll start counting down from the selected time and then explode
- Secondary Fire
- Increments the timer by
C4Weapon.TimerIncrementAmount(defaults to 10 seconds) - The timer value rolls over once
C4Weapon.MaxTimerSecondsis exceeded
- Damage type names defined in
C4Proj.DamageTypesToDisarm[]will disarm the C4 (timer turns off and C4 won't explode)
- Defaults damage type names:
impact,claw,cut,SpecialDamage,slashed,Decapitated,Corroded,Burned, andshredded
- C4 will attach to Pawns (but the explosion doesn't follow, so a Pawn can avoid damage if they are moving fast enough)
- Explosions, bullets, and other damage inducers will detonate the C4.
- The C4 will blink and make noises during countdown
- Bots can detect the C4 via a
C4Fearif they get close enough
- C4GiveWeaponMutator
- Gives each spawning PLAYER (Bots won't get one) a C4 to spawn with (sorry, creating new AI behaviors for this weapon is very complicated and could have taken a very long time to test and tweak)
- Created using MilkShape3D with a basic model and different groups for the timer components
- Timer has a different model group (and texture) for each digit and the ":" separator.
- Code will update the timer, and then modify each model group's texture for each digit out of the 0-9 digit textures (or a texture the same color as the timer background)
- Considered having a similar rendered texture to the UT_Eightball ammo counter (via
UT_Eightball.RenderOverlays()), but that can ONLY be instanced ONCE per camera (and multiple C4 instances would all have the same timer value displayed)
A weapon that is based around the PulseGun, but instead shoots gibs in a machine gun style or a shotgun shot. Shooting hurts the wielder (if that feature is enabled), and collecting your own gibs will heal you a fraction of the health lost.
Inventory group: 5 (replaces BotPack.PulseGun)
<details>
<summary>Usage</summary>
<blockquote>
- Primary Fire
- Fires a random gib as a projectile, and possibly hurts the wielder
- The wielder is hurt based on
Gibber.DoesFiringHurtOwnervariable - The wielder loses health (if
Gibber.DoesFiringHurtOwneris TRUE) accordingGibber.PrimaryFireHealthCost's value (defaults to 2)
- Secondary Fire
- Requires the user to HOLD the alt-fire button, for a number of seconds defined by
Gibber.AltFireTriggerHoldTime - After holding, the firing mode is "charged"
- When the wielder releases the alt-fire button a shotgun blast of 6 gibs are shot
- The wielder loses health (if
Gibber.DoesFiringHurtOwneris TRUE) accordingGibber.AltFireHealthCost's value (defaults to 12) - There is then a delay of a number of seconds (defined buy
Gibber.AltFireDelay), before the alt-fire can be used (to prevent the weapon from being over-powered and spammed)
- Collecting gibs will heal players (as defined by the
Gibber.BaseGibDamageandGibber.BaseGibHealMultiplier) (defaults to 10 and 0.1 respectively -- 10 damage and 10% of the gib damage as health returned) - Gib damage can vary if it's a boss, big or small gib (and damage is scaled by
Gibber.BossGibDamageMultiplierandGibber.SmallGibDamageMultiplier-- with defaults of 1.5 and 0.8 respectively -- and increase of 50% and reduction of 20% from base damage) - Gibs from an alt-fire shotgun blast deal extra damage based on being close enough to the target, defined by
Gibber.ExtraDamageMultiplierandGibber.DistanceThresholdToAddExtraDamage(with defaults of 10 and 300 -- if enemy is within 300 unreal units they take 10x damage from these gibs) - The extra damage is NOT used in the calculation for how much to heal (the idea was to base it off of the damage the wielder took when firing)
- UDamage multiplier does NOT affect health lost or healing gained
- You can still pick up the gibs to heal yourself, even if you're not allowed to pickup weapons or other pickups
- The gibs handle damage the same as the root gibs, and can exist in danger areas -- to lure players to try and heal
- GibberWeaponReplaceMutator
- Replaces the normal
BotPack.PulseGunon the map with the Gibber. - Also removes the ammo
BotpPack.PAmmofrom the map
- GibberArena
- An **
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
