From 885846b6769ea6145f38632f579c0848d8f19742 Mon Sep 17 00:00:00 2001 From: Relationship <139162359+Relationship-OctoWoW@users.noreply.github.com> Date: Sat, 11 Jul 2026 11:34:17 +0100 Subject: [PATCH] Add files via upload --- RelationshipsPVP.lua | 61 +++++++++++++++++++++++++++++--------------- RelationshipsPVP.toc | 2 +- RelationshipsPVP.xml | 44 +++++++++++++++----------------- 3 files changed, 63 insertions(+), 44 deletions(-) diff --git a/RelationshipsPVP.lua b/RelationshipsPVP.lua index 674b973..344d63f 100644 --- a/RelationshipsPVP.lua +++ b/RelationshipsPVP.lua @@ -63,7 +63,7 @@ local totalRow = nil --------------------------------------------------------------- local function NewStatBlock() return { - wins = 0, losses = 0, + wins = 0, draws = 0, losses = 0, kills = 0, deaths = 0, hk = 0, marks = 0, honor = 0, bestKB = 0, streak = 0, bestStreak = 0, @@ -84,6 +84,7 @@ local function EnsureDB() if s.bestStreak == nil then s.bestStreak = 0 end if s.hk == nil then s.hk = 0 end if s.marks == nil then s.marks = 0 end + if s.draws == nil then s.draws = 0 end db.stats[k] = s end return db @@ -309,22 +310,33 @@ local function RecordEnd(key, index) if not s then return end local playerWon = false + local isDraw = false local winner = GetBattlefieldWinner() if winner then local myFaction = UnitFactionGroup("player") - local wonAsAlliance = (winner == 1 and myFaction == "Alliance") - local wonAsHorde = (winner == 0 and myFaction == "Horde") - playerWon = wonAsAlliance or wonAsHorde - if playerWon then - s.wins = s.wins + 1 - s.streak = s.streak + 1 - if s.streak > s.bestStreak then s.bestStreak = s.streak end - else - s.losses = s.losses + 1 + -- Some server builds (incl. Turtle/Octo) report a draw as a winner + -- value that is neither 0 (Horde) nor 1 (Alliance). Treat anything + -- else as a draw so it isn't miscounted as a loss. + isDraw = (winner ~= 0 and winner ~= 1) + if isDraw then + s.draws = s.draws + 1 s.streak = 0 + else + local wonAsAlliance = (winner == 1 and myFaction == "Alliance") + local wonAsHorde = (winner == 0 and myFaction == "Horde") + playerWon = wonAsAlliance or wonAsHorde + if playerWon then + s.wins = s.wins + 1 + s.streak = s.streak + 1 + if s.streak > s.bestStreak then s.bestStreak = s.streak end + else + s.losses = s.losses + 1 + s.streak = 0 + end end local isBG = (key == "AV" or key == "WSG" or key == "AB") if isBG then + -- Draws award the loss-tier mark count. s.marks = s.marks + (playerWon and MARKS_WIN or MARKS_LOSS) end end @@ -352,9 +364,15 @@ local function RecordEnd(key, index) if key == "AV" or key == "WSG" or key == "AB" then marksMsg = " +" .. (playerWon and MARKS_WIN or MARKS_LOSS) .. " marks" end - Print(BG_NAMES[key] .. " recorded (" - .. (playerWon and "|cff66ff66win|r" or "|cffff6666loss|r") - .. marksMsg .. ").") + local outcomeStr + if isDraw then + outcomeStr = "|cffffff66draw|r" + elseif playerWon then + outcomeStr = "|cff66ff66win|r" + else + outcomeStr = "|cffff6666loss|r" + end + Print(BG_NAMES[key] .. " recorded (" .. outcomeStr .. marksMsg .. ").") end --------------------------------------------------------------- @@ -763,10 +781,10 @@ end --------------------------------------------------------------- -- UI: build row FontStrings inside the stats panel --------------------------------------------------------------- -local COL_X = { 14, 158, 208, 258, 308, 354, 400, 446, 496, 550, 614 } -local COL_W = { 140, 46, 46, 46, 46, 46, 46, 46, 50, 60, 58 } -local COL_J = { "LEFT", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER" } -local COL_NAMES = { "bg", "games", "win", "loss", "ratio", "kb", "hk", "dth", "kd", "honor", "mk" } +local COL_X = { 14, 158, 208, 258, 308, 358, 408, 454, 500, 550, 604, 668 } +local COL_W = { 140, 46, 46, 46, 46, 46, 46, 46, 46, 50, 60, 58 } +local COL_J = { "LEFT", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER", "CENTER" } +local COL_NAMES = { "bg", "games", "win", "draw", "loss", "ratio", "kb", "hk", "dth", "kd", "honor", "mk" } local ROW_HEIGHT = 22 local ROW_TOP = -34 @@ -776,7 +794,7 @@ local function MakeRow(panel, tag, yOff, striped) if striped then local bg = panel:CreateTexture("RPVPRowBG"..tag, "BACKGROUND") bg:SetTexture(1, 1, 1, 0.04) - bg:SetWidth(660); bg:SetHeight(ROW_HEIGHT - 2) + bg:SetWidth(714); bg:SetHeight(ROW_HEIGHT - 2) bg:SetPoint("TOPLEFT", panel, "TOPLEFT", 14, yOff + 2) end for c = 1, table.getn(COL_NAMES) do @@ -812,7 +830,7 @@ local function BuildStatsRows() local totalY = ROW_TOP - n * ROW_HEIGHT - 4 local div = panel:CreateTexture("RPVPTotalDivider", "ARTWORK") div:SetTexture(1, 1, 1, 0.25) - div:SetWidth(660); div:SetHeight(1) + div:SetWidth(714); div:SetHeight(1) div:SetPoint("TOPLEFT", panel, "TOPLEFT", 14, totalY + 2) totalRow = MakeRow(panel, "TOTAL", totalY - 6, false) @@ -847,7 +865,8 @@ local function FormatQueueLine() end local function FillRow(r, s) - local games = s.wins + s.losses + local draws = s.draws or 0 + local games = s.wins + draws + s.losses local pct = 0 if games > 0 then pct = math.floor((s.wins / games) * 100 + 0.5) end local kd = "-" @@ -859,6 +878,7 @@ local function FillRow(r, s) r.games:SetText(games) r.win:SetText(s.wins) + r.draw:SetText(draws) r.loss:SetText(s.losses) r.ratio:SetText(pct .. "%") r.kb:SetText(s.kills) @@ -892,6 +912,7 @@ function RelationshipsPVP_Refresh() if r then FillRow(r, s) end totals.wins = totals.wins + s.wins + totals.draws = totals.draws + (s.draws or 0) totals.losses = totals.losses + s.losses totals.kills = totals.kills + s.kills totals.hk = totals.hk + s.hk diff --git a/RelationshipsPVP.toc b/RelationshipsPVP.toc index 2539193..e49792d 100644 --- a/RelationshipsPVP.toc +++ b/RelationshipsPVP.toc @@ -2,7 +2,7 @@ ## Title: Relationships PVP ## Notes: PvP panel with per-battleground and per-arena stats, marks, kills/deaths, honor, K/D, and queue controls. Supports the Battleground Finder and Arena on OctoWoW. ## Author: Relationship -## Version: 1.0 +## Version: 1.1 ## SavedVariablesPerCharacter: RelationshipsPVPCharDB RelationshipsPVP.xml diff --git a/RelationshipsPVP.xml b/RelationshipsPVP.xml index 3c5d587..7799e34 100644 --- a/RelationshipsPVP.xml +++ b/RelationshipsPVP.xml @@ -6,7 +6,7 @@ ============================================================ --> - + @@ -74,7 +74,7 @@ - + @@ -99,47 +99,51 @@ - + - + + + + + - + - + - + - + - + - + - + - + @@ -150,7 +154,7 @@ - + @@ -164,7 +168,7 @@ - + @@ -173,15 +177,9 @@ - + - + @@ -280,7 +278,7 @@ - +