From 14c4cf68ff950153c9123e09ac1ebaac6512a07b Mon Sep 17 00:00:00 2001 From: HardiReady Date: Thu, 18 Oct 2018 20:23:29 +0200 Subject: [PATCH] Do not process/count duplicated flagTouch --- api/tools/log-parse-tool.js | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/api/tools/log-parse-tool.js b/api/tools/log-parse-tool.js index 83a72c0..d045c61 100644 --- a/api/tools/log-parse-tool.js +++ b/api/tools/log-parse-tool.js @@ -24,6 +24,10 @@ const vehicleRegex = /(vehicle:\s(.*?)\))/; const categoryRegex = /(category:\s(.*?)\))/; const parseWarLog = (lineArray, war) => { + + let flagBlufor = true; + let flagOpfor = true; + const NAME_TOO_LONG_ERROR = 'Error: ENAMETOOLONG: name too long, open \''; const stats = { @@ -164,18 +168,29 @@ const parseWarLog = (lineArray, war) => { /** * FLAG */ - stats.clean.push(line); - const playerName = line.substring(line.lastIndexOf('rt von ') + 7).slice(0, -1); const flagFraction = line.includes('NATO Flagge') ? 'BLUFOR' : 'OPFOR'; const capture = !!line.includes('Flagge erobert'); - stats.flag.push({ - war: war._id, - time: getFullTimeDate(war.date, line.split(WHITESPACE)[5]), - player: playerName, - flagFraction: flagFraction, - capture: capture, - }); + if ((flagFraction === 'BLUFOR' && ((capture && flagBlufor) || (!capture && !flagBlufor))) || + (flagFraction === 'OPFOR' && ((capture && flagOpfor) || (!capture && !flagOpfor)))) { + stats.clean.push(line); + + const playerName = line.substring(line.lastIndexOf('rt von ') + 7).slice(0, -1); + + if (flagFraction === 'BLUFOR') { + flagBlufor = !capture; + } else if (flagFraction === 'OPFOR') { + flagOpfor = !capture; + } + + stats.flag.push({ + war: war._id, + time: getFullTimeDate(war.date, line.split(WHITESPACE)[5]), + player: playerName, + flagFraction: flagFraction, + capture: capture, + }); + } } else if (line.includes('(Punkte)')) { /** * POINTS