Add TacticalKillStatsTable back and make it work for all players on your team / Spectator player shows T1/2 losses separately
This commit is contained in:
@@ -8,6 +8,7 @@ require("GameManager/TutorialTextFeed")
|
||||
---@field StartTime integer The start time.
|
||||
---@field Players PlayerClass[] The combatant players in this game.
|
||||
---@field CombatFeed TutorialTextFeed Text feed for unit builds and kills.
|
||||
---@field KillStatsTable table The engine-owned TacticalKillStatsTable reference, set from GameScoring.lua.
|
||||
TacticalGameClass = {}
|
||||
TacticalGameClass.__index = TacticalGameClass
|
||||
|
||||
@@ -147,6 +148,7 @@ function TacticalGameClass:UnitKilled(gameObject, killer)
|
||||
|
||||
if killedUnit then
|
||||
killedUnit:SetDead(killer.Get_ID())
|
||||
self:UpdateTacticalKillStatsTable(killedUnit, killer)
|
||||
self:CombatTextUnitKilled(killedUnit)
|
||||
end
|
||||
end
|
||||
@@ -189,6 +191,84 @@ function TacticalGameClass:CombatTextUnitKilled(unit)
|
||||
end
|
||||
end
|
||||
|
||||
--- ==================================================
|
||||
--- Stat tables
|
||||
--- ==================================================
|
||||
|
||||
---Updates the Tactical Kill Stats Table with the killed object.
|
||||
---@param unit UnitClass The object that was killed.
|
||||
---@param killer PlayerObject The player that killed the object.
|
||||
function TacticalGameClass:UpdateTacticalKillStatsTable(unit, killer)
|
||||
if not TestValid(killer) then
|
||||
return
|
||||
end
|
||||
|
||||
-- Update Frags
|
||||
local fragEntry = self.KillStatsTable[FragIndex]
|
||||
|
||||
if not fragEntry then
|
||||
fragEntry = {}
|
||||
self.KillStatsTable[FragIndex] = fragEntry
|
||||
end
|
||||
|
||||
local killerId = killer.Get_ID()
|
||||
local killerEntry = fragEntry[killerId]
|
||||
|
||||
if not killerEntry then
|
||||
killerEntry = {}
|
||||
fragEntry[killerId] = killerEntry
|
||||
end
|
||||
|
||||
local killerObjEntry = killerEntry[unit.GameObjectType]
|
||||
|
||||
if not killerObjEntry then
|
||||
killerObjEntry = {
|
||||
kills = 1,
|
||||
combat_power = unit.CombatRating,
|
||||
build_cost = unit.BuildCost,
|
||||
score_value = unit.ScoreValue
|
||||
}
|
||||
killerEntry[unit.GameObjectType] = killerObjEntry
|
||||
else
|
||||
killerObjEntry.kills = killerObjEntry.kills + 1
|
||||
killerObjEntry.combat_power = killerObjEntry.combat_power + unit.CombatRating
|
||||
killerObjEntry.build_cost = killerObjEntry.build_cost + unit.BuildCost
|
||||
killerObjEntry.score_value = killerObjEntry.score_value + unit.ScoreValue
|
||||
end
|
||||
|
||||
-- Update Deaths
|
||||
local deathEntry = self.KillStatsTable[DeathIndex]
|
||||
|
||||
if not deathEntry then
|
||||
deathEntry = {}
|
||||
self.KillStatsTable[DeathIndex] = deathEntry
|
||||
end
|
||||
|
||||
local ownerEntry = deathEntry[unit.OwnerId]
|
||||
|
||||
if not ownerEntry then
|
||||
ownerEntry = {}
|
||||
deathEntry[unit.OwnerId] = ownerEntry
|
||||
end
|
||||
|
||||
local ownerObjEntry = ownerEntry[unit.GameObjectType]
|
||||
|
||||
if not ownerObjEntry then
|
||||
ownerObjEntry = {
|
||||
kills = 1,
|
||||
combat_power = unit.CombatRating,
|
||||
build_cost = unit.BuildCost,
|
||||
score_value = unit.ScoreValue
|
||||
}
|
||||
ownerEntry[unit.GameObjectType] = ownerObjEntry
|
||||
else
|
||||
ownerObjEntry.kills = ownerObjEntry.kills + 1
|
||||
ownerObjEntry.combat_power = ownerObjEntry.combat_power + unit.CombatRating
|
||||
ownerObjEntry.build_cost = ownerObjEntry.build_cost + unit.BuildCost
|
||||
ownerObjEntry.score_value = ownerObjEntry.score_value + unit.ScoreValue
|
||||
end
|
||||
end
|
||||
|
||||
-- ==================================================
|
||||
-- Private functions
|
||||
-- ==================================================
|
||||
|
||||
Reference in New Issue
Block a user