Timer fires once then never again

Hey,

Im having issues with my timer firing once then it won’t fire again. Its meant to fire every second but doesn’t appear to do anything

Here’s the .cpp code (Header stuff seems to be fine, it runs fine from the blueprint)
// Fill out your copyright notice in the Description page of Project Settings.

#include "DanganronpaMP.h"
#include "Contradiction_Struct.h"
#include "Nonstop_Debate.h"


ANonstop_Debate::ANonstop_Debate()
{
	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = false;
	ContradictionFound = false;
	Active = true;
	Success = false;
	ActiveArgument = NULL;
	Proceed = false;
	ArgumentIndex = 0;

}
void ANonstop_Debate::StartDebate(TArray<UContradiction_Struct*> Arguments, TArray<ACameraActor*> Cameras) 
{
	if (GEngine)
		GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("Beginning Debate"));
	if (GetWorldTimerManager().IsTimerActive(ArgumentTimer))
		GetWorldTimerManager().ClearTimer(ArgumentTimer);
	if (GetWorldTimerManager().IsTimerActive(DebateTimer))
		GetWorldTimerManager().ClearTimer(DebateTimer);
	if (GetWorldTimerManager().IsTimerActive(MinigameTimer))
		GetWorldTimerManager().ClearTimer(MinigameTimer);
	if (GEngine)
		GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("Existing Timers Cleared"));
	
	Proceed = true;
	ArgumentIndex = -1;
	MaxArguments = Arguments.Num() - 1;
	ActiveArrayArguments = Arguments;
	ActiveArrayCameras = Cameras;
	GetWorldTimerManager().SetTimer(DebateTimer, this, &ANonstop_Debate::DebateTimerContinue, 1.0f, true);


	
}

void ANonstop_Debate::ArgumentTimerContinue() 
{
	if (GEngine)
		GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("Advancing Argument Timer"));
	ArgumentTime--;
	if (ArgumentTime < 1)
	{
		Proceed = true;
		if (GEngine)
			GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("Proceed set to true"));
	}
}
void ANonstop_Debate::DebateTimerContinue()
{
	if (Proceed)
	{
		if (GEngine)
			GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("Proceeding to next argument"));
		Proceed = false;
		GetWorldTimerManager().ClearTimer(ArgumentTimer);
		if (ArgumentIndex == MaxArguments)
		{
			ArgumentIndex = 0;
		}
		else
		{
			ArgumentIndex++;
		}
		ActiveArgument = ActiveArrayArguments[ArgumentIndex];
		ArgumentTime = ActiveArgument->getTimeToSayArgument();
		GetWorldTimerManager().SetTimer(ArgumentTimer, this, &ANonstop_Debate::ArgumentTimerContinue, 1.0f, true);
	}
	else {
		if (GEngine)
			GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Yellow, TEXT("Did not proceed argument"));
	}
}

What’s meant to happen is every second I expect at least 2 debug messages to appear from the two timers popping however in reality I get the intialisation debug messages and then proceeding to next argument and advancing argument timer once. After this no more debug messages appear and no values set to appear on the screen change. The game still runs in the background as I can move around and things like that.

Any help with this would be awesome :smiley:

So apparently UE is a sentient beast that decides itself whether or not it wants to work.

Its randomly started working. Idk how or why but im gonna accept it.

Sounds like a Hotreload Quirks, or forgot to Compile at all? Code looked fine to me as I looked over it yesterday. Should have dropped you a line sry =)