| Home Page | Recent Changes

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:

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

UT2004 :: Actor >> Info >> GameInfo >> DeathMatch >> TeamGame >> xTeamGame >> Invasion (Package: SkaarjPack)

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

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. :D 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.


Category Class (UT2003)

Category Class (UT2004)

Category Mapping

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

FAQs

Help Desk

Mapping Topics

Mapping Lessons

UnrealEd Interface

UnrealScript Topics

UnrealScript Lessons

Making Mods

Class Tree

Modeling Topics

Chongqing Page

Log In