Prepare fixtures

This commit is contained in:
dkanus 2026-07-14 20:27:09 +07:00
commit 9c94356263
6021 changed files with 722805 additions and 22 deletions

View file

@ -0,0 +1,39 @@
Class DamageMessage extends NKillsMessage;
static function string GetString(
optional int Switch,
optional PlayerReplicationInfo RelatedPRI_1,
optional PlayerReplicationInfo RelatedPRI_2,
optional Object OptionalObject
)
{
return GetNameOf(Class<Monster>(OptionalObject))@"-"$Switch@Default.KillString;
}
// Fade color: Green (0-99 damage) > Yellow (100-499 damage) > Red (500-999 damage) > Dark Red (999+ damage).
static function color GetColor(
optional int Switch,
optional PlayerReplicationInfo RelatedPRI_1,
optional PlayerReplicationInfo RelatedPRI_2
)
{
local color C;
C.A = 255;
if( Switch<800 )
{
C.G = Clamp(512-Switch,0,255);
C.R = Clamp((Switch * 2.5f),0,255);
}
else C.R = Clamp(1256-Switch,150,255);
return C;
}
defaultproperties
{
KillString="HP"
MessageShowTime=4.000000
bDamageMessage=True
PosY=0.650000
FontSize=-2
}

View file

@ -0,0 +1,44 @@
//=============================================================================
// KillsRules.
//=============================================================================
class KillsRules extends GameRules;
function PostBeginPlay()
{
NextGameRules = Level.Game.GameRulesModifiers;
Level.Game.GameRulesModifiers = Self;
}
function ScoreKill(Controller Killer, Controller Killed)
{
local Controller C;
if( Class'MutKillMessage'.Default.bMessageKills && Killer.PlayerReplicationInfo!=None
&& Killer.Pawn!=None && Monster(Killer.Pawn)==None && Monster(Killed.Pawn)!=None )
{
if( Class'MutKillMessage'.Default.MessageHealthLimit<=Killed.Pawn.Default.Health ||
Class'MutKillMessage'.Default.MessageMassLimit<=Killed.Pawn.Default.Mass )
{
for( C=Level.ControllerList; C!=None; C=C.nextController )
if( C.bIsPlayer && xPlayer(C)!=None )
xPlayer(C).ReceiveLocalizedMessage(Class'NKillsMessage',1,Killer.PlayerReplicationInfo,,Killed.Pawn.Class);
}
else if( xPlayer(Killer)!=None )
xPlayer(Killer).ReceiveLocalizedMessage(Class'NKillsMessage',,,,Killed.Pawn.Class);
}
Super.ScoreKill(Killer,Killed);
}
function int NetDamage( int OriginalDamage, int Damage, pawn injured, pawn instigatedBy, vector HitLocation, out vector Momentum, class<DamageType> DamageType )
{
if ( NextGameRules != None )
Damage = NextGameRules.NetDamage(OriginalDamage,Damage,injured,instigatedBy,HitLocation,Momentum,DamageType);
if( Class'MutKillMessage'.Default.bMessageDamage && Damage>0 && Monster(injured)!=None && instigatedBy!=None && Monster(instigatedBy)==None
&& xPlayer(instigatedBy.Controller)!=None )
xPlayer(instigatedBy.Controller).ReceiveLocalizedMessage(Class'DamageMessage',Damage,,,injured.Class);
return Damage;
}
defaultproperties
{
}

View file

@ -0,0 +1,47 @@
// Mutator created by Marco.
Class MutKillMessage extends Mutator
Config(MutKillMessage);
var() config int MessageHealthLimit,MessageMassLimit;
var() config bool bMessageDamage,bMessageKills;
function PreBeginPlay()
{
Spawn(Class'KillsRules');
AddToPackageMap();
}
static function FillPlayInfo(PlayInfo PlayInfo)
{
Super.FillPlayInfo(PlayInfo);
PlayInfo.AddSetting(default.RulesGroup, "MessageHealthLimit", "Message HP limit", 0, 1, "Text", "8;0:50000");
PlayInfo.AddSetting(default.RulesGroup, "MessageMassLimit", "Message mass limit", 0, 1, "Text", "8;0:50000");
PlayInfo.AddSetting(default.RulesGroup, "bMessageDamage","Message damage",0,1,"Check");
PlayInfo.AddSetting(default.RulesGroup, "bMessageKills","Message kills",0,1,"Check");
}
static event string GetDescriptionText(string PropName)
{
switch(PropName)
{
case "MessageHealthLimit":
return "Monster health limit of the killed monster to broadcast the kill.";
case "MessageMassLimit":
return "Monster mass limit of the killed monster to broadcast the kill.";
case "bMessageDamage":
return "Show the amount of damage messages on HUD.";
case "bMessageKills":
return "Show the kills messages on HUD.";
}
}
defaultproperties
{
MessageHealthLimit=1000
MessageMassLimit=5000
bMessageDamage=True
bMessageKills=True
GroupName="KF-MessageMut"
FriendlyName="Kill/damage Messages"
Description="Add zombie kill/damage messages on screen."
LifeSpan=0.100000
}

View file

@ -0,0 +1,99 @@
Class NKillsMessage extends LocalMessage;
var localized string KillString,KillsString;
var localized float MessageShowTime;
var bool bDamageMessage;
static final function string GetNameOf( class<Monster> M )
{
if( Len(M.Default.MenuName)==0 )
return string(M.Name);
return M.Default.MenuName;
}
static function string GetString(
optional int Switch,
optional PlayerReplicationInfo RelatedPRI_1,
optional PlayerReplicationInfo RelatedPRI_2,
optional Object OptionalObject
)
{
if( RelatedPRI_1==None )
return "+"$(Switch+1)@GetNameOf(Class<Monster>(OptionalObject))@Eval(Switch==0,Default.KillString,Default.KillsString);
return RelatedPRI_1.PlayerName@"+"$(Switch+1)@GetNameOf(Class<Monster>(OptionalObject))@Eval(Switch==0,Default.KillString,Default.KillsString);
}
static function ClientReceive(
PlayerController P,
optional int Sw,
optional PlayerReplicationInfo RelatedPRI_1,
optional PlayerReplicationInfo RelatedPRI_2,
optional Object OptionalObject
)
{
local HudBase H;
local byte i;
if( Class<Monster>(OptionalObject)==None || HudBase(P.myHud)==None || (!Default.bDamageMessage && RelatedPRI_1==None && Sw==1) )
return;
H = HudBase(P.myHud);
if( HudKillingFloor(H)!=None )
HudKillingFloor(H).bTallySpecimenKills = false;
for( i=0; i<8; ++i )
{
if( H.LocalMessages[i].Message==Default.Class && H.LocalMessages[i].OptionalObject==OptionalObject && H.LocalMessages[i].RelatedPRI==RelatedPRI_1 )
{
if( Default.bDamageMessage )
H.LocalMessages[i].Switch+=Sw;
else ++H.LocalMessages[i].Switch;
H.LocalMessages[i].DrawColor = GetColor(H.LocalMessages[i].Switch);
H.LocalMessages[i].LifeTime = Default.MessageShowTime;
H.LocalMessages[i].EndOfLife = Default.MessageShowTime + P.Level.TimeSeconds;
H.LocalMessages[i].StringMessage = GetString(H.LocalMessages[i].Switch,RelatedPRI_1,,OptionalObject);
return;
}
}
if( !Default.bDamageMessage )
Sw = 0;
if ( H!=None )
H.LocalizedMessage(Default.Class,Sw,RelatedPRI_1,,OptionalObject);
}
static function float GetLifeTime(int Switch)
{
return default.MessageShowTime;
}
// Fade color: Green (0-3 frags) > Yellow (4-7 frags) > Red (8-12 frags) > Dark Red (13+ frags).
static function color GetColor(
optional int Switch,
optional PlayerReplicationInfo RelatedPRI_1,
optional PlayerReplicationInfo RelatedPRI_2
)
{
local color C;
C.A = 255;
if( Switch<10 )
{
C.G = Clamp(500-Switch*50,0,255);
C.R = Clamp(0+Switch*50,0,255);
}
else C.R = Max(505-Switch*25,150);
return C;
}
defaultproperties
{
KillString="kill"
KillsString="kills"
MessageShowTime=5.000000
bIsConsoleMessage=False
bFadeMessage=True
DrawColor=(B=0,G=0,R=150)
DrawPivot=DP_UpperLeft
StackMode=SM_Down
PosX=0.020000
PosY=0.200000
FontSize=-1
}

View file

@ -0,0 +1,10 @@
<html>
<head><title>Index of /kf_sources/MutKillMessage/Classes/</title></head>
<body>
<h1>Index of /kf_sources/MutKillMessage/Classes/</h1><hr><pre><a href="../">../</a>
<a href="DamageMessage.uc">DamageMessage.uc</a> 06-Oct-2019 10:30 939
<a href="KillsRules.uc">KillsRules.uc</a> 06-Oct-2019 10:30 1817
<a href="MutKillMessage.uc">MutKillMessage.uc</a> 06-Oct-2019 10:30 1530
<a href="NKillsMessage.uc">NKillsMessage.uc</a> 06-Oct-2019 10:30 2930
</pre><hr></body>
</html>