class Misc_StatBoard extends DMStatsScreen;
var Texture Box;
var Texture BaseTex;
var int KillsX;
var int DamageX;
var int FiredX;
var int AccX;
var Misc_PRI OwnerPRI;
var Misc_PRI ViewPRI;
var Color CurrentColor;
struct StatItem
{
var class<Weapon> WeaponClass;
var string WeaponName;
};
var StatItem StatData[10];
static function float GetPercentage(float f1, float f2)
{
if(f1 == 0.0)
return 0.0;
return FMin(100.0, ((f2 / f1) * 100.0));
}
function GetStatsFor(class<Weapon> weaponClass, TeamPlayerReplicationInfo ThePRI, out int killsw)
{
local int i;
killsw = 0;
for(i = 0; i < ThePRI.WeaponStatsArray.Length; i++)
{
if(ThePRI.WeaponStatsArray[i].WeaponClass == weaponClass)
{
killsw = ThePRI.WeaponStatsArray[i].Kills;
break;
}
}
}
simulated function DrawBars(Canvas C, int num, int x, int y, int w, int h)
{
// background
C.SetPos(x, y);
C.DrawColor = CurrentColor; //HUDClass.default.WhiteColor * 0.15;
//C.DrawColor.A = 128;
C.DrawRect(Box, w, h * num);
// outline
C.DrawColor = HUDClass.default.WhiteColor * 0.4;
C.SetPos(x, y);
C.DrawRect(Box, w, 1);
C.SetPos(x, y);
C.DrawRect(Box, 1, h * num);
C.SetPos(x + w, y);
C.DrawRect(Box, 1, h * num);
C.SetPos(x, y + h * num);
C.DrawRect(Box, w + 1, 1);
}
simulated function DrawHitStat(Canvas C, int fired, int hit, int dam, int killsw, string WeaponName, int x, int y, int w, int h, int TextX, int TextY)
{
local int Acc;
local float XL, YL;
DrawBars(C, 1, x, y, w, h);
Acc = GetPercentage(fired, hit);
C.SetPos(x + TextX, y + TextY);
C.DrawColor = HUDClass.default.WhiteColor * 0.7;
C.DrawText(WeaponName, true);
C.StrLen(killsw, XL, YL);
C.SetPos(x + KillsX - XL, y + TextY);
C.DrawText(killsw, true);
C.StrLen(Fired@":", XL, YL);
C.SetPos(x + FiredX - XL, y + TextY);
C.DrawText(Fired@":", true);
C.StrLen(Acc, XL, YL);
C.SetPos(x + AccX - XL, y + TextY);
C.DrawText(Acc$"%", true);
C.StrLen(Dam, XL, YL);
C.SetPos(x + DamageX - XL, y + TextY);
C.DrawText(dam, true);
}
simulated event DrawScoreBoard(Canvas C)
{
local Misc_PRI TmpPRI;
local BallisticPlayerReplicationInfo BWPRI;
local int Awards, Combos;
local int TextX, TextY;
local int Dam, killsw;
local int i, j;
local float XL, YL;
local Color Red;
local Color Blue;
local Color OwnerColor;
local Color ViewedColor;
local string name;
local byte OwnerTeam, ViewTeam;
local int BarX;
local int BarY;
local int BarW;
local int BarH;
local int MiscX;
local int MiscY;
local int MiscW;
local int MiscH;
local int PlayerBoxX;
local int PlayerBoxY;
local int PlayerBoxW;
local int PlayerBoxH;
if(PlayerOwner == None)
{
PlayerOwner = UnrealPlayer(Owner);
if(PlayerOwner == None)
{
Super.DrawScoreboard(C);
return;
}
}
if(PRI == None)
{
PRI = TeamPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo);
if(PRI.bOnlySpectator || PRI.bOutOfLives)
{
if(Pawn(PlayerOwner.ViewTarget) != None)
PRI = TeamPlayerReplicationInfo(Pawn(PlayerOwner.ViewTarget).PlayerReplicationInfo);
else
NextStats();
}
}
ViewPRI = Misc_PRI(PRI);
if(OwnerPRI == None || Misc_Player(PlayerOwner).bFirstOpen )
{
OwnerPRI = Misc_PRI(PlayerOwner.PlayerReplicationInfo);
if(PlayerOwner.PlayerReplicationInfo.bOnlySpectator && Pawn(PlayerOwner.ViewTarget) != None)
{
OwnerPRI = Misc_PRI(Pawn(PlayerOwner.ViewTarget).PlayerReplicationInfo);
if(OwnerPRI == None)
{
if(ViewPRI != None)
OwnerPRI = ViewPRI;
else
{
Super.DrawScoreboard(C);
return;
}
}
}
Misc_Player(PlayerOwner).bFirstOpen = false;
}
Red = HUDClass.default.RedColor;
Red.A = 200;
Blue = HUDClass.default.TurqColor;
Blue.A = 200;
if(OwnerPRI.Team == None)
OwnerTeam = 255;
else
OwnerTeam = OwnerPRI.Team.TeamIndex;
if(ViewPRI.Team == None)
ViewTeam = 255;
else
ViewTeam = ViewPRI.Team.TeamIndex;
if(OwnerTeam == 255 || OwnerTeam == 1)
OwnerColor = Blue;
else
OwnerColor = Red;
if(ViewTeam == 255 || ViewTeam == 1)
ViewedColor = Blue;
else
ViewedColor = Red;
if(Level.TimeSeconds - LastUpdateTime > 5)
{
LastUpdateTime = Level.TimeSeconds;
PlayerOwner.ServerUpdateStats(OwnerPRI);
PlayerOwner.ServerUpdateStats(ViewPRI);
}
MiscW = C.ClipX * 0.48;
PlayerBoxX = C.ClipX * 0.02;
PlayerBoxW = C.ClipX * 0.46;
PlayerBoxH = C.ClipY * 0.5174;
BarH = PlayerBoxH / 15;
BarW = C.ClipX * 0.46;
TextX = 0.005 * C.ClipX;
TextY = 0.0036 * C.ClipY;
KillsX = (PlayerBoxW * 0.69) * 0.4;
AccX = (PlayerBoxW * 0.69) * 0.75;
DamageX = (PlayerBoxW * 0.69) - TextX;
/* draw the player's backgrounds */
// draw the top and example bar
C.Style = ERenderStyle.STY_Alpha;
C.DrawColor = HUDClass.default.WhiteColor;
C.DrawColor.A = 175;
MiscX = C.ClipX * 0.01;
MiscY = C.ClipY * 0.1;
MiscH = C.ClipY * 0.1183;
C.SetPos(MiscX, MiscY);
C.DrawTile(BaseTex, MiscW, MiscH, 126, 126, 772, 137);
MiscX = C.ClipX * 0.51;
C.SetPos(MiscX, MiscY);
C.DrawTile(BaseTex, MiscW, MiscH, 126, 125, 772, 137);
MiscX = C.ClipX * 0.01;
MiscY = MiscY + MiscH;
MiscH = C.ClipY * 0.0366;
MiscW = C.ClipX * 0.0075;
C.SetPos(MiscX, MiscY);
C.DrawTile(BaseTex, MiscW, MiscH, 126, 263, 10, 10);
MiscX = C.ClipX * 0.51;
C.SetPos(MiscX, MiscY);
C.DrawTile(BaseTex, MiscW, MiscH, 126, 263, 10, 10);
MiscX = C.ClipX * 0.01 + MiscW;
MiscW = C.ClipX * 0.48 - (MiscW * 2);
C.SetPos(MiscX, MiscY);
C.DrawColor = OwnerColor;
C.DrawTile(BaseTex, MiscW, MiscH, 137, 263, 751, 42);
C.SetPos(MiscX + MiscW, MiscY);
C.DrawColor = HUDClass.default.WhiteColor;
C.DrawColor.A = 175;
C.DrawTile(BaseTex, C.ClipX * 0.0069, MiscH, 888, 263, 10, 10);
MiscX = MiscX + C.ClipX * 0.5;
C.SetPos(MiscX, MiscY);
C.DrawColor = ViewedColor;
C.DrawTile(BaseTex, MiscW, MiscH, 137, 263, 751, 42);
C.SetPos(MiscX + MiscW, MiscY);
C.DrawColor = HUDClass.default.WhiteColor;
C.DrawColor.A = 175;
C.DrawTile(BaseTex, C.ClipX * 0.0069, MiscH, 888, 263, 10, 10);
MiscX = C.ClipX * 0.01;
MiscY = MiscY + MiscH;
MiscH = C.ClipY * 0.005;
MiscW = C.ClipX * 0.48;
C.SetPos(MiscX, MiscY);
C.DrawTile(BaseTex, MiscW, MiscH, 126, 306, 772, 4);
MiscX = C.ClipX * 0.51;
C.SetPos(MiscX, MiscY);
C.DrawTile(BaseTex, MiscW, MiscH, 126, 306, 772, 4);
PlayerBoxY = MiscY + MiscH + (C.ClipY * 0.005);
MiscX = C.ClipX * 0.01;
MiscY = MiscY + MiscH;
MiscH = C.ClipY * 0.5175;
C.SetPos(MiscX, MiscY);
C.DrawTile(BaseTex, MiscW, MiscH, 126, 398, 772, 10);
MiscX = C.ClipX * 0.51;
C.SetPos(MiscX, MiscY);
C.DrawTile(BaseTex, MiscW, MiscH, 126, 398, 772, 10);
MiscX = C.ClipX * 0.01;
MiscY = MiscY + MiscH;
MiscH = C.ClipY * 0.0633;
C.SetPos(MiscX, MiscY);
C.DrawTile(BaseTex, MiscW, MiscH, 126, 829, 772, 68);
MiscX = C.ClipX * 0.51;
C.SetPos(MiscX, MiscY);
C.DrawTile(BaseTex, MiscW, MiscH, 126, 829, 772, 68);
/* draw the player's backgrounds */
/* draw name, score, kills, etc... in the top */
for(i = 0; i < 2; i++)
{
if(i == 0)
{
TmpPRI = OwnerPRI;
BarX = C.ClipX * 0.02;
}
else
{
BarX = C.ClipX * 0.52;
TmpPRI = ViewPRI;
}
BarY = C.ClipY * 0.155;
C.Font = PlayerController(Owner).MyHUD.GetFontSizeIndex(C, -2);
// name
if(TmpPRI.bOutOfLives)
C.DrawColor = HUDClass.default.WhiteColor * 0.5;
else
C.DrawColor = HUDClass.default.WhiteColor * 0.7;
C.SetPos(BarX + (C.ClipX * 0.01), BarY + (C.ClipY * 0.008));
name = TmpPRI.PlayerName;
C.StrLen(name, XL, YL);
if(XL > C.ClipX * 0.23)
name = Left(name, C.ClipX * 0.23 / XL * len(name));
C.DrawText(name, true);
// score
name = string(int(TmpPRI.Score % 10000));
C.DrawColor = HUDClass.default.WhiteColor * 0.7;
C.StrLen(name, XL, YL);
C.SetPos(BarX + (C.ClipX * 0.27) - (XL * 0.5), BarY + (C.ClipY * 0.008));
C.DrawText(name, true);
// kills
if(!PlayerController(Owner).GameReplicationInfo.bTeamGame)
name = string(int(TmpPRI.Score / 10000));
else
name = string(TmpPRI.Kills);
C.StrLen(name, XL, YL);
C.SetPos(BarX + (C.ClipX * 0.35) - (XL * 0.5), BarY + (C.ClipY * 0.008));
C.DrawText(name, true);
// ping
C.DrawColor = HUDClass.default.CyanColor * 0.5;
C.DrawColor.B = 150;
C.DrawColor.R = 20;
name = string(Min(999, TmpPRI.Ping * 4));
C.StrLen(name, XL, YL);
C.SetPos(BarX + (C.ClipX * 0.42) - (XL * 0.5), BarY + (C.ClipY * 0.008));
C.DrawText(name, true);
C.Font = PlayerController(Owner).MyHUD.GetFontSizeIndex(C, -3);
name = string(TmpPRI.PacketLoss);
C.StrLen(name, XL, YL);
C.SetPos(BarX + (C.ClipX * 0.42) - (XL * 0.5), BarY + (C.ClipY * 0.035));
C.DrawText(name, true);
// location (ready/not ready/dead)
// location (ready/not ready/dead)
if(!GRI.bMatchHasBegun)
{
if(TmpPRI.bReadyToPlay)
name = class'TAM_Scoreboard'.default.ReadyText;
else
name = class'TAM_Scoreboard'.default.NotReadyText;
if(TmpPRI.bAdmin)
{
name = "Admin -"@name;
C.DrawColor.R = 170;
C.DrawColor.G = 20;
C.DrawColor.B = 20;
}
else
{
C.DrawColor = HUDClass.default.RedColor * 0.7;
C.DrawColor.G = 130;
}
}
else
{
if(!TmpPRI.bAdmin && !TmpPRI.bOutOfLives)
{
C.DrawColor = HUDClass.default.RedColor * 0.7;
C.DrawColor.G = 130;
if((TmpPRI.Team != None && TmpPRI.Team.TeamIndex == OwnerTeam) || TmpPRI == OwnerPRI)
name = TmpPRI.GetLocationName();
else
name = TmpPRI.StringUnknown;
}
else
{
C.DrawColor.R = 170;
C.DrawColor.G = 20;
C.DrawColor.B = 20;
if(TmpPRI.bAdmin)
name = "Admin";
else if(TmpPRI.bOutOfLives)
name = "Dead";
}
}
C.StrLen(name, XL, YL);
if(XL > C.ClipX * 0.23)
name = left(name, C.ClipX * 0.23 / XL * len(name));
C.SetPos(BarX + (C.ClipX * 0.02), BarY + (C.ClipY * 0.035));
C.DrawText(name, true);
// points per round
C.DrawColor = HUDClass.default.WhiteColor * 0.55;
if(Misc_BaseGRI(GRI).CurrentRound - TmpPRI.JoinRound > 0)
XL = (TmpPRI.Score % 10000) / (Misc_BaseGRI(GRI).CurrentRound - TmpPRI.JoinRound);
else
XL = (TmpPRI.Score % 10000);
if(int((XL - int(XL)) * 10) < 0)
{
if(int(XL) == 0)
name = "-"$string(int(XL));
else
name = string(int(XL));
name = name$"."$-int((XL - int(XL)) * 10);
}
else
{
name = string(int(XL));
name = name$"."$int((XL - int(XL)) * 10);
}
C.StrLen(name, XL, YL);
C.SetPos(BarX + (C.ClipX * 0.27) - (XL * 0.5), BarY + (C.ClipY * 0.035));
C.DrawText(name, true);
// draw deaths
C.DrawColor.R = 170;
C.DrawColor.G = 20;
C.DrawColor.B = 20;
name = string(int(TmpPRI.Deaths));
C.StrLen(name, xl, yl);
C.SetPos(BarX + (C.ClipX * 0.35) - (XL * 0.5), BarY + (C.ClipY * 0.035));
C.DrawText(name, true);
}
/* draw name, score, etc... in top */
for(j = 0; j < 2; j++)
{
if(j == 0)
{
TmpPRI = OwnerPRI;
PlayerBoxX = C.ClipX * 0.02;
CurrentColor = OwnerColor * 0.35;
CurrentColor.A = 75;
}
else
{
TmpPRI = ViewPRI;
PlayerBoxX = C.ClipX * 0.52;
CurrentColor = ViewedColor * 0.35;
CurrentColor.A = 75;
}
/* awards */
MiscX = PlayerBoxX + (PlayerBoxW * 0.7);
MiscY = PlayerBoxY;
MiscW = PlayerBoxW * 0.295;
MiscH = C.ClipY * 0.02;
C.StrLen("Test", XL, YL);
TextY = (MiscH * 0.6 - YL * 0.5);
Awards = 1;
if(TmpPRI.bFirstBlood)
Awards++;
for(i = 0; i < 6; i++)
if(TmpPRI.Spree[i] > 0)
Awards++;
for(i = 0; i < 7; i++)
if(TmpPRI.MultiKills[i] > 0)
Awards++;
if(TmpPRI.FlakCount > 4)
Awards++;
if(TmpPRI.ComboCount > 4)
Awards++;
if(TmpPRI.HeadCount > 2)
Awards++;
if(TmpPRI.GoalsScored > 2)
Awards++;
if(TmpPRI.GoalsScored > 0)
Awards++;
if(TmpPRI.FlawlessCount > 0)
Awards++;
if(TmpPRI.OverkillCount > 0)
Awards++;
if(TmpPRI.DarkHorseCount > 0)
Awards++;
if(TmpPRI.ranovercount > 4)
Awards++;
if(TmpPRI.CampCount > 1)
Awards++;
if(TmpPRI.Suicides > 2)
Awards++;
DrawBars(C, Awards, MiscX, MiscY, MiscW, MiscH);
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawColor = HUDClass.default.WhiteColor * 0.7;
C.DrawText("Awards", true);
if(Awards > 1)
{
MiscX += TextX;
MiscY += MiscH;
if(TmpPRI.bFirstBlood)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText(FirstBloodString);
MiscY += MiscH;
}
for(i = 0; i < 6; i++)
{
if(TmpPRI.Spree[i] > 0)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText(class'KillingSpreeMessage'.default.SelfSpreeNote[i]$MakeColorCode(HUDClass.default.GoldColor * 0.7)$"x"$TmpPRI.Spree[i]);
MiscY += MiscH;
}
}
for(i = 0; i < 7; i++)
{
if(TmpPRI.MultiKills[i] > 0)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText(KillString[i]$MakeColorCode(HUDClass.default.GoldColor * 0.7)$"x"$TmpPRI.MultiKills[i]);
MiscY += MiscH;
}
}
if(TmpPRI.FlakCount > 4)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText(FlakMonkey);
MiscY += MiscH;
}
if(TmpPRI.ranovercount > 4)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText("Bukkake!");
MiscY += MiscH;
}
if(TmpPRI.ComboCount > 4)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText(ComboWhore);
MiscY += MiscH;
}
if(TmpPRI.HeadCount > 2)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText(HeadHunter);
MiscY += MiscH;
}
if(TmpPRI.GoalsScored > 0)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText("Final Kill!"$MakeColorCode(HUDClass.default.GoldColor * 0.7)$"x"$TmpPRI.GoalsScored);
MiscY += MiscH;
}
if(TmpPRI.GoalsScored > 2)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText(HatTrick);
MiscY += MiscH;
}
if(TmpPRI.FlawlessCount > 0)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText("Flawless!"$MakeColorCode(HUDClass.default.GoldColor * 0.7)$"x"$TmpPRI.FlawlessCount);
MiscY += MiscH;
}
if(TmpPRI.OverkillCount > 0)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText("Overkill!"$MakeColorCode(HUDClass.default.GoldColor * 0.7)$"x"$TmpPRI.OverkillCount);
MiscY += MiscH;
}
if(TmpPRI.DarkHorseCount > 0)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText("Dark Horse!"$MakeColorCode(HUDClass.default.GoldColor * 0.7)$"x"$TmpPRI.DarkHorseCount);
MiscY += MiscH;
}
if(TmpPRI.CampCount > 1)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText("Campy Bastard!", true);
MiscY += MiscH;
}
if(TmpPRI.Suicides > 2)
{
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText("Emo!", true);
MiscY += MiscH;
}
MiscX -= TextX;
}
/* awards */
/* combos */
if(Awards == 1)
MiscY += MiscH * 1.275;
else
MiscY += MiscH * 0.275;
Combos = 1;
for(i = 0; i < 5; i++)
if(TmpPRI.Combos[i] > 0)
Combos++;
DrawBars(C, Combos, MiscX, MiscY, MiscW, MiscH);
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawColor = HUDClass.default.WhiteColor * 0.7;
C.DrawText("Combos", true);
if(Combos > 1)
{
MiscX += TextX;
for(i = 0; i < 5; i++)
{
if(TmpPRI.Combos[i] > 0)
{
MiscY += MiscH;
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText(ComboNames[i]$MakeColorCode(HUDClass.default.GoldColor * 0.7)$"x"$TmpPRI.Combos[i]);
}
}
MiscX -= TextX;
}
/* combo */
/* efficiency */
MiscY += MiscH * 1.275;
DrawBars(C, 1, MiscX, MiscY, MiscW, MiscH);
C.DrawColor = HUDClass.default.WhiteColor * 0.7;
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText("Efficiency:", true);
name = string(int(GetPercentage(TmpPRI.Deaths + TmpPRI.Kills, TmpPRI.Kills))) $ "%";
C.StrLen(name, XL, YL);
C.SetPos(MiscX + MiscW - TextX - XL, MiscY + TextY);
C.DrawText(name, true);
/* efficiency */
/* RFF */
if(PlayerController(Owner).GameReplicationInfo.bTeamGame)
{
MiscY += MiscH * 1.275;
DrawBars(C, 1, MiscX, MiscY, MiscW, MiscH);
C.DrawColor = HUDClass.default.WhiteColor * 0.7;
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText("ReverseFF:", true);
name = string(int(TmpPRI.ReverseFF * 100)) $ "%";
C.StrLen(name, XL, YL);
C.SetPos(MiscX + MiscW - TextX - XL, MiscY + TextY);
C.DrawText(name, true);
}
/* RFF */
/* weapons */
// show 'Weapon'...'Kills'...etc. bar
MiscX = PlayerBoxX + (PlayerBoxW * 0.005);
MiscY = PlayerBoxY;
MiscW = PlayerBoxW * 0.69;
DrawBars(C, 1, MiscX, MiscY, MiscW, MiscH);
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawColor = HUDClass.default.WhiteColor * 0.7;
C.DrawText("Weapon", true);
C.StrLen("Kills", XL, YL);
C.SetPos(MiscX + KillsX - XL, MiscY + TextY);
C.DrawText("Kills", true);
C.StrLen("Fired : Acc", XL, YL);
C.SetPos(MiscX + AccX - XL, MiscY + TextY);
C.DrawText("Fired : Acc%", true);
C.StrLen("Dam.", XL, YL);
C.SetPos(MiscX + DamageX - XL, MiscY + TextY);
C.DrawText("Dam.", true);
MiscY += MiscH * 2;
C.StrLen(" Acc", XL, YL);
FiredX = AccX - XL;
BWPRI = class'Mut_Ballistic'.static.GetBPRI(TmpPRI);
// SG
if (BWPRI != None)
{
if(BWPRI.SGDamage > 0)
{
DrawBars(C, 1, MiscX, MiscY, MiscW, MiscH);
dam = BWPRI.SGDamage;
if(dam > 0)
C.DrawColor = HUDClass.default.WhiteColor * 0.7;
else
C.DrawColor = HUDClass.default.WhiteColor * 0.3;
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText("Męlée", true);
C.StrLen(dam, XL, YL);
C.SetPos(MiscX + DamageX - XL, MiscY + TextY);
C.DrawText(dam, true);
GetStatsFor(class'ShieldGun', TmpPRI, killsw);
C.StrLen(killsw, XL, YL);
C.SetPos(MiscX + KillsX - XL, MiscY + TextY);
C.DrawText(killsw, true);
}
MiscY += MiscH * 2;
for (i = 2; i < 10; i++)
{
if (BWPRI.HitStats[i].Fired > 0)
DrawHitStat(C, BWPRI.HitStats[i].Fired, BWPRI.HitStats[i].Hit, BWPRI.HitStats[i].Damage, BWPRI.HitStats[i].Kills, StatData[i].WeaponName, MiscX, MiscY, MiscW, MiscH, TextX, TextY);
MiscY += MiscH * 2;
}
}
else
MiscY += MiscH * 22;
// total
DrawBars(C, 1, MiscX, MiscY, MiscW, MiscH);
C.DrawColor = HUDClass.default.WhiteColor * 0.7;
C.SetPos(MiscX + TextX, MiscY + TextY);
C.DrawText("Total", true);
dam = TmpPRI.EnemyDamage;
C.StrLen(dam, XL, YL);
C.SetPos(MiscX + DamageX - XL, MiscY + TextY);
C.DrawText(dam, true);
killsw = TmpPRI.Kills;
C.StrLen(killsw, XL, YL);
C.SetPos(MiscX + KillsX - XL, MiscY + TextY);
C.DrawText(killsw, true);
MiscY += MiscH * 1.275;
/* weapons */
}
bDisplayMessages = true;
}
defaultproperties
{
Box=Texture'Engine.WhiteSquareTexture'
BaseTex=Texture'3SPNv3141BW.textures.ScoreBoard'
StatData[0]=(WeaponClass=None,WeaponName="Grenades")
StatData[1]=(WeaponClass=None,WeaponName="Killstreak")
StatData[2]=(WeaponClass=class'AssaultRifle',WeaponName="Sidearm")
StatData[3]=(WeaponClass=class'BioRifle',WeaponName="Submachine Gun")
StatData[4]=(WeaponClass=class'ShockRifle',WeaponName="Assault Rifle")
StatData[5]=(WeaponClass=class'Linkgun',WeaponName="Energy")
StatData[6]=(WeaponClass=class'Minigun',WeaponName="Machine Gun")
StatData[7]=(WeaponClass=class'FlakCannon',WeaponName="Shotgun")
StatData[8]=(WeaponClass=class'RocketLauncher',WeaponName="Ordnance")
StatData[9]=(WeaponClass=class'SniperRifle',WeaponName="Sniper Rifle")
}