diff --git a/DamageReport_3_2.conf b/DamageReport_3_2.conf
new file mode 100644
index 0000000..1341042
--- /dev/null
+++ b/DamageReport_3_2.conf
@@ -0,0 +1 @@
+{"slots":{"0":{"name":"slot1","type":{"events":[],"methods":[]}},"1":{"name":"slot2","type":{"events":[],"methods":[]}},"2":{"name":"slot3","type":{"events":[],"methods":[]}},"3":{"name":"slot4","type":{"events":[],"methods":[]}},"4":{"name":"slot5","type":{"events":[],"methods":[]}},"5":{"name":"slot6","type":{"events":[],"methods":[]}},"6":{"name":"slot7","type":{"events":[],"methods":[]}},"7":{"name":"slot8","type":{"events":[],"methods":[]}},"8":{"name":"slot9","type":{"events":[],"methods":[]}},"9":{"name":"slot10","type":{"events":[],"methods":[]}},"-1":{"name":"unit","type":{"events":[],"methods":[]}},"-2":{"name":"system","type":{"events":[],"methods":[]}},"-3":{"name":"library","type":{"events":[],"methods":[]}}},"handlers":[{"code":"CheckClick(x, y)","filter":{"args":[{"variable":"*"},{"variable":"*"}],"signature":"mouseDown(x,y)","slotKey":"2"},"key":"0"},{"code":"CheckClick(x, y)","filter":{"args":[{"variable":"*"},{"variable":"*"}],"signature":"mouseDown(x,y)","slotKey":"3"},"key":"1"},{"code":"CheckClick(x, y)","filter":{"args":[{"variable":"*"},{"variable":"*"}],"signature":"mouseDown(x,y)","slotKey":"4"},"key":"2"},{"code":"CheckClick(x, y)","filter":{"args":[{"variable":"*"},{"variable":"*"}],"signature":"mouseDown(x,y)","slotKey":"5"},"key":"3"},{"code":"CheckClick(x, y)","filter":{"args":[{"variable":"*"},{"variable":"*"}],"signature":"mouseDown(x,y)","slotKey":"6"},"key":"4"},{"code":"CheckClick(x, y)","filter":{"args":[{"variable":"*"},{"variable":"*"}],"signature":"mouseDown(x,y)","slotKey":"7"},"key":"5"},{"code":"CheckClick(x, y)","filter":{"args":[{"variable":"*"},{"variable":"*"}],"signature":"mouseDown(x,y)","slotKey":"8"},"key":"6"},{"code":"CheckClick(x, y)","filter":{"args":[{"variable":"*"},{"variable":"*"}],"signature":"mouseDown(x,y)","slotKey":"9"},"key":"7"},{"code":"--[[\n Damage Report 3.2\n A LUA script for Dual Universe\n\n Created By Dorian Gray\n Ingame: DorianGray\n Discord: Dorian Gray#2623\n\n You can find/update this script on GitHub. Explanations, installation and usage information as well as screenshots can be found there too.\n GitHub: https://github.com/DorianTheGrey/DU-DamageReport\n\n GNU Public License 3.0. Use whatever you want, be so kind to leave credit.\n \n Credits & thanks:\n Thanks to Bayouking1 and kalazzerx for managing their forks of this script during my long absence to support the community. :)\n Thanks to Bayouking1 for fixing rocket fuel calculations.\n Thanks to NovaQuark for creating the MMO of the century.\n Thanks to Jericho, Dmentia and Archaegeo for learning a lot from their fine scripts.\n Thanks to TheBlacklist for testing and wonderful suggestions.\n SVG patterns by Hero Patterns.\n DU atlas data from Jayle Break.\n \n]]\n\nfunction GenerateCommaValue(a, b, c)\n b = b or false;\n c = c or 1;\n local d = a;\n if b == true then\n if string.len(a) >= 4 then\n d = string.format(\"%.\" .. c .. \"fk\", a / 1000)\n else\n d = string.format(\"%.\" .. c .. \"f\", a)\n end\n else\n while true do\n d, k = string.gsub(d, \"^(-?%d+)(%d%d%d)\", '%1,%2')\n if k == 0 then break end\n end\n end\n return d\nend\nfunction PrintConsole(e, f)\n f = f or false;\n if f then\n system.print(\n \"------------------------------------------------------------------------\")\n end\n system.print(e)\n if f then\n system.print(\n \"------------------------------------------------------------------------\")\n end\nend\nfunction DrawCenteredText(e)\n if screens ~= nil and #screens > 0 then\n for g = 1, #screens, 1 do screens[g].element.setCenteredText(e) end\n end\nend\nfunction ClearConsole() for g = 1, 10, 1 do PrintConsole() end end\nfunction SwitchScreens(h)\n h = h or \"on\"\n if screens ~= nil and #screens > 0 then\n for g = 1, #screens, 1 do\n if h == \"on\" then\n screens[g].element.clear()\n screens[g].element.activate()\n screens[g].active = true\n else\n screens[g].element.clear()\n screens[g].element.deactivate()\n screens[g].active = false\n end\n end\n end\nend\nfunction GetSecondsString(i)\n local i = tonumber(i)\n if i == nil or i <= 0 then\n return \"-\"\n else\n days = string.format(\"%2.f\", math.floor(i / (3600 * 24)))\n hours = string.format(\"%2.f\", math.floor(i / 3600 - days * 24))\n mins = string.format(\"%2.f\",\n math.floor(i / 60 - hours * 60 - days * 24 * 60))\n secs = string.format(\"%2.f\", math.floor(\n i - hours * 3600 - days * 24 * 60 * 60 - mins *\n 60))\n str = \"\"\n if tonumber(days) > 0 then str = str .. days .. \"d \" end\n if tonumber(hours) > 0 then str = str .. hours .. \"h \" end\n if tonumber(mins) > 0 then str = str .. mins .. \"m \" end\n if tonumber(secs) > 0 then str = str .. secs .. \"s\" end\n return str\n end\nend\nfunction replace_char(j, str, l) return str:sub(1, j - 1) .. l .. str:sub(j + 1) end\nfunction epochTime()\n function rZ(m)\n if string.len(m) <= 1 then\n return \"0\" .. m\n else\n return m\n end\n end\n function dPoint(n)\n if not (n == math.floor(n)) then\n return true\n else\n return false\n end\n end\n function lYear(year)\n if not dPoint(year / 4) then\n if dPoint(year / 100) then\n return true\n else\n if not dPoint(year / 400) then\n return true\n else\n return false\n end\n end\n else\n return false\n end\n end\n local o = 5;\n local p = 3600;\n local q = 86400;\n local r = 31536000;\n local s = 31622400;\n local t = 2419200;\n local g = 2505600;\n local u = 2592000;\n local k = 2678400;\n local w = {4, 6, 9, 11}\n local x = {1, 3, 5, 7, 8, 10, 12}\n local y = 0;\n local z = 1506816000;\n local A = system.getTime()\n _G[\"formerTime\"] = A;\n if AddSummertimeHour == true then A = A + 3600 end\n now = math.floor(A + z)\n year = 1970;\n secs = 0;\n y = 0;\n while secs + s < now or secs + r < now do\n if lYear(year + 1) then\n if secs + s < now then\n secs = secs + s;\n year = year + 1;\n y = y + 366\n end\n else\n if secs + r < now then\n secs = secs + r;\n year = year + 1;\n y = y + 365\n end\n end\n end\n secondsRemaining = now - secs;\n monthSecs = 0;\n yearlYear = lYear(year)\n month = 1;\n while monthSecs + t < secondsRemaining or monthSecs + u < secondsRemaining or\n monthSecs + k < secondsRemaining do\n if month == 1 then\n if monthSecs + k < secondsRemaining then\n month = 2;\n monthSecs = monthSecs + k;\n y = y + 31\n else\n break\n end\n end\n if month == 2 then\n if not yearlYear then\n if monthSecs + t < secondsRemaining then\n month = 3;\n monthSecs = monthSecs + t;\n y = y + 28\n else\n break\n end\n else\n if monthSecs + g < secondsRemaining then\n month = 3;\n monthSecs = monthSecs + g;\n y = y + 29\n else\n break\n end\n end\n end\n if month == 3 then\n if monthSecs + k < secondsRemaining then\n month = 4;\n monthSecs = monthSecs + k;\n y = y + 31\n else\n break\n end\n end\n if month == 4 then\n if monthSecs + u < secondsRemaining then\n month = 5;\n monthSecs = monthSecs + u;\n y = y + 30\n else\n break\n end\n end\n if month == 5 then\n if monthSecs + k < secondsRemaining then\n month = 6;\n monthSecs = monthSecs + k;\n y = y + 31\n else\n break\n end\n end\n if month == 6 then\n if monthSecs + u < secondsRemaining then\n month = 7;\n monthSecs = monthSecs + u;\n y = y + 30\n else\n break\n end\n end\n if month == 7 then\n if monthSecs + k < secondsRemaining then\n month = 8;\n monthSecs = monthSecs + k;\n y = y + 31\n else\n break\n end\n end\n if month == 8 then\n if monthSecs + k < secondsRemaining then\n month = 9;\n monthSecs = monthSecs + k;\n y = y + 31\n else\n break\n end\n end\n if month == 9 then\n if monthSecs + u < secondsRemaining then\n month = 10;\n monthSecs = monthSecs + u;\n y = y + 30\n else\n break\n end\n end\n if month == 10 then\n if monthSecs + k < secondsRemaining then\n month = 11;\n monthSecs = monthSecs + k;\n y = y + 31\n else\n break\n end\n end\n if month == 11 then\n if monthSecs + u < secondsRemaining then\n month = 12;\n monthSecs = monthSecs + u;\n y = y + 30\n else\n break\n end\n end\n end\n day = 1;\n daySecs = 0;\n daySecsRemaining = secondsRemaining - monthSecs;\n while daySecs + q < daySecsRemaining do\n day = day + 1;\n daySecs = daySecs + q;\n y = y + 1\n end\n hour = 0;\n hourSecs = 0;\n hourSecsRemaining = daySecsRemaining - daySecs;\n while hourSecs + p < hourSecsRemaining do\n hour = hour + 1;\n hourSecs = hourSecs + p\n end\n minute = 0;\n minuteSecs = 0;\n minuteSecsRemaining = hourSecsRemaining - hourSecs;\n while minuteSecs + 60 < minuteSecsRemaining do\n minute = minute + 1;\n minuteSecs = minuteSecs + 60\n end\n second = math.floor(now % 60)\n year = rZ(year)\n month = rZ(month)\n day = rZ(day)\n hour = rZ(hour)\n minute = rZ(minute)\n second = rZ(second)\n return [[]] .. hour .. \":\" .. minute ..\n [[]] .. [[]] .. year ..\n \"/\" .. month .. \"/\" .. day .. [[]]\nend\nfunction ToggleHUD()\n if HUDMode == true then\n HUDMode = false;\n forceDamageRedraw = true;\n hudSelectedIndex = 0;\n highlightID = 0;\n HideHighlight()\n SetRefresh()\n RenderScreens()\n else\n HUDMode = true;\n forceDamageRedraw = true;\n hudSelectedIndex = 0;\n highlightID = 0;\n HideHighlight()\n SetRefresh()\n RenderScreens()\n end\nend\nfunction HudDeselectElement()\n hudSelectedIndex = 0;\n hudStartIndex = 1;\n highlightID = 0;\n HideHighlight()\n if HUDMode == true then\n SetRefresh(\"damage\")\n SetRefresh(\"damageoutline\")\n RenderScreens()\n end\nend\nfunction ChangeHudSelectedElement(B)\n if HUDMode == true and #rE > 0 then\n hudSelectedIndex = hudSelectedIndex + B;\n if hudSelectedIndex < 1 then\n hudSelectedIndex = 1\n elseif hudSelectedIndex > #rE then\n hudSelectedIndex = #rE\n end\n if hudSelectedIndex > 9 then hudStartIndex = hudSelectedIndex - 9 end\n if hudSelectedIndex ~= 0 then\n highlightID = rE[hudSelectedIndex].id;\n if highlightID ~= nil and highlightID ~= 0 then\n HideHighlight()\n elementPosition = vec3(rE[hudSelectedIndex].pos)\n highlightX = elementPosition.x - coreWorldOffset;\n highlightY = elementPosition.y - coreWorldOffset;\n highlightZ = elementPosition.z - coreWorldOffset;\n highlightOn = true;\n ShowHighlight()\n end\n end\n SetRefresh(\"damage\")\n SetRefresh(\"damageoutline\")\n RenderScreens()\n end\nend\nfunction HideHighlight()\n if #hudArrowSticker > 0 then\n for g in pairs(hudArrowSticker) do\n core.deleteSticker(hudArrowSticker[g])\n end\n hudArrowSticker = {}\n end\nend\nfunction ShowHighlight()\n if highlightOn == true and highlightID > 0 then\n table.insert(hudArrowSticker, core.spawnArrowSticker(highlightX + 2,\n highlightY,\n highlightZ, \"north\"))\n table.insert(hudArrowSticker, core.spawnArrowSticker(highlightX,\n highlightY - 2,\n highlightZ, \"east\"))\n table.insert(hudArrowSticker, core.spawnArrowSticker(highlightX - 2,\n highlightY,\n highlightZ, \"south\"))\n table.insert(hudArrowSticker, core.spawnArrowSticker(highlightX,\n highlightY + 2,\n highlightZ, \"west\"))\n table.insert(hudArrowSticker, core.spawnArrowSticker(highlightX,\n highlightY,\n highlightZ - 2,\n \"up\"))\n table.insert(hudArrowSticker, core.spawnArrowSticker(highlightX,\n highlightY,\n highlightZ + 2,\n \"down\"))\n end\nend\nfunction ToggleHighlight()\n if highlightOn == true then\n highlightOn = false;\n HideHighlight()\n else\n highlightOn = true;\n ShowHighlight()\n end\nend\nfunction SortDamageTables()\n table.sort(damagedElements,\n function(m, n) return m.missinghp > n.missinghp end)\n table.sort(brokenElements, function(m, n) return m.maxhp > n.maxhp end)\nend\nfunction getScraps(C, D)\n D = D or false;\n C = C - SkillRepairToolOptimization * 0.05 * C;\n local E = math.ceil(C / (10 * 5 ^ (ScrapTier - 1)))\n if D == true then\n return GenerateCommaValue(string.format(\"%.0f\", E), false)\n else\n return E\n end\nend\nfunction getRepairTime(C, F)\n F = F or false;\n C = C - SkillRepairToolOptimization * 0.05 * C;\n local E = math.ceil(C / ScrapTierRepairTimes[ScrapTier])\n E = E - SkillRepairToolEfficiency * 0.1 * E;\n if F == true then\n return GetSecondsString(string.format(\"%.0f\", E))\n else\n return E\n end\nend\nfunction UpdateDataDamageoutline()\n dmgoElements = {}\n for g, G in ipairs(brokenElements) do\n if #dmgoElements < DMGOMaxElements then\n local elementPosition = vec3(G.pos)\n local H = elementPosition.x - coreWorldOffset;\n local I = elementPosition.y - coreWorldOffset;\n local J = elementPosition.z - coreWorldOffset;\n if H < ShipXmin then ShipXmin = H end\n if I < ShipYmin then ShipYmin = I end\n if J < ShipZmin then ShipZmin = J end\n if H > ShipXmax then ShipXmax = H end\n if I > ShipYmax then ShipYmax = I end\n if J > ShipZmax then ShipZmax = J end\n table.insert(dmgoElements, {\n id = G.id,\n type = \"b\",\n size = G.maxhp,\n x = H,\n y = I,\n z = J,\n xp = 0,\n yp = 0,\n zp = 0,\n u = 0,\n v = 0\n })\n end\n end\n if #dmgoElements < DMGOMaxElements then\n for g, G in ipairs(damagedElements) do\n if #dmgoElements < DMGOMaxElements then\n local elementPosition = vec3(G.pos)\n local H = elementPosition.x - coreWorldOffset;\n local I = elementPosition.y - coreWorldOffset;\n local J = elementPosition.z - coreWorldOffset;\n if H < ShipXmin then ShipXmin = H end\n if I < ShipYmin then ShipYmin = I end\n if J < ShipZmin then ShipZmin = J end\n if H > ShipXmax then ShipXmax = H end\n if I > ShipYmax then ShipYmax = I end\n if J > ShipZmax then ShipZmax = J end\n table.insert(dmgoElements, {\n id = G.id,\n type = \"d\",\n size = G.maxhp,\n x = H,\n y = I,\n z = J,\n xp = 0,\n yp = 0,\n zp = 0,\n u = 0,\n v = 0\n })\n end\n end\n end\n if #dmgoElements < DMGOMaxElements then\n for g, G in ipairs(healthyElements) do\n if #dmgoElements < DMGOMaxElements then\n local elementPosition = vec3(G.pos)\n local H = elementPosition.x - coreWorldOffset;\n local I = elementPosition.y - coreWorldOffset;\n local J = elementPosition.z - coreWorldOffset;\n if H < ShipXmin then ShipXmin = H end\n if I < ShipYmin then ShipYmin = I end\n if J < ShipZmin then ShipZmin = J end\n if H > ShipXmax then ShipXmax = H end\n if I > ShipYmax then ShipYmax = I end\n if J > ShipZmax then ShipZmax = J end\n table.insert(dmgoElements, {\n id = G.id,\n type = \"h\",\n size = G.maxhp,\n x = H,\n y = I,\n z = J,\n xp = 0,\n yp = 0,\n zp = 0,\n u = 0,\n v = 0\n })\n end\n end\n end\n ShipX = math.abs(ShipXmax - ShipXmin)\n ShipY = math.abs(ShipYmax - ShipYmin)\n ShipZ = math.abs(ShipZmax - ShipZmin)\n for g, G in ipairs(dmgoElements) do\n dmgoElements[g].xp = math.abs(100 / (ShipXmax - ShipXmin) *\n (G.x - ShipXmin))\n dmgoElements[g].yp = math.abs(100 / (ShipYmax - ShipYmin) *\n (G.y - ShipYmin))\n dmgoElements[g].zp = math.abs(100 / (ShipZmax - ShipZmin) *\n (G.z - ShipZmin))\n end\nend\nfunction UpdateViewDamageoutline(K)\n UFrame = 40;\n VFrame = 40;\n UStart = 20 + UFrame;\n VStart = 180 + VFrame;\n UDim = 1880 - 2 * UFrame;\n VDim = 840 - 2 * VFrame;\n if K.submode == \"top\" then\n if DMGOStretch == false then\n local L = UDim / (ShipYmax - ShipYmin)\n local M = VDim / (ShipXmax - ShipXmin)\n if L >= M then\n local N = L / M;\n local O = math.floor(UDim / N)\n UStart = UStart + (UDim - O) / 2;\n for g, G in ipairs(dmgoElements) do\n dmgoElements[g].u = math.floor(\n UDim / 100 / N * G.yp + UStart)\n dmgoElements[g].v = math.floor(VDim / 100 * G.xp + VStart)\n end\n else\n local N = M / L;\n local P = math.floor(VDim / N)\n VStart = VStart + (VDim - P) / 2;\n for g, G in ipairs(dmgoElements) do\n dmgoElements[g].u = math.floor(UDim / 100 * G.yp + UStart)\n dmgoElements[g].v = math.floor(\n VDim / 100 / N * G.xp + VStart)\n end\n end\n else\n for g, G in ipairs(dmgoElements) do\n dmgoElements[g].u = math.floor(UDim / 100 * G.yp + UStart)\n dmgoElements[g].v = math.floor(VDim / 100 * G.xp + VStart)\n end\n end\n elseif K.submode == \"front\" then\n if DMGOStretch == false then\n local L = UDim / (ShipXmax - ShipXmin)\n local M = VDim / (ShipZmax - ShipZmin)\n if L >= M then\n local N = L / M;\n local O = math.floor(UDim / N)\n UStart = UStart + (UDim - O) / 2;\n for g, G in ipairs(dmgoElements) do\n dmgoElements[g].u = math.floor(\n UDim / 100 / N * G.xp + UStart)\n dmgoElements[g].v = math.floor(\n VDim / 100 * (100 - G.zp) + VStart)\n end\n else\n local N = M / L;\n local P = math.floor(VDim / N)\n VStart = VStart + (VDim - P) / 2;\n for g, G in ipairs(dmgoElements) do\n dmgoElements[g].u = math.floor(UDim / 100 * G.xp + UStart)\n dmgoElements[g].v = math.floor(\n VDim / 100 / N * (100 - G.zp) +\n VStart)\n end\n end\n else\n for g, G in ipairs(dmgoElements) do\n dmgoElements[g].u = math.floor(UDim / 100 * G.xp + UStart)\n dmgoElements[g].v = math.floor(\n VDim / 100 * (100 - G.zp) + VStart)\n end\n end\n elseif K.submode == \"side\" then\n if DMGOStretch == false then\n local L = UDim / (ShipYmax - ShipYmin)\n local M = VDim / (ShipXmax - ShipZmin)\n if L >= M then\n local N = L / M;\n local O = math.floor(UDim / N)\n UStart = UStart + (UDim - O) / 2;\n for g, G in ipairs(dmgoElements) do\n dmgoElements[g].u = math.floor(\n UDim / 100 / N * G.yp + UStart)\n dmgoElements[g].v = math.floor(\n VDim / 100 * (100 - G.zp) + VStart)\n end\n else\n local N = M / L;\n local P = math.floor(VDim / N)\n VStart = VStart + (VDim - P) / 2;\n for g, G in ipairs(dmgoElements) do\n dmgoElements[g].u = math.floor(UDim / 100 * G.yp + UStart)\n dmgoElements[g].v = math.floor(\n VDim / 100 / N * (100 - G.zp) +\n VStart)\n end\n end\n else\n for g, G in ipairs(dmgoElements) do\n dmgoElements[g].u = math.floor(UDim / 100 * G.yp + UStart)\n dmgoElements[g].v = math.floor(\n VDim / 100 * (100 - G.zp) + VStart)\n end\n end\n else\n DrawCenteredText(\"ERROR: non-existing DMGO mode set.\")\n PrintConsole(\"ERROR: non-existing DMGO mode set.\")\n unit.exit()\n end\nend\nfunction GetDamageoutlineShip()\n local e = \"\"\n for g, G in ipairs(dmgoElements) do\n local Q = \"\"\n local R = 1;\n if G.type == \"h\" then\n Q = \"ch\"\n elseif G.type == \"d\" then\n Q = \"cw\"\n else\n Q = \"cc\"\n end\n if G.id == highlightID then Q = \"f2\" end\n if G.size > 0 and G.size < 1000 then\n R = 5\n elseif G.size >= 1000 and G.size < 2000 then\n R = 8\n elseif G.size >= 2000 and G.size < 5000 then\n R = 12\n elseif G.size >= 5000 and G.size < 10000 then\n R = 15\n elseif G.size >= 10000 and G.size < 20000 then\n R = 20\n elseif G.size >= 20000 then\n R = 30\n end\n e = e .. [[]]\n if G.id == highlightID then\n e =\n e .. [[]]\n e =\n e .. [[]]\n end\n end\n return e\nend\nfunction GetContentClickareas(K)\n local e = \"\"\n if K ~= nil and K.ClickAreas ~= nil and #K.ClickAreas > 0 then\n for g, S in ipairs(K.ClickAreas) do\n e =\n e .. [[]]\n end\n end\n return e\nend\nfunction GetElement1(H, I, T, U)\n H = H or 0;\n I = I or 0;\n T = T or 600;\n U = U or 600;\n local e = \"\"\n e = e .. [[]]\n return e\nend\nfunction GetElement2(H, I)\n H = H or 0;\n I = I or 0;\n local e = \"\"\n e = e .. [[]]\n return e\nend\nfunction GetElementLogo(H, I, V, W, X)\n H = H or 812;\n I = I or 380;\n V = V or \"f\"\n W = W or \"f2\"\n X = X or \"f3\"\n local e = \"\"\n e = e .. [[\n ]]\n return e\nend\nfunction GetHeader(Y)\n Y = Y or \"ERROR: UNDEFINED\"\n local e = \"\"\n e = e ..\n [[\n ]] .. Y .. [[]]\n return e\nend\nfunction GetContentBackground(Z, _)\n bgColor = ColorBackgroundPattern;\n local e = \"\"\n if Z == \"dots\" then\n e =\n [[background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3E%3Cpath fill='%23]] ..\n bgColor .. [[' fill-opacity=']] .. BackgroundModeOpacity ..\n [[' d='M1 3h1v1H1V3zm2-2h1v1H3V1z'%3E%3C/path%3E%3C/svg%3E\");]]\n elseif Z == \"rain\" then\n e =\n [[background-image: url(\"data:image/svg+xml,%3Csvg width='12' height='16' viewBox='0 0 12 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 .99C4 .445 4.444 0 5 0c.552 0 1 .45 1 .99v4.02C6 5.555 5.556 6 5 6c-.552 0-1-.45-1-.99V.99zm6 8c0-.546.444-.99 1-.99.552 0 1 .45 1 .99v4.02c0 .546-.444.99-1 .99-.552 0-1-.45-1-.99V8.99z' fill='%23]] ..\n bgColor .. [[' fill-opacity=']] .. BackgroundModeOpacity ..\n [[' fill-rule='evenodd'/%3E%3C/svg%3E\");]]\n elseif Z == \"plus\" then\n e =\n [[background-image: url(\"data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23]] ..\n bgColor .. [[' fill-opacity=']] .. BackgroundModeOpacity ..\n [['%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\");]]\n elseif Z == \"signal\" then\n e =\n [[background-image: url(\"data:image/svg+xml,%3Csvg width='84' height='48' viewBox='0 0 84 48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h12v6H0V0zm28 8h12v6H28V8zm14-8h12v6H42V0zm14 0h12v6H56V0zm0 8h12v6H56V8zM42 8h12v6H42V8zm0 16h12v6H42v-6zm14-8h12v6H56v-6zm14 0h12v6H70v-6zm0-16h12v6H70V0zM28 32h12v6H28v-6zM14 16h12v6H14v-6zM0 24h12v6H0v-6zm0 8h12v6H0v-6zm14 0h12v6H14v-6zm14 8h12v6H28v-6zm-14 0h12v6H14v-6zm28 0h12v6H42v-6zm14-8h12v6H56v-6zm0-8h12v6H56v-6zm14 8h12v6H70v-6zm0 8h12v6H70v-6zM14 24h12v6H14v-6zm14-8h12v6H28v-6zM14 8h12v6H14V8zM0 8h12v6H0V8z' fill='%23]] ..\n bgColor .. [[' fill-opacity=']] .. BackgroundModeOpacity ..\n [[' fill-rule='evenodd'/%3E%3C/svg%3E\");]]\n elseif Z == \"deathstar\" then\n e =\n [[background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='105' viewBox='0 0 80 105'%3E%3Cg fill-rule='evenodd'%3E%3Cg fill='%23]] ..\n bgColor .. [[' fill-opacity=']] .. BackgroundModeOpacity ..\n [['%3E%3Cpath d='M20 10a5 5 0 0 1 10 0v50a5 5 0 0 1-10 0V10zm15 35a5 5 0 0 1 10 0v50a5 5 0 0 1-10 0V45zM20 75a5 5 0 0 1 10 0v20a5 5 0 0 1-10 0V75zm30-65a5 5 0 0 1 10 0v50a5 5 0 0 1-10 0V10zm0 65a5 5 0 0 1 10 0v20a5 5 0 0 1-10 0V75zM35 10a5 5 0 0 1 10 0v20a5 5 0 0 1-10 0V10zM5 45a5 5 0 0 1 10 0v50a5 5 0 0 1-10 0V45zm0-35a5 5 0 0 1 10 0v20a5 5 0 0 1-10 0V10zm60 35a5 5 0 0 1 10 0v50a5 5 0 0 1-10 0V45zm0-35a5 5 0 0 1 10 0v20a5 5 0 0 1-10 0V10z' /%3E%3C/g%3E%3C/g%3E%3C/svg%3E\");]]\n elseif Z == \"diamond\" then\n e =\n [[background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='32' viewBox='0 0 16 32'%3E%3Cg fill='%23]] ..\n bgColor .. [[' fill-opacity=']] .. BackgroundModeOpacity ..\n [['%3E%3Cpath fill-rule='evenodd' d='M0 24h4v2H0v-2zm0 4h6v2H0v-2zm0-8h2v2H0v-2zM0 0h4v2H0V0zm0 4h2v2H0V4zm16 20h-6v2h6v-2zm0 4H8v2h8v-2zm0-8h-4v2h4v-2zm0-20h-6v2h6V0zm0 4h-4v2h4V4zm-2 12h2v2h-2v-2zm0-8h2v2h-2V8zM2 8h10v2H2V8zm0 8h10v2H2v-2zm-2-4h14v2H0v-2zm4-8h6v2H4V4zm0 16h6v2H4v-2zM6 0h2v2H6V0zm0 24h2v2H6v-2z'/%3E%3C/g%3E%3C/svg%3E\");]]\n elseif Z == \"hexagon\" then\n e =\n [[background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='49' viewBox='0 0 28 49'%3E%3Cg fill-rule='evenodd'%3E%3Cg id='hexagons' fill='%23]] ..\n bgColor .. [[' fill-opacity=']] .. BackgroundModeOpacity ..\n [[' fill-rule='nonzero'%3E%3Cpath d='M13.99 9.25l13 7.5v15l-13 7.5L1 31.75v-15l12.99-7.5zM3 17.9v12.7l10.99 6.34 11-6.35V17.9l-11-6.34L3 17.9zM0 15l12.98-7.5V0h-2v6.35L0 12.69v2.3zm0 18.5L12.98 41v8h-2v-6.85L0 35.81v-2.3zM15 0v7.5L27.99 15H28v-2.31h-.01L17 6.35V0h-2zm0 49v-8l12.99-7.5H28v2.31h-.01L17 42.15V49h-2z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\");]]\n elseif Z == \"capsule\" then\n e =\n [[background-image: url(\"data:image/svg+xml,%3Csvg width='32' height='26' viewBox='0 0 32 26' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14 0v3.994C14 7.864 10.858 11 7 11c-3.866 0-7-3.138-7-7.006V0h2v4.005C2 6.765 4.24 9 7 9c2.756 0 5-2.236 5-4.995V0h2zm0 26v-5.994C14 16.138 10.866 13 7 13c-3.858 0-7 3.137-7 7.006V26h2v-6.005C2 17.235 4.244 15 7 15c2.76 0 5 2.236 5 4.995V26h2zm2-18.994C16 3.136 19.142 0 23 0c3.866 0 7 3.138 7 7.006v9.988C30 20.864 26.858 24 23 24c-3.866 0-7-3.138-7-7.006V7.006zm2-.01C18 4.235 20.244 2 23 2c2.76 0 5 2.236 5 4.995v10.01C28 19.765 25.756 22 23 22c-2.76 0-5-2.236-5-4.995V6.995z' fill='%23]] ..\n bgColor .. [[' fill-opacity=']] .. BackgroundModeOpacity ..\n [[' fill-rule='evenodd'/%3E%3C/svg%3E\");]]\n elseif Z == \"diagonal\" then\n e =\n [[background-image: url(\"data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23]] ..\n bgColor .. [[' fill-opacity=']] .. BackgroundModeOpacity ..\n [[' fill-rule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E\");]]\n end\n return e\nend\nfunction GetContentDamageHUDOutput()\n local a0 = 300;\n local a1 = 165;\n if #damagedElements > 0 or #brokenElements > 0 then a1 = 510 end\n local e = \"\"\n e =\n e .. [[