| Home Page | Recent Changes | Preferences

# Defining SpeciesTypes

This page describes how to use the Object >> SpeciesType class to implement different species with different characteristics in UT2003.

These characteristics can be e.g.:

- the ground speed of a pawn
- the jump height of a pawn
- the acceleration when running
- change the damage done to a pawn (like a species having an armoured skin)
- change the damage that this pawn does to others (like a species having a nasty punch)

First, lets start with an overview of the classes that contribute to the species-system (they are explained in more detail later):

SpeciesType
  This class and it's subclasses define the species and their individual characteristics. UT2003 e.g. comes with several build-in species like `SPECIES_Alien`, `SPECIES_Bot`, `SPECIES_Human` (where the humans have some sub-species, namely `SPECIES_Egypt`, `SPECIES_Merc` and `SPECIES_Night`) and `SPECIES_Jugg` You can easily expand these to form your own species with their own characteristics.
xPawn
  xPawn has the member `Species` of type SpeciesType to define the Species that this xPawn is of.
MutSpeciesStats
  Is a mutator that activates the species-system ingame.
SpeciesGameRules
  Are species-specific game rules activated by the MutSpeciesStats.
.upl files
  define player-models, including their assigned species.

These classes (resp.files) are explained in more detail now.

#### xPawn

- has the member `Species` of type `SpeciesType` that defines its Species. This member's default property is set in the defaultproperties.

    defaultproperties
    {
      ...
      Species=class'SPECIES_Jugg'
      ...
    }

It's real value is determined at runtime in the function `xPawn?.Setup` that uses the class `xUtil` to find the player record that is defined for a character name:

    rec = class'xUtil'.static.FindPlayerRecord("Gorge");

This function is native, that is, it is implemented in the C/C++ core and its sourcecode is not accessible, but I assume it just searches all .upl files and returns the player record who's DefaultName matches the given character name.

#### .upl

The .upl files define the characters, i.e. how they look (Mesh, Skin), what portrait they have in the player selection menu, their favorite weapon (in case its a bot) and of course their species type. I guess since you can set the sex of an character in the .upl file that this also defines the voice of that character. .upl files are located in the UT2003/System directory and look like this:

    [Public]
    Player=(DefaultName="Diva",Mesh=HumanFemaleA.EgyptFemaleA,species=xGame.SPECIES_Egypt,BodySkin=PlayerSkins.EgyptFemaleABodyA,FaceSkin=PlayerSkins.EgyptFemaleAHeadA,Portrait=PlayerPictures.cEgyptFemaleAA,Text=XPlayers.EgyptFemaleAA,Sex=Female,Menu="SP",Aggressiveness=+0.4,CombatStyle=+0.4,FavoriteWeapon=xWeapons.RocketLauncher,bJumpy=1,StrafingAbility=+0.5)
    Player=(DefaultName="Scarab",Mesh=HumanMaleA.EgyptMaleA,species=xGame.SPECIES_Egypt,BodySkin=PlayerSkins.EgyptMaleABodyA,FaceSkin=PlayerSkins.EgyptMaleAHeadA,Portrait=PlayerPictures.cEgyptMaleAA,Text=XPlayers.EgyptMaleAA,Sex=Male,Menu="SP",Tactics=1.0,FavoriteWeapon=xWeapons.LinkGun,CombatStyle=-0.1,StrafingAbility=+0.4,Accuracy=-0.4)
    ...

#### MutSpeciesStat

- activates the `SpeciesGameRules` to use the species-specific damage system.
- modifies xPawns to species-specific attributes like GroundSpeed, WaterSpeed, Jump-Height etc. in `ModifyPawn`.

You should use this Mutator if you want the species-system to be activated.

#### SpeciesGameRules

- modifies damage done to an xPawn, depending on the species of that pawn (`SpeciesGameRules.ModifyReceivedDamage`)
- modifies damage done to an xPawn, depending on the species of the instigator (`SpeciesGameRules.ModifyImpartedDamage`)

You could create your own species game rules that extend these game rules and define more sophisticated species-related stuff.

#### SpeciesType

see SpeciesType

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

Mapping Topics

Mapping Lessons

UnrealEd Interface

Questions&Answers

Scripting Topics

Scripting Lessons

Making Mods

Class Tree

Questions&Answers

Modeling Topics

Questions&Answers

Log In