[docs]class DamageHolder:
def __init__(self):
self.damages: list[DamageLog] = []
[docs] def add(self, source, damage: int, turn: int):
if not damage:
damage = 0
self.damages.append(DamageLog(source, damage, turn))
[docs] def sum(self):
total = 0
for log in self.damages:
total += log.damage
return total
[docs] def clear(self):
self.damages = []
[docs] def cancel(self, source):
self.damages = list(filter(lambda d: d.source != source, self.damages))
[docs] def contributors(self):
contributors = []
for log in self.damages:
if log.source not in contributors:
contributors.append(log.source)
return contributors
[docs]class DamageLog:
def __init__(self, source, damage: int, turn: int):
self.source = source
self.damage = damage
self.turn = turn