I'm currently trying to make a class used for status effects. It works fine when removing one status effect, but when the Status amount hits 0 while there's two or more currently on screen, I get the error " StatusEffect = list_of_status[l] IndexError: list index out of range"
def draw():
for l in range (0, len(list_of_status)):
StatusEffect = list_of_status[l]
StatusEffect.y = statuses_y + (l % 5) * 20
StatusEffect.draw()
StatusEffect.activate()
if StatusEffect.amount == 0:
list_of_status.remove(StatusEffect)
class StatusEffect:
def __init__(self, name, amount, time=5):
self.name = name
self.amount = amount
self.time = time
self.x = 0
self.y = 0
self.active = True
def draw(self):
font = pygame.font.SysFont('Gill Sans', 17, True, False)
name_text = font.render(f'{self.name}: {self.amount}/{self.time}', True, BLACK)
if self.name == "Burn":
name_text = font.render(f'{self.name}: {self.amount}', True, BLACK)
screen.blit(name_text, [self.x, self.y])
def activate(self):
global health
if time.time() - self.time >= 1:
if self.name == "Burn":
health -= 1
self.amount -= 1
self.time = time.time()
list_of_status = []
list_of_status.append(StatusEffect(name="Burn", amount=10))
list_of_status.append(StatusEffect(name="Burn", amount=10))