Invasion
Invasion is a team based gametype which comes standard with UT2004 and with UT2003 via bonus packs. This gametype uses Deathmatch maps as its map list.
Description
Alongside the other players, you must hold out as long as possible against the waves of attacking monsters.
Invasion Gameplay
Invasion is a Team Game, but not in the conventional style. Every player is on the same team (red) whose goal is to survive waves of attacking Monsters. You are given a radar map to help you see the locations of your teammates and the Monsters. The game starts with a small delay before Wave 1, so that your are able to obtain weapons. After this period a 10 second countdown beigns, after which hostile Monsters will spawn at Player Starts. You must destroy these Monsters for a given length of time to complete the wave. Then the 10 second countdown will begin for Wave 2. Rinse and Repeat .
If you die during a wave, you are OUT for the remainder of that wave and you will have to scramble for weapons at the beginning of the next wave. If at any stage All players are OUT, the game is over and you have lost the match. If at least one player survives each wave, after a configurable amount of waves (maximum and default 16), you will win the match.
Sounds easy? Not quite, as each wave is harder, introducing greater numbers of more difficult Monsters.
Mods for Invasion
Invasion in its raw form is much less popular than highly modified versions of the Gametype.
Many UT2004 servers operate with one or more of the following modifications:
- Instagib Mutator (Standard UT2004)
- [UT2004RPG] or Invasion RPG
- [Sharp Skins] by the Fraghouse Mod team
- [UTComp]
- Additional Monsters
- Weapon Mods
Also worthy of mention is [Fraghouse Invasion], a complete rework of the invasion gametype by the Fraghouse mod Team. This Mod offers support for vehicles and a complete new set of weapons for your enjoyment.
Invasion Class Details
This package (SkaarjPack.u) contains all classes relevant to the Invasion gametype, the Monsters in it, the weapon Damage Types and Projectiles they utilize, but excludes the GUI classes.
Structs
WaveInfo
struct WaveInfo { var() int WaveMask; // bit fields for which monsterclasses var() byte WaveMaxMonsters; var() byte WaveDuration; var() float WaveDifficulty; };
Properties
Magic Numbers
- INVPROPNUM = 8 (const)
- Used in InvasionPropText and InvasionDescTest.
Main
- WaveInfo Waves[16] (config)
- TODO Add support for structs & arrays to PlayInfo
Hidden
- class<Monster> MonsterClass[16]
- class<Monster> WaveMonsterClass[16]
- class<Monster> LastKilledMonsterClass
- class<Monster> FallbackMonster
- float NextMonsterTime
- float WaveEndTime
- string WaveConfigMenu (config)
- string FallbackMonsterClass
- int InitialWave
- int FinalWave
- string InvasionPropText[INVPROPNUM] (localized)
- string InvasionDescText[INVPROPNUM] (localized)
- int NumMonsters
- int MaxMonsters
- int WaveNum
- int WaveNumClasses
- int WaveMonsters
- int SecondBot
- int WaveCountDown
- bool bWaveInProgress
- string InvasionBotNames[9]
- sound NewRoundSound
- OBSOLETE
- sound InvasionEndSound[6]
- OBSOLETE
- name InvasionEnd[6]
Functions
- PrecacheGameTextures( LevelInfo myLevel ) (static)
- PrecacheGameAnnouncements( AnnouncerVoice? V, bool bRewardSounds ) (static)
- UpdateAnnouncements() (simulated)
- EMPTY OBSOLETE UpdateAnnouncements() - preload all announcer phrases used by this actor
- bool CanSpectate( PlayerController Viewer, bool bOnlySpectator, Actor ViewTarget )
- OverrideInitialBots()
- Sets InitialBots = Min(InitialBots,2).
- bool CheckEndGame( PlayerReplicationInfo Winner, string Reason )
- bool CheckMaxLives( PlayerReplicationInfo Scorer )
- Checks if all other players are out
- ScoreKill( Controller Killer, Controller Other )
- NotifyKilled( Controller Killer, Controller Killed, Pawn KilledPawn )
- RestartPlayer( Controller aPlayer )
- Unless aPlayer.PlayerReplicationInfo.bOutOfLives, calls Super(GameInfo).RestartPlayer(aPlayer).
- UnrealTeamInfo? GetBotTeam( optional int TeamBots )
- Returns Teams[0].
- byte PickTeam( byte num, Controller C )
- Returns 0.
- Bot SpawnBot( optional string botName )
- Spawn and initialize a bot.
- int ReduceDamage( int Damage, Pawn injured, Pawn instigatedBy, vector HitLocation, out vector Momentum, class<DamageType> DamageType )
- Killed( Controller Killer, Controller Killed, Pawn KilledPawn, class<DamageType> damageType )
- AddMonster()
- SetupWave()
- SetupRandomWave()
- PlayEndOfMatchMessage()
- float RatePlayerStart( NavigationPoint N, byte Team, Controller Player )
- Rate whether player/monster should choose this NavigationPoint as its start.
- ReplenishWeapons( Pawn P )
- GetServerDetails( out ServerResponseLine ServerState )
- Adds Server Details, InitialWave and FinalWave for menu configuration.
- FillPlayInfo(PlayInfo PI) (static)
- Sets up the configuration meny for Invasion, including InitialWave, FinalWave and Waves.
Events
- InitGame( string Options, out string Error )
- If no FallbackMonster, sets it to ElireKrall (see Krall). Sets MaxLives = 1. Sets bForceRespawn = true.
- PreBeginPlay()
- Sets WaveNum = InitialWave. Sets InvasionGameReplicationInfo and GameReplicationInfo properties.
- PlayerController Login ( string Portal, string Options, out string Error )
- string GetDisplayText( string PropName ) (static)
- Display label text for configuration menu.
- string GetDescriptionText(string PropName) (static)
- Display description text for configuration menu.
- bool AcceptPlayInfoProperty(string PropertyName) (static)
States
MatchInProgress
Functions
- Timer()
- While bWaveInProgress, handles Monster spawning. Else, performs countdown and next wave setup.
- BeginState()
- Sets WaveNum = InitialWave and InvasionGameReplicationInfo(GameReplicationInfo).WaveNumber = WaveNum.
Related Topics
- Monster – Parent class for all Monsters in UT200x
- MonsterController – Controller class for Monsters
- Monster Support – Add Monsters to other gametypes
- Topics on Mapping
- Gametype
Discussion
Nick89: 10 pages requesting! Not anymore I thought i might help out Still very much a work in progress, feel free to rewrite everything
SuperApe: Thanks. You da man. Yeah, I've probably been the one "requesting" this page in regards to Monsters, etc. We really should have more Gametype pages for DM map games, but LastManStanding is actually a class name for the old UT GameInfo version. Not sure what to do about that one.
Nick89: Nice edits Just a question, do you use some sort of program to parse these files and to create the API's that you put here? Or do you do it manually?
SuperApe: Manually. I even do HTML manually. But, I know I've seen mention of some kind of Wikifier somewhere around here. (Class Wikifier) After a while, you just get to know the pages that need linking to, what words need [['s and such.