This bug was introduced in some 227 patch: function UPak.MarineMatch.PostBeginPlay was overriden without performing some essential initialization implemented in the base class function UnrealShare.DeathMatchGame.PostBeginPlay.
Additionally, there are some problems with determining SpaceMarine's gender.
Suggested resolution:
1. Insert a call to super.BeginPlayPlay() in UPak.MarineMatch.PostBeginPlay:
function PostBeginPlay()
{
super.PostBeginPlay();
if( bTerranWeaponsOnly )
Class'CloakMatch'.Static.TerranWeaponSetup(Self);
}
2. In function UPak.MarineMatch.AddBot:
2.1. define new local variable
local class<Bots> ConfigBotClass;
2.2. Insert
Difficulty = BotConfig.Difficulty;
2.3. Insert
ConfigBotClass = BotConfig.GetBotClass(BotN);
if (ConfigBotClass != none)
NewBot.bIsFemale = ConfigBotClass.default.bIsFemale;
after
NewBot = Spawn( MarineTypes[Rand(ArrayCount(MarineTypes))],,, StartSpot.Location, StartSpot.Rotation );
if ( NewBot == None )
return false;
3. In function UPak.SpaceMarine.PostBeginPlay, replace
if( FRand() < 0.15 )
{
bFemale = true;
drown=Sound'UnrealShare.Female.mdrown2fem';
breathagain=Sound'UnrealShare.Female.hgasp3fem';
HitSound3=Sound'UnrealShare.Female.linjur3fem';
HitSound4=Sound'UnrealShare.Female.hinjur4fem';
Die2=Sound'UnrealShare.Female.death3cfem';
Die3=Sound'UnrealShare.Female.death2afem';
Die4=Sound'UnrealShare.Female.death4cfem';
GaspSound=Sound'UnrealShare.Female.lgasp1fem';
UWHit1=Sound'UnrealShare.Female.FUWHit1';
UWHit2=Sound'UnrealShare.Male.MUWHit2';
LandGrunt=Sound'UnrealShare.Female.lland1fem';
JumpSound=Sound'UnrealShare.Female.jump1fem';
bIsFemale=True;
HitSound1=Sound'UnrealShare.Female.linjur1fem';
HitSound2=Sound'UnrealShare.Female.linjur2fem';
Die=Sound'UnrealShare.Female.death1dfem';
}
with
if( !Level.Game.bDeathMatch && FRand() < 0.15 )
SetFemaleGender();
4. In class UPak.SpaceMarine, add new function:
function SetFemaleGender()
{
drown=Sound'UnrealShare.Female.mdrown2fem';
breathagain=Sound'UnrealShare.Female.hgasp3fem';
HitSound3=Sound'UnrealShare.Female.linjur3fem';
HitSound4=Sound'UnrealShare.Female.hinjur4fem';
Die2=Sound'UnrealShare.Female.death3cfem';
Die3=Sound'UnrealShare.Female.death2afem';
Die4=Sound'UnrealShare.Female.death4cfem';
GaspSound=Sound'UnrealShare.Female.lgasp1fem';
UWHit1=Sound'UnrealShare.Female.FUWHit1';
UWHit2=Sound'UnrealShare.Male.MUWHit2';
LandGrunt=Sound'UnrealShare.Female.lland1fem';
JumpSound=Sound'UnrealShare.Female.jump1fem';
HitSound1=Sound'UnrealShare.Female.linjur1fem';
HitSound2=Sound'UnrealShare.Female.linjur2fem';
Die=Sound'UnrealShare.Female.death1dfem';
bFemale = true;
bIsFemale = true;
if (PlayerReplicationInfo != none)
PlayerReplicationInfo.bIsFemale = true;
}
5. In state UPak.SpaceMarine.StartUp, insert
if (bIsFemale && !bFemale)
SetFemaleGender();
after
myWeapon.PickupSound = myWeapon.Default.PickupSound;
myWeapon.SelectSound = myWeapon.Default.SelectSound;
myWeapon.CockingSound = myWeapon.Default.CockingSound;
6. In function UPak.SpaceMarine.PlayDying, replace
carc = Spawn(class 'FemaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) );
with
if (bFemale)
carc = Spawn(class 'FemaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) );
else
carc = Spawn(class 'MaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) );
UPak/MarineMatch.ucUPak/SpaceMarine.uc