Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Classes/ClientSettings.uc
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ var config float KillFeedX;
var config float KillFeedY;
var config float KillFeedSpeed;
var config float KillFeedScale;
var config float DamageNumberTextLocationX;
var config float DamageNumberTextLocationY;

enum EFraggerScopeChoice {
FSC_None,
Expand Down Expand Up @@ -393,6 +395,8 @@ simulated function string DumpSettings() {
GetSetting("KillFeedY")$
GetSetting("KillFeedSpeed")$
GetSetting("KillFeedScale")$
GetSetting("DamageNumberTextLocationX")$
GetSetting("DamageNumberTextLocationY")$
GetSetting("FraggerScopeChoice")$
GetSetting("bEnableNetStats")$
GetSetting("bNetStatsUnconfirmedTime")$
Expand Down Expand Up @@ -493,6 +497,8 @@ defaultproperties
KillFeedY=0.5
KillFeedSpeed=1.0
KillFeedScale=1.0
DamageNumberTextLocationX=-1.0
DamageNumberTextLocationY=-1.0
FraggerScopeChoice=FSC_Moveable
bEnableNetStats=False
bNetStatsUnconfirmedTime=True
Expand Down
20 changes: 16 additions & 4 deletions Classes/IGPlus_HitFeedback.uc
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ function ModifyPlayer(Pawn P) {
CreateTracker(P);
}

function bool CheckVisibility(Pawn Orig, Pawn Dest) {
function bool DoVisibilityTrace(Pawn Orig, Pawn Dest) {
local vector Start;
local rotator DirYaw;
local vector X,Y,Z;
Expand All @@ -56,9 +56,6 @@ function bool CheckVisibility(Pawn Orig, Pawn Dest) {
local vector HitLocation;
local vector HitNormal;

if (bCheckVisibility == false)
return true;

Start = Orig.Location + vect(0,0,1)*Orig.BaseEyeHeight;
DirYaw = rotator(Dest.Location - Start);
DirYaw.Pitch = 0;
Expand All @@ -85,6 +82,13 @@ function bool CheckVisibility(Pawn Orig, Pawn Dest) {
return false;
}

function bool CheckVisibility(Pawn Orig, Pawn Dest) {
if (bCheckVisibility == false)
return true;

return DoVisibilityTrace(Orig, Dest);
}

function MutatorTakeDamage(
out int ActualDamage,
Pawn Victim,
Expand All @@ -105,6 +109,14 @@ function MutatorTakeDamage(
if (Tracker != none)
TotalDamage = Tracker.LastDamage;

// When HFM_Always, do a separate trace for gameplay damage-number suppression.
// Negate TotalDamage to signal the client to suppress damage numbers.
// Hit sounds and markers are unaffected (they use Abs(Sw)).
if (!bCheckVisibility && TotalDamage > 0) {
if (!DoVisibilityTrace(InstigatedBy, Victim))
TotalDamage = -TotalDamage;
}

InstigatedBy.ReceiveLocalizedMessage(
Class'IGPlus_HitFeedbackMessage',
TotalDamage,
Expand Down
4 changes: 2 additions & 2 deletions Classes/IGPlus_HitFeedbackMessage.uc
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ static function ClientReceive(
if (bViewTarget || Settings == none || Settings.HitMarkerSource == HMSRC_Server)
class'bbPlayerStatics'.static.PlayHitMarker(P, Settings, Abs(Sw), RelatedPRI_2.Team, RelatedPRI_1.Team);


if (bbP != none && bbP.bEnableDamageDebugMode)
// Negative Sw suppresses gameplay damage numbers while preserving damage magnitude via Abs(Sw). Allows debug mode to show all damage while suppressing non LOS damage for clients.
if (bbP != none && (bbP.bEnableDamageDebugMode || (bbP.bShowDamageNumbers && Sw >= 0)))
class'bbPlayerStatics'.static.PlayDamageMarker(P, Abs(Sw), RelatedPRI_2.Team, RelatedPRI_1.Team);

if (bViewTarget || Settings == none || Settings.HitSoundSource == HSSRC_Server)
Expand Down
49 changes: 49 additions & 0 deletions Classes/IGPlus_ServerSettingsContent.uc
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,9 @@ var localized string HitFeedbackModeDisabled;
var localized string HitFeedbackModeVisibleOnly;
var localized string HitFeedbackModeAlways;
var localized string bEnablePingCompensatedSpawnHelp;
var UWindowCheckbox Chk_bShowDamageNumbers;
var localized string bShowDamageNumbersText;
var localized string bShowDamageNumbersHelp;

var UWindowLabelControl Lbl_Movement;
var localized string MovementText;
Expand Down Expand Up @@ -187,6 +190,18 @@ var localized string bEnableDamageDebugConsoleMessagesHelp;
var UWindowCheckbox Chk_bEnableHitboxDebugMode;
var localized string bEnableHitboxDebugModeText;
var localized string bEnableHitboxDebugModeHelp;
var IGPlus_EditControl Edit_DamageNumberDuration;
var localized string DamageNumberDurationText;
var localized string DamageNumberDurationHelp;
var IGPlus_EditControl Edit_DamageNumberDecayExponent;
var localized string DamageNumberDecayExponentText;
var localized string DamageNumberDecayExponentHelp;
var IGPlus_EditControl Edit_DamageNumberAccumulationTime;
var localized string DamageNumberAccumulationTimeText;
var localized string DamageNumberAccumulationTimeHelp;
var IGPlus_EditControl Edit_DamageNumberDrawOffset;
var localized string DamageNumberDrawOffsetText;
var localized string DamageNumberDrawOffsetHelp;

var float PaddingX;
var float PaddingY;
Expand Down Expand Up @@ -545,6 +560,7 @@ function SaveServerSettings() {
SaveServerSettingIfChanged(S, "bAlwaysRenderFlagCarrier", BoolToString(Chk_bAlwaysRenderFlagCarrier.bChecked));
SaveServerSettingIfChanged(S, "bAlwaysRenderDroppedFlags", BoolToString(Chk_bAlwaysRenderDroppedFlags.bChecked));
SaveServerSettingIfChanged(S, "HitFeedbackMode", HitFeedbackModeIndexToValue(Cmb_HitFeedbackMode.GetSelectedIndex()));
SaveServerSettingIfChanged(S, "bShowDamageNumbers", BoolToString(Chk_bShowDamageNumbers.bChecked));
SaveServerSettingIfChanged(S, "bEnablePingCompensatedSpawn", BoolToString(Chk_bEnablePingCompensatedSpawn.bChecked));

SaveServerSettingIfChanged(S, "bJumpingPreservesMomentum", BoolToString(Chk_bJumpingPreservesMomentum.bChecked));
Expand Down Expand Up @@ -579,6 +595,10 @@ function SaveServerSettings() {
SaveServerSettingIfChanged(S, "bEnableDamageDebugMode", BoolToString(Chk_bEnableDamageDebugMode.bChecked));
SaveServerSettingIfChanged(S, "bEnableDamageDebugConsoleMessages", BoolToString(Chk_bEnableDamageDebugConsoleMessages.bChecked));
SaveServerSettingIfChanged(S, "bEnableHitboxDebugMode", BoolToString(Chk_bEnableHitboxDebugMode.bChecked));
SaveServerSettingIfChanged(S, "DamageNumberDuration", Edit_DamageNumberDuration.GetValue());
SaveServerSettingIfChanged(S, "DamageNumberDecayExponent", Edit_DamageNumberDecayExponent.GetValue());
SaveServerSettingIfChanged(S, "DamageNumberAccumulationTime", Edit_DamageNumberAccumulationTime.GetValue());
SaveServerSettingIfChanged(S, "DamageNumberDrawOffset", Edit_DamageNumberDrawOffset.GetValue());
}

function AdminLoginFromUI() {
Expand Down Expand Up @@ -888,6 +908,10 @@ function ConfigureResponsiveServerControls(Canvas C, float ControlWidth) {
ConfigureFixedWidthEdit(Edit_LooseCheckCorrectionFactor, C, ControlWidth, 80);
ConfigureFixedWidthEdit(Edit_LooseCheckCorrectionFactorOnMover, C, ControlWidth, 80);
ConfigureFixedWidthEdit(Edit_WarpFixDelay, C, ControlWidth, 80);
ConfigureFixedWidthEdit(Edit_DamageNumberDuration, C, ControlWidth, 80);
ConfigureFixedWidthEdit(Edit_DamageNumberDecayExponent, C, ControlWidth, 80);
ConfigureFixedWidthEdit(Edit_DamageNumberAccumulationTime, C, ControlWidth, 80);
ConfigureFixedWidthEdit(Edit_DamageNumberDrawOffset, C, ControlWidth, 80);
}

function LoadServerSettings() {
Expand All @@ -911,6 +935,7 @@ function LoadServerSettings() {
Chk_bAlwaysRenderFlagCarrier.bChecked = S.bAlwaysRenderFlagCarrier;
Chk_bAlwaysRenderDroppedFlags.bChecked = S.bAlwaysRenderDroppedFlags;
Cmb_HitFeedbackMode.SetSelectedIndex(Clamp(int(S.HitFeedbackMode), 0, 2));
Chk_bShowDamageNumbers.bChecked = S.bShowDamageNumbers;

Chk_bJumpingPreservesMomentum.bChecked = S.bJumpingPreservesMomentum;
Chk_bOldLandingMomentum.bChecked = S.bOldLandingMomentum;
Expand Down Expand Up @@ -945,6 +970,10 @@ function LoadServerSettings() {
Chk_bEnableDamageDebugMode.bChecked = S.bEnableDamageDebugMode;
Chk_bEnableDamageDebugConsoleMessages.bChecked = S.bEnableDamageDebugConsoleMessages;
Chk_bEnableHitboxDebugMode.bChecked = S.bEnableHitboxDebugMode;
Edit_DamageNumberDuration.SetValue(string(S.DamageNumberDuration));
Edit_DamageNumberDecayExponent.SetValue(string(S.DamageNumberDecayExponent));
Edit_DamageNumberAccumulationTime.SetValue(string(S.DamageNumberAccumulationTime));
Edit_DamageNumberDrawOffset.SetValue(string(S.DamageNumberDrawOffset));

bLoadSucceeded = true;
}
Expand Down Expand Up @@ -996,6 +1025,7 @@ function Created() {
Cmb_HitFeedbackMode.AddItem(HitFeedbackModeDisabled);
Cmb_HitFeedbackMode.AddItem(HitFeedbackModeVisibleOnly);
Cmb_HitFeedbackMode.AddItem(HitFeedbackModeAlways);
Chk_bShowDamageNumbers = CreateCheckbox(bShowDamageNumbersText, bShowDamageNumbersHelp);
Chk_bEnablePingCompensatedSpawn = CreateCheckbox(bEnablePingCompensatedSpawnText, bEnablePingCompensatedSpawnHelp);

Lbl_Movement = CreateSeparator(MovementText);
Expand Down Expand Up @@ -1033,6 +1063,10 @@ function Created() {
Chk_bEnableDamageDebugMode = CreateCheckbox(bEnableDamageDebugModeText, bEnableDamageDebugModeHelp);
Chk_bEnableDamageDebugConsoleMessages = CreateCheckbox(bEnableDamageDebugConsoleMessagesText, bEnableDamageDebugConsoleMessagesHelp);
Chk_bEnableHitboxDebugMode = CreateCheckbox(bEnableHitboxDebugModeText, bEnableHitboxDebugModeHelp);
Edit_DamageNumberDuration = CreateEdit(ECT_Real, DamageNumberDurationText, DamageNumberDurationHelp, 16, 80);
Edit_DamageNumberDecayExponent = CreateEdit(ECT_Real, DamageNumberDecayExponentText, DamageNumberDecayExponentHelp, 16, 80);
Edit_DamageNumberAccumulationTime = CreateEdit(ECT_Real, DamageNumberAccumulationTimeText, DamageNumberAccumulationTimeHelp, 16, 80);
Edit_DamageNumberDrawOffset = CreateEdit(ECT_Real, DamageNumberDrawOffsetText, DamageNumberDrawOffsetHelp, 16, 80);

ControlOffset += PaddingY - 4;

Expand Down Expand Up @@ -1104,6 +1138,7 @@ function BeforePaint(Canvas C, float X, float Y) {
LayoutControl(Chk_bAlwaysRenderFlagCarrier, bShowSettings, WndWidth, Top);
LayoutControl(Chk_bAlwaysRenderDroppedFlags, bShowSettings, WndWidth, Top);
LayoutControl(Cmb_HitFeedbackMode, bShowSettings, WndWidth, Top);
LayoutControl(Chk_bShowDamageNumbers, bShowSettings, WndWidth, Top);
LayoutControl(Chk_bEnablePingCompensatedSpawn, bShowSettings, WndWidth, Top);

LayoutControl(Lbl_Movement, bShowSettings, WndWidth, Top);
Expand Down Expand Up @@ -1141,6 +1176,10 @@ function BeforePaint(Canvas C, float X, float Y) {
LayoutControl(Chk_bEnableDamageDebugMode, bShowSettings, WndWidth, Top);
LayoutControl(Chk_bEnableDamageDebugConsoleMessages, bShowSettings, WndWidth, Top);
LayoutControl(Chk_bEnableHitboxDebugMode, bShowSettings, WndWidth, Top);
LayoutControl(Edit_DamageNumberDuration, bShowSettings, WndWidth, Top);
LayoutControl(Edit_DamageNumberDecayExponent, bShowSettings, WndWidth, Top);
LayoutControl(Edit_DamageNumberAccumulationTime, bShowSettings, WndWidth, Top);
LayoutControl(Edit_DamageNumberDrawOffset, bShowSettings, WndWidth, Top);

DesiredHeight = Top + PaddingY;
}
Expand Down Expand Up @@ -1262,6 +1301,8 @@ defaultproperties
HitFeedbackModeDisabled="Disabled"
HitFeedbackModeVisibleOnly="Visible Only"
HitFeedbackModeAlways="Always"
bShowDamageNumbersText="Show Damage Numbers"
bShowDamageNumbersHelp="If checked, damage dealt is displayed as a number on screen for all players. Obeys LOS Checks."
bEnablePingCompensatedSpawnHelp="If checked, enables ping-compensated spawn behavior"

MovementText="Movement"
Expand Down Expand Up @@ -1330,6 +1371,14 @@ defaultproperties
bEnableDamageDebugConsoleMessagesHelp="If checked, prints damage debug messages to client consoles"
bEnableHitboxDebugModeText="Enable Hitbox Debug Mode"
bEnableHitboxDebugModeHelp="If checked, enables hitbox debug diagnostics"
DamageNumberDurationText="Damage Number Duration"
DamageNumberDurationHelp="How long damage numbers stay visible in seconds"
DamageNumberDecayExponentText="Damage Number Decay Exponent"
DamageNumberDecayExponentHelp="Fade curve exponent applied to damage number alpha"
DamageNumberAccumulationTimeText="Damage Number Accumulation Time"
DamageNumberAccumulationTimeHelp="Time window in seconds to accumulate multiple hits"
DamageNumberDrawOffsetText="Damage Number Default Position"
DamageNumberDrawOffsetHelp="Default horizontal offset from center where damage numbers appear. Overridden by each client's own damage number position setting."

PaddingX=20
PaddingY=12
Expand Down
21 changes: 21 additions & 0 deletions Classes/IGPlus_SettingsContent.uc
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,14 @@ var localized string MoreInformationText;
var localized string KillFeedLocationText;
var localized string KillFeedLocationHelp;

// Damage Numbers
var UWindowLabelControl Lbl_DamageNumbers;
var localized string DamageNumbersLblText;

var IGPlus_ScreenLocationControl SLoc_DamageNumberTextLocation;
var localized string DamageNumberTextLocationText;
var localized string DamageNumberTextLocationHelp;

// Hit Marker
var UWindowLabelControl Lbl_HitMarker;
var localized string HitMarkerLblText;
Expand Down Expand Up @@ -963,6 +971,9 @@ function Created() {
Edit_KillFeedScale = CreateEdit(ECT_Real, KillFeedScaleText, KillFeedScaleHelp, , 64);
SLoc_KillFeedLocation = CreateScreenLocation(100, KillFeedLocationText, KillFeedLocationHelp);

Lbl_DamageNumbers = CreateSeparator(DamageNumbersLblText);
SLoc_DamageNumberTextLocation = CreateScreenLocation(100, DamageNumberTextLocationText, DamageNumberTextLocationHelp);

Lbl_HitMarker = CreateSeparator(HitMarkerLblText);
Cmb_HitMarkerSource = CreateComboBox(HitMarkerSourceText, HitMarkerSourceHelp, false, 150);
SetUpHitSourceComboBox(Cmb_HitMarkerSource);
Expand Down Expand Up @@ -1114,6 +1125,10 @@ function Load() {
Edit_KillFeedSpeed.SetValue(string(Settings.KillFeedSpeed));
Edit_KillFeedScale.SetValue(string(Settings.KillFeedScale));
SLoc_KillFeedLocation.SetLocation(Settings.KillFeedX, Settings.KillFeedY);
if (Settings.DamageNumberTextLocationX >= 0.0 && Settings.DamageNumberTextLocationY >= 0.0)
SLoc_DamageNumberTextLocation.SetLocation(Settings.DamageNumberTextLocationX, Settings.DamageNumberTextLocationY);
else
SLoc_DamageNumberTextLocation.SetLocation(0.65, 0.5);

Cmb_HitMarkerSource.SetSelectedIndex(Clamp(Settings.HitMarkerSource, 0, 1));
Cmb_HitMarkerColorMode.SetSelectedIndex(Clamp(Settings.HitMarkerColorMode, 0, 1));
Expand Down Expand Up @@ -1235,6 +1250,7 @@ function Save() {
Settings.KillFeedSpeed = float(Edit_KillFeedSpeed.GetValue());
Settings.KillFeedScale = float(Edit_KillFeedScale.GetValue());
SLoc_KillFeedLocation.GetLocation(Settings.KillFeedX, Settings.KillFeedY);
SLoc_DamageNumberTextLocation.GetLocation(Settings.DamageNumberTextLocationX, Settings.DamageNumberTextLocationY);

Settings.HitMarkerSource = Settings.IntToHitMarkerSource(Cmb_HitMarkerSource.GetSelectedIndex());
Settings.HitMarkerColorMode = Settings.IntToHitMarkerColorMode(Cmb_HitMarkerColorMode.GetSelectedIndex());
Expand Down Expand Up @@ -1548,6 +1564,11 @@ defaultproperties
KillFeedLocationText="Location"
KillFeedLocationHelp="Where on screen to show the kill feed"

DamageNumbersLblText="Damage Numbers"

DamageNumberTextLocationText="Location"
DamageNumberTextLocationHelp="Where on screen to show damage numbers"

HitMarkerLblText="Hit Marker"

HitMarkerSourceText="Hit Source"
Expand Down
17 changes: 16 additions & 1 deletion Classes/ServerSettings.uc
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,14 @@ var config float SnapshotInterpRewindMs;
var config bool bEnableWarpFix;
var config bool bEnableCarcassCollision;
var config bool ShowTouchedPackage;
var config bool bShowDamageNumbers;
var config bool bEnableDamageDebugMode;
var config bool bEnableDamageDebugConsoleMessages;
var config bool bEnableHitboxDebugMode;
var config float DamageNumberDuration;
var config float DamageNumberDecayExponent;
var config float DamageNumberAccumulationTime;
var config float DamageNumberDrawOffset;

enum EHitFeedbackMode {
HFM_Disabled,
Expand Down Expand Up @@ -154,9 +159,14 @@ function DumpServerSettings(PlayerPawn P) {
DumpSetting(P, "bEnableWarpFix");
DumpSetting(P, "ShowTouchedPackage");
DumpSetting(P, "HitFeedbackMode");
DumpSetting(P, "bShowDamageNumbers");
DumpSetting(P, "bEnableDamageDebugMode");
DumpSetting(P, "bEnableDamageDebugConsoleMessages");
DumpSetting(P, "bEnableHitboxDebugMode");
DumpSetting(P, "bEnableHitboxDebugMode");
DumpSetting(P, "DamageNumberDuration");
DumpSetting(P, "DamageNumberDecayExponent");
DumpSetting(P, "DamageNumberAccumulationTime");
DumpSetting(P, "DamageNumberDrawOffset");
}

defaultproperties
Expand Down Expand Up @@ -228,7 +238,12 @@ defaultproperties
bEnableWarpFix=True
bEnableCarcassCollision=True
HitFeedbackMode=HFM_Always
bShowDamageNumbers=False
bEnableDamageDebugMode=False
bEnableDamageDebugConsoleMessages=False
bEnableHitboxDebugMode=False
DamageNumberDuration=2.0
DamageNumberDecayExponent=5.0
DamageNumberAccumulationTime=0.4
DamageNumberDrawOffset=96.0
}
10 changes: 10 additions & 0 deletions Classes/UTPure.uc
Original file line number Diff line number Diff line change
Expand Up @@ -1027,9 +1027,14 @@ function string IGPlus_NormalizeServerSettingKey(string Key) {
if (Key ~= "bEnableWarpFix") return "bEnableWarpFix";
if (Key ~= "ShowTouchedPackage") return "ShowTouchedPackage";
if (Key ~= "HitFeedbackMode") return "HitFeedbackMode";
if (Key ~= "bShowDamageNumbers") return "bShowDamageNumbers";
if (Key ~= "bEnableDamageDebugMode") return "bEnableDamageDebugMode";
if (Key ~= "bEnableDamageDebugConsoleMessages") return "bEnableDamageDebugConsoleMessages";
if (Key ~= "bEnableHitboxDebugMode") return "bEnableHitboxDebugMode";
if (Key ~= "DamageNumberDuration") return "DamageNumberDuration";
if (Key ~= "DamageNumberDecayExponent") return "DamageNumberDecayExponent";
if (Key ~= "DamageNumberAccumulationTime") return "DamageNumberAccumulationTime";
if (Key ~= "DamageNumberDrawOffset") return "DamageNumberDrawOffset";
return "";
}

Expand Down Expand Up @@ -1066,8 +1071,13 @@ function IGPlus_ApplyServerSettingsToPlayers() {
BP.IGPlus_SnapInterp_ServerNextTime = 0;
BP.IGPlus_SnapInterp_ServerHasLast = false;
}
BP.bShowDamageNumbers = Settings.bShowDamageNumbers;
BP.bEnableDamageDebugMode = Settings.bEnableDamageDebugMode;
BP.bEnableDamageDebugConsoleMessages = Settings.bEnableDamageDebugConsoleMessages;
BP.DamageNumberDuration = Settings.DamageNumberDuration;
BP.DamageNumberDecayExponent = Settings.DamageNumberDecayExponent;
BP.DamageNumberAccumulationTime = Settings.DamageNumberAccumulationTime;
BP.DamageNumberDrawOffset = Settings.DamageNumberDrawOffset;
}
}

Expand Down
5 changes: 5 additions & 0 deletions Classes/bbCHSpectator.uc
Original file line number Diff line number Diff line change
Expand Up @@ -1072,9 +1072,14 @@ function IGPlus_ServerRequestSettings() {

IGPlus_ServerSendSetting("ShowTouchedPackage");
IGPlus_ServerSendSetting("HitFeedbackMode");
IGPlus_ServerSendSetting("bShowDamageNumbers");
IGPlus_ServerSendSetting("bEnableDamageDebugMode");
IGPlus_ServerSendSetting("bEnableDamageDebugConsoleMessages");
IGPlus_ServerSendSetting("bEnableHitboxDebugMode");
IGPlus_ServerSendSetting("DamageNumberDuration");
IGPlus_ServerSendSetting("DamageNumberDecayExponent");
IGPlus_ServerSendSetting("DamageNumberAccumulationTime");
IGPlus_ServerSendSetting("DamageNumberDrawOffset");

IGPlus_ServerSettingsDone(true);
}
Expand Down
Loading