diff --git a/core/log_watcher.py b/core/log_watcher.py index fc41c8f..aebec11 100644 --- a/core/log_watcher.py +++ b/core/log_watcher.py @@ -41,10 +41,11 @@ class LogWatcher: # LOOT PATTERNS # English: "You received Shrapnel x 123 (Value: 1.23 PED)" # Swedish: "Du fick Shrapnel x (4627) Värde: 0.4627 PED" + # English loot: "You received Animal Oil Residue x (2) Value: 0.0 PED" PATTERN_LOOT_EN = re.compile( - r'^(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})\s+\[System\]\s+' - r'You\s+received\s+([\w\s]+?)\s+x\s*(\d+)\s*.*?' - r'(?:Value:\s+(\d+(?:\.\d+)?)\s+PED)?', + r'^(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})\s+\[System\]\s+\[?\]?\s*' + r'You\s+received\s+([\w\s]+?)\s+x\s*\((\d+)\)\s*' + r'Value:\s+(\d+(?:\.\d+)?)\s+PED', re.IGNORECASE ) @@ -95,14 +96,21 @@ class LogWatcher: re.IGNORECASE ) - # DAMAGE DEALT + # DAMAGE DEALT - Swedish & English # Swedish: "Du orsakade 13.5 poäng skada" + # English: "You inflicted 4.4 points of damage" PATTERN_DAMAGE_DEALT_SV = re.compile( - r'^(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})\s+\[System\]\s+' + r'^(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})\s+\[System\]\s+\[?\]?\s*' r'Du\s+orsakade\s+(\d+(?:\.\d+)?)\s+poäng\s+skada', re.IGNORECASE ) + PATTERN_DAMAGE_DEALT_EN = re.compile( + r'^(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})\s+\[System\]\s+\[?\]?\s*' + r'You\s+inflicted\s+(\d+(?:\.\d+)?)\s+points?\s+of\s+damage', + re.IGNORECASE + ) + # CRITICAL HIT # Swedish: "Kritisk träff - Extra skada! Du orsakade 44.4 poäng skada" PATTERN_CRITICAL_SV = re.compile( @@ -173,7 +181,8 @@ class LogWatcher: 'hof': PATTERN_HOF_MARKER, 'skill_en': PATTERN_SKILL_EN, 'skill_sv': PATTERN_SKILL_SV, - 'damage_dealt': PATTERN_DAMAGE_DEALT_SV, + 'damage_dealt_sv': PATTERN_DAMAGE_DEALT_SV, + 'damage_dealt_en': PATTERN_DAMAGE_DEALT_EN, 'critical_hit': PATTERN_CRITICAL_SV, 'damage_taken': PATTERN_DAMAGE_TAKEN_SV, 'heal': PATTERN_HEAL_SV, @@ -338,14 +347,24 @@ class LogWatcher: } ) - # DAMAGE DEALT + # DAMAGE DEALT - Swedish match = self.PATTERN_DAMAGE_DEALT_SV.match(line) if match: return LogEvent( timestamp=self._parse_timestamp(match.group(1)), event_type='damage_dealt', raw_line=line, - data={'damage': Decimal(match.group(2))} + data={'damage': Decimal(match.group(2)), 'language': 'swedish'} + ) + + # DAMAGE DEALT - English + match = self.PATTERN_DAMAGE_DEALT_EN.match(line) + if match: + return LogEvent( + timestamp=self._parse_timestamp(match.group(1)), + event_type='damage_dealt', + raw_line=line, + data={'damage': Decimal(match.group(2)), 'language': 'english'} ) # CRITICAL HIT