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

40 lines
1.2 KiB
Ucode

class KFExplosivesFixRule extends GameRules;
function int NetDamage( int OriginalDamage, int Damage, pawn injured, pawn instigatedBy, vector HitLocation, out vector Momentum, class<DamageType> DamageType )
{
local TeamGame TG;
TG = TeamGame(Level.Game);
if ( KFPawn(injured) != None && TG != None && Damage > 0 )
{
if ( (KFPawn(instigatedBy) != None || FakePlayerPawn(instigatedBy) != None ) && (instigatedBy.PlayerReplicationInfo == None || instigatedBy.PlayerReplicationInfo.bOnlySpectator) )
{
Momentum = vect(0,0,0);
if ( NoFF(injured, TG.FriendlyFireScale) )
return 0;
else if ( OriginalDamage == Damage )
return Damage*TG.FriendlyFireScale;
}
else if ( instigatedBy == None && !DamageType.default.bCausedByWorld )
{
Momentum = vect(0,0,0);
if ( NoFF(injured, TG.FriendlyFireScale) )
return 0;
else if ( OriginalDamage == Damage )
return Damage*TG.FriendlyFireScale;
}
}
return Super.NetDamage( OriginalDamage, Damage, injured, instigatedBy, HitLocation, Momentum,DamageType );
}
function bool NoFF( Pawn injured, float FF )
{
return (FF == 0.0 || (Vehicle(injured) != None && Vehicle(injured).bNoFriendlyFire));
}
defaultproperties
{
}