## Introduction

Welcome to Monster Hunt!! Monster Hunt (MH from now on) is a modification for Unreal Tournament (UT from now on) that allows you and your team of hunters to fight your way through hoards of monsters attempting to prevent you from escaping. MH is played in specially designed maps (see "Mapping for Monster Hunt") full of monsters that appeared in the original Unreal (and hopefully many new ones in the future), and at the end of each map, you'll be faced with a Boss monster (or a few :-) that must be defeated to continue.

You can also try out Monster Arena, you and your team must enter an arena with the biggest, badest, most powerful monsters you're likely to face anywhere and beat the hell out of them to survive!

## Requirements

MH requires that you have UT patch 436 or higher installed to run, though OldUnreal patch 469 could be preferred.

You can get the latest patches from one of the following sites:

- Unreal Archive
- GitHub (OldUnreal 469+)
- UT-Files

## Gameplay Changes

### Monster Hunt

Teamplay has a strong role in successfully completing a Hunt, if players don't work as a team to accomplish objectives, they'll no doubt all end up dead pretty soon, those monsters don't fool around! Sharing pickups also becomes important, if one player grabs everything, the rest are left with nothing and will end up dead.

Because of the nature of MH, players may be faced with the occasional puzzle to solve, but they won't be as in-depth as a single player game might have - the emphasis is on action, not brainstorming.

The Translocator has been disabled in MH games, as it could spoil certain scenarios. The Chainsaw replaces the Impact Hammer as the default weapon for all that hack and slash goodness it provides :-)

### Monster Arena

Much like a traditional DeathMatch, but you're not playing against other players, you and your team are battling it out to the death against giant bloodthirsty monsters.

Players all start in an area protected from the monsters. Here, they have a chance to grab the weapons they'll be needing in the battle to come - there are no other weapons other than those provided at the start, you will however, be able to find ammo in the arena itself. Once the monster(s) are killed, you will automatically be taken to the next arena.

### Monster Defence

Monster Defence is played on regular CTF maps. Players must protect their flag base from invading hoards of monsters, and prevent them from escaping through the portal they have managed to open.

To win the round, players must hold out until the time limit is reached - the monsters are endless and cannot be stopped! The round will be lost if enough monsters escape through the portal, or all players lives have been exhausted.

## Mapping

### Monster Hunt

- Before you start on a map, open the MonsterHunt.u package in the class browser, so you have access to all the Monster Hunt-specific stuff.
- Maps should be more of a single player style, but make sure there are enough pickups for all the players and that there's enough space for a group of players to move around in.
- Boss monsters should be in large spacious areas, the players must be able to concentrate on defeating the monsters and not have to worry about the surrounding architecture.
- Make an escape route for the players to run through and place a MonsterEnd trigger (found in the class browser: Triggers -> Trigger -> MonsterEnd) where the players will run to end the level.
- If you want to add bot support to your map (very highly recommended), you can use the MonsterWaypoint actor (found in the class browser: Keypoint -> MonsterWaypoint). Just put the MonsterWaypoint actors wherever you want a bot waypoint to be, like near a button or a lever, or just along the path through the level. Set its Position property to tell the bots in which order the waypoints must be visited. Set the first one at 1, the next at 2, then 3, and so on. You can also enter the Event tag of a particular actor so when the bot gets to the waypoint, something can be triggered to happen.
- Be sure to add lots of PlayerStarts at the beginning of the level to make sure the players don't telefrag each other when the round starts - about 12-18 will be enough for a normal size map.
- You can implement simple puzzles for the players to solve along the way, but don't use too many as players will probably get frustrated.
- Feel free to use as many special effects as you like, in this style of game, the players will really take note an think "How'd they do that???" :-)
- Remember that there is no Translocator, so don't make any situations where it's needed to progress.
- The difficulty of the map is important, start with relatively weak monsters and as players progress through the level, use stronger and stronger enemies.
- Make sure your Boss monster is pretty strong, players will be disappointed it only takes a few shots to kill it.
- Don't put any monsters near to where the players will start, they'll all be slaughtered as soon as they spawn.
- Environmental hazards (slime, lava, huge drops, etc.) are great, but make sure the boss monster(s) can't fall in, or it'll spoil the fun of defeating them.
- Don't give the players the best guns at the beginning, or they'll mow through the monsters too easily.
- Use the MonsterEvent (under Triggers -> SpecialEvent) to display messages for the players, everything has already been pre-configured, just type the message and connect it to a trigger.
- Set the boss monster's bIsBoss to True so the player can get extra points for killing him.
- Objectives
  - Objectives can be used to guide players or provide story details and context for the map play-through.
  - To add an objective, add a MonsterHuntObjective (under Keypoints in the class browser) to your map. Each MonsterHuntObjective represents a single objective, and you can add up to 16 per map.
  - Active objectives are shown on the player's HUD. If an objective has bAlwaysShown, it will be visible even when not active, with an icon matching its complete or incomplete status. If an objective has bShowWhenComplete, it will continue to be shown on the HUD after it's completed, even if not bAlwaysShown.
  - An objective will become active when it's triggered based on its Tag, and triggering it again will make it completed. An objective may have a separate CompletedEvent set, which corresponds to an event which will set this objective as complete. So for example, one event (matching the Tag) will set an objective as active and another event (matching the CompletedEvent) will set the objective as completed.
  - Multiple objectives may be active at once, and similarly it's not required for any objectives to be active at any given time.
  - Sounds may be configured for when the objective becomes active, and when it's completed. These are UI sounds broadcast to players, and not played in-map like a sound effect.

### Monster Arena

- The same rules that apply to Monster Hunt maps apply to Monster Arena maps as well, but there are a few more things to keep in mind:
- Make sure you create a small protected area somewhere in the map that the players can safely spawn in, you can even seal it off by using a door.
- You should provide the players with some guns in the protected area but don't give them too many and make sure the weapons suit the arena and the monster to be killed.
- Place as much health and ammo around the arena as you like.
- Give the players lots of place to move in, and make sure the boss can't get stuck anywhere.
- Place a MonsterArenaEnd trigger in the map (found in the classes browser: Triggers -> Trigger -> MonsterEnd -> MonsterArenaEnd) and set an Event for the boss and set the Tag of the MonsterArenaEnd to correspond with the boss' Event. (IMPORTANT! - Make sure you add the trigger in the centre of the map using the Top View)

## Credits

You can also see the Monster Hunt credits in UT by looking in the Mod menu.

- Programming, graphics, website & help files:
  - Kenneth "Shrimp" Watson
- Maps:
  - Shrimp
  - Ecstaticus (MA-Crimson)
- Playtesters:
  - BikerBob
  - Wipeout
  - DuckMan
  - _Tuke
- Localisation:
  - Neon_Knight (Spanish)
- Special thanks:
  - Valkyrie
  - The UT99.org community for keeping UT alive and exciting
  - Albert Reed (Also worked on the HeadHunters mod)
  - Beppo (lead coder for Infiltration)
  - JohnMcL (lead coder for Warbots)
  - UsAaR33 (creator of OldSkool)
  - Epic MegaGames
  - and everyone at UnrealZA

## Release History

### Release 17 (611)

- Moved logic for several actions into separate "extension" classes:
  - `MonsterHuntScoreExtension`: Allows implementation of custom scoring for monster kills and player deaths
  - `MonsterHuntBotExtension`: Moves all the bot orders and other checks out of game code, and allows custom behaviour
  - `MonsterHuntMonsterExtension`: Allows implementation of custom monster skill settings and behaviours
  - These are all configurable on the MonsterHunt gametypes
- Support for green blood splats in the Monster Mess mutator
- Fix missing Monster Mess splats in multiplayer clients
- Improve visual effects of Defence escape portal
- Reduce occurrences of Enemy AccessNone logs in Defence
- Fix overlapping lives/ping stats on multiplayer scoreboard
- Show monster difficulty on multiplayer scoreboard

### Release 16 (610)

- Updated spanish definitions (thanks Neon_Knight)
- New Mutator - Monster Mess; monster corpses and giblets leave blood splats
- Unreal ammo and pickup messages appear as UT HUD messages rather than in the chat log
- Fix positioning of MH HUD icon when growing or shrinking HUD

### Release 15 (609)

- Properly support `bEnabled` on `MonsterWaypoint`, to allow for more complex AI navigation orchestration
  waypoint can now be disabled at start, and then triggered to enable (default is enabled)
- Adjust bot behaviour to try to clear monsters in an area before proceeding to next waypoint
- Localisation templates and Spanish Localisation (thanks Neon_Knight)
- Update build scripts/templates to support localised template variables
- Optimise `MonsterWaypoint` startup, only do `AllActors` traversal if/when touched and only if events configured
- Add icons on the scoreboard:
  a skull for players with no remaining lives
  a star "award" at the end for players with no deaths for the whole round
- Re-worked and improved MH-Revenge]\[ map, included as MH-Revenge]\[-SE
- Add option to hide objectives on HUD. Can be Set in `User.ini`:
  under `[MonsterHunt.MonsterHUD]` section, set `bHideObjectives=true` (default is false)

### Release 14 (608)

- Re-worked and improved MH-NaliVillage]\[ map, included as MH-NaliVillage][-SE
- Include monster difficulty in scoreboard footer message
- Show objectives on scoreboard
- Reduce volume of objective activated/completed sounds
- Only include unfriendly creatures in monsters remaining count
- Tweak levers/waypoints in MH-NaliVillage]\[ map to prevent double-triggering by AI

### Release 13 (607)

- Introduction of support for optional objectives in maps, which can show up on the HUD, and tell players what they need to be doing
- Cleaned up some chat log kill messaging, and do not show suicide messages as "Player1 killed Player1"
- Polish pass for MH-Lonely][, fixing bad geometry, general cleanup and visual improvements
- Added objectives to all standard MH maps

### Release 12 (606)

- Fix incorrect view offsets for U1 weapons making them seem invisible

### Release 11 (605)

- Remove automatically assigning monsters to team
- Show monster names better, "KrallElite" becomes "Krall Elite"
- Grammatically correct escape message

### Release 10 (604)

- Fix saving of game rule settings
- Refactor scoring implementation, including default scores for more monster types
- Fix upgrade dispersion pistol (thanks SeriousBuggie)
- Fix zoom for old rifle (thanks SeriousBuggie)
- Prevent call endgame if game already ended (thanks SeriousBuggie)
- Fix destroy shadow for bugged monsters (thanks SeriousBuggie)
- Fix break broken team skins like Cow and Nali (thanks SeriousBuggie)
- Refactor Login function to work around bug with triggers in start areas (thanks SeriousBuggie)
- Fix killing friendly Nalis and Cows, and bots waking up Titans (thanks SeriousBuggie)

### Release 9 (603)

- Decoupled monster difficulty from bot skill - difficulty is its own option on the Rules tab
- Add configurable Warmup time to Defence, before monsters start spawning
- Make Defence max escapees configurable in Rules tab
- Monster attitude to player set in difficulty, rather than when the match starts
- Better re-trigger prevention for MonsterEnd (thanks sector2111)
- Removed `MonsterHunt` type-check on `MonsterEnd` triggers, so other gametypes can use them (thanks sector2111)
- Improved and optimised bot waypoint finding to better support missed waypoints and no waypoints (thanks sector2111)
- Moved `MonsterReplicationInfo` setup into `InitGameReplicationInfo()` where it should be
- New higher resolution graphics for settings tabs
- Fix missing localisation for player lives ran out message

### Release 8 (602)

- Fix incorrect `UIWeapon` reference in MonsterBase.CheckReplacement
- Remove NaliRabit from ScriptedPawn checks
- Do not spawn monster shadows on dedicated servers
- Implement better difficulty call using GameInfo.IsRelevant, rather than being called from various other places
- MonsterEnd should only ever trigger once
- Defence: Better application of orders on monsters, yielding better attack behaviour
- Defence: Disable Mercenary invulnerability shield
- Defence: Monsters do not block eachother, so they can navigate across the map better
- Defence: Monsters which don't move from their starting positions can be killed and recycled
- Defence: Optimisations to mid-game monster order coercion
- Defence: Tweaks to several monster spawn probabilities
- Defence: Localise "... escaped!" message

### Release 7 (601)

- Implement new game type: Monster Defence
  - Played on CTF maps, players must prevent attacking monsters from escaping via the portal that has opened in their base
  - Will only work on CTF maps with reasonable pathing
  - Players lose when the maximum number of allowed monsters has escaped, or all lives have been lost
  - Players win by successfully holding off the monster advance until the time limit
- Fix numerous "Accessed None" errors in logs related to various assumptions about `bIsPlayer` and `PlayerReplicationInfo` in UT classes
- Fix bug with RazorJack not being replaced by `OLRazorjack`
- Fix Monster Arena using the wrong GameReplicationInfo class
- Improve updates of remaining monsters counter
- Update HUD info with remaining time, add defence escapees, critical things go red when needed
- Made many strings localised
- Various improvements and optimisations where possible
- Clean up all compiler warnings, remove unused classes
- Reformat code to conform to cleaner style

### Release 6

- Bots can now follow waypoints (if supported by the map) and complete complex objectives and end the level by themselves.
- Bots now fight monsters and monsters fight bots.
- Monster difficulty is influenced by bot difficulty settings, eg. if you set the bot skill to Novice, monsters will be easy to beat, set the bot skill to Godlike and monsters are much harder to beat.
- A life limit can be set, when players (and bots) run out of lives, they are sent into spectator mode. When all players and bots are dead, the game ends.
- Tournament mode can no longer be set, it will always be off in multiplayer games and always on in single player.
- Fixed "You are the winner" announcer message from playing when you actually lost (ran out of time or team has no lives left).
- Team skins are now optional (set when starting a game), no need to use red all the time.
- 5 Points are lost for being killed when there is no life limit, this should help prevent "kamakazi" style gameplay.
- Revised all Hunt maps and fixed a lot of bugs in them.
- Added new map, HM-NaliVillage][.
- Lots of other minor bugs have been fixed up along the way.

### Release 5

- Fixed Unreal weapons not working in multiplayer, also added decals to their projectiles - Thanks to UsAaR for help.
- Added a scoring system so you score points depending on which type of monster you kill. Scores are as follows: Titan, Queen and WarLord = 5 points. Giant GasBag and Giant Manta = 4 points. SkaarjWarrior, MercenaryElete and Brute = 3 points. Krall, Mercenary, SkaarjTrooper, Slith and GasBag = 2 points. Everything else = 1 point. You also loose 5 points for killing innocent creatures and yourself. 10 extra points are awarded for killing a boss.
- Fixed bug where monsters would attack spectators before a round begins.
- Fixed bug where where if no time limit was set, but you finished the level, it would say "Time up, hunt failed!".

### Release 4 (First public release)

- Added maps: MH-Trials, MA-RocketArena and MA-Crimson
- Added death messages when a monster is killed
- Added server browser for Monster Arena
- Server browsers actually work now :-)
- Fixed "Hunt Successful!" message even if time ran out, will now read "Time up, hunt failed!" when time runs out
- Fixed problem where monsters wouldn't work on some people's systems for real this time
- Fixed problems with Monster Arena map lists
- Created 3 new monster classes: LavaTitan, LavaSlith and RockTentacle
- Added the Monster Hunt credits to the Mod menu
- Revised all maps and fixed lots of bugs
- New background images for the Rules, Settings and Bots config screens when starting a game.
- Created the MonsterEvent class, allows messages to be displayed. Can be used to inform players of progress or things that have happned.
- Weapons and ammo respawn faster in Monster Arena
- Monster Hunt now uses it's own .ini file "MonsterHunt.ini" for storing it's information

### Release 3 (Internal)

- Added new game type - Monster Arena!
- Included three Monster Arena maps, MA-Winged, MA-Queens and MA-Revenge.
- Included new Monster Hunt map, MH-Canyon.
- Created icons for MonsterEnd triggers to make it less confusing when making MH and MA maps.
- Fixed "*Player* is now on" message that was displayed when a player joined a game, now reads "*Player* has joined the hunt!"
- Fixed some death messages eg. "Shrimp was slimed. by a Slith". Note the full stop after "was slimed." all those have been fixed.
- Improved bot intelligence, they should now be able to complete the map.
- Added support for Unreal 1 weapons, giving you a potential total of 21 weapons.
- May have fixed bug where the monsters weren't showing up on some people's systems. (experimental)
- Added a small Monster Hunt logo under the health and armour readings on the HUD.
- Changed the difficulty descriptions in the bot config window to suit Monster Hunt.
- Added support for up to 32 players, I don't recommend you use that many though, but the option is there if you want it.
- Added Monster Hunt server browser for finding online games.
- Removed ammo from maps when using the Chainsaw Arena mutator.
- Fixed lots of bugs in MH-Forbidden.
- Created this HTML help file, looks a lot nicer than NotePad don't you think?
- Thought up little slogan, "Don't think, shoot!!" (you may recoginse this from the best PlayStation game ever made, Metal Gear Solid!).

### Release 2 (Internal)

- Fixed lots of tiny bugs
- Added subtle little things you probably won't notice
- Removed 'Deaths' listing from the scoreboard
- Fixed some spelling errors :-)
- Greatly expanded the ReadMe file

### Release 1 (Internal)

- Initial release

## License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Please refer to the LICENSE file for full license text.

You are free to:

- Share - copy and redistribute the material in any medium or format
- Adapt - remix, transform, and build upon the material

Under the following terms:

- Attribution - You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
- NonCommercial - You may not use the material for commercial purposes.
- ShareAlike - If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
- No additional restrictions - You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.