I am having issues where the variable action_cooldown does not update. I could remove this but then both the player and enemy attack at the same time, which is something you do not want in a turn based game. The variable action_cooldown counts up by adding one each pass and when action_cooldown reaches 90 (action_wait_time) the player can then attack. However in my code the action_cooldown does not count up, instead it adds 1 and stops counting. Im guessing this is something to do with pygame and or the fact that the code is running under a constant while loop. I've played around with while loops and adding in other files and it didn't work. I'm sure it's something simple however I just cannot seem to see it.
Relevant code is added below, however if you need more please let me know and I'll upload the whole project. Thanks!
#control player actions #reset action variables attack = False potion = False #define other variables game_over = 0 # 0 = running 1 = player won -1 = player lost current_fighter = 1 # 1 = hero's turn 2 = enemy's turn total_fighters = 2 action_cooldown = 0 action_wait_time = 90 enemy_list =  enemy_list.append(self.enemy) #create buttons restart_button = Button(self.screen, 330, 120, restart_img, 120, 30) #make sure mouse is visible pos = pygame.mouse.get_pos() for count, enemy in enumerate(enemy_list): if self.enemy.rect.collidepoint(pos): if clicked == True and self.enemy.alive == True: attack = True #Main Turn Based Logic if game_over == 0: #player action if self.hero.alive == True: if current_fighter == 1: action_cooldown += 1 print(action_cooldown) if action_cooldown >= action_wait_time: #look for player action #attack if attack == True: self.hero.Attack() current_fighter += 1 action_cooldown = 0 else: game_over = -1 #enemy action for count, enemy in enumerate(enemy_list): if current_fighter == 2 + count: if self.enemy.alive == True: action_cooldown += 1 if action_cooldown >= action_wait_time: #check if bandit needs to heal first if (self.enemy.health / self.enemy.max_hp) < 0.5: #check if the potion would heal the bandit beyond max health if self.enemy.max_hp - self.enemy.health > potion_hp: heal_amount = potion_hp else: heal_amount = self.enemy.max_hp - self.enemy.health self.enemy.health += heal_amount self.enemy.potions -= 1 current_fighter += 1 action_cooldown = 0 #attack else: self.enemy.Attack() current_fighter += 1 action_cooldown = 0 else: current_fighter += 1 #if all fighters have had a turn then reset if current_fighter > total_fighters: current_fighter = 1 #check if all enemies are dead alive_enemies = 0 if self.enemy.alive == True: alive_enemies += 1 if alive_enemies == 0: game_over = 1 #check if game is over if game_over != 0: if game_over == 1: self.screen.blit(victory_img, (250, 50)) if game_over == -1: self.screen.blit(defeat_img, (290, 50)) if restart_button.draw(): self.hero.reset() for enemy in enemy_list: self.enemy.reset() current_fighter = 1 action_cooldown = 0 game_over = 0 pygame.display.update()