rott/kf_sources/KFMod/Classes/KFDeathMessage.uc
2026-07-14 20:27:09 +07:00

118 lines
3.9 KiB
Ucode

//
// A Death Message.
//
// Switch 0: Kill
// RelatedPRI_1 is the Killer.
// RelatedPRI_2 is the Victim.
// OptionalObject is the DamageType Class.
//
class KFDeathMessage extends xDeathMessage
config(user);
static function color GetConsoleColor( PlayerReplicationInfo RelatedPRI_1 )
{
return class'HUD'.Default.GreenColor;
}
static function string GetString(
optional int Switch,
optional PlayerReplicationInfo RelatedPRI_1,
optional PlayerReplicationInfo RelatedPRI_2,
optional Object OptionalObject
)
{
local string KillerName, VictimName;
if (Class<DamageType>(OptionalObject) == None)
return "";
if (RelatedPRI_2 == None)
VictimName = Default.SomeoneString;
else
VictimName = RelatedPRI_2.PlayerName;
if ( Switch == 1 )
{
// suicide
return class'GameInfo'.Static.ParseKillMessage(
KillerName,
VictimName,
Class<DamageType>(OptionalObject).Static.SuicideMessage(RelatedPRI_2) );
}
if (RelatedPRI_1 == None)
KillerName = Default.SomeoneString;
else
KillerName = RelatedPRI_1.PlayerName;
return class'GameInfo'.Static.ParseKillMessage(
KillerName,
VictimName,
Class<DamageType>(OptionalObject).Static.DeathMessage(RelatedPRI_1, RelatedPRI_2) );
}
static function ClientReceive(
PlayerController P,
optional int Switch,
optional PlayerReplicationInfo RelatedPRI_1,
optional PlayerReplicationInfo RelatedPRI_2,
optional Object OptionalObject
)
{
if ( Switch == 1 )
{
if ( !Default.bNoConsoleDeathMessages )
Super.ClientReceive(P, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject);
return;
}
if ( (RelatedPRI_1 == P.PlayerReplicationInfo)
|| (P.PlayerReplicationInfo.bOnlySpectator && (Pawn(P.ViewTarget) != None) && (Pawn(P.ViewTarget).PlayerReplicationInfo == RelatedPRI_1)) )
{
// Interdict and send the child message instead.
P.myHUD.LocalizedMessage( Default.ChildMessage, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject );
if ( !Default.bNoConsoleDeathMessages )
P.myHUD.LocalizedMessage( Default.Class, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject );
// check multikills
// if ( P.Role == ROLE_Authority )
// {
// multikills checked already in LogMultiKills()
// if ( UnrealPlayer(P).MultiKillLevel > 0 )
// P.ReceiveLocalizedMessage( class'MultiKillMessage', UnrealPlayer(P).MultiKillLevel );
// }
// else
// {
// if ( ( RelatedPRI_1 != RelatedPRI_2 ) && ( RelatedPRI_2 != None)
// && ((RelatedPRI_2.Team == None) || (RelatedPRI_1.Team != RelatedPRI_2.Team)) )
// {
// if ( (P.Level.TimeSeconds - UnrealPlayer(P).LastKillTime < 4) && (Switch != 1) )
// {
// UnrealPlayer(P).MultiKillLevel++;
// P.ReceiveLocalizedMessage( class'MultiKillMessage', xPlayer(P).MultiKillLevel );
// }
// else
// UnrealPlayer(P).MultiKillLevel = 0;
// UnrealPlayer(P).LastKillTime = P.Level.TimeSeconds;
// }
// else
// UnrealPlayer(P).MultiKillLevel = 0;
// }
// }
if (RelatedPRI_2 == P.PlayerReplicationInfo)
{
P.ReceiveLocalizedMessage( class'xVictimMessage', 0, RelatedPRI_1 );
if ( !Default.bNoConsoleDeathMessages )
Super.ClientReceive(P, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject);
}
else if ( !Default.bNoConsoleDeathMessages )
Super.ClientReceive(P, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject);
}
}
defaultproperties
{
KilledString="was slaughtered by"
DrawColor=(R=255,G=50,B=50,A=255)
}