Here is what I could throw together for now. I'll have more time to mess with it after work.
Simba Code:
program TextTest;
type
TSkillTImer = Record
Text: String;
Timer: UInt32;
end;
TSkillTimerArray = Array of TSkillTimer;
const //idk the actual values
FLASH_TIME = 300000;
HEAL_TIME = 300000;
IGNITE_TIME = 300000;
var
Timers: TSkillTimerArray;
function MsToTime(MS: UInt32): string;
var
STA: array [0..5] of TVariantArray;
Time: array of Integer;
i, t, tl: Integer;
begin
Result := '';
tl := 3;
t := 2;
SetLength(Time,tl);
ConvertTime(MS, Time[0], Time[1], Time[2]);
STA[3] := [':', ':', '', True, 2];
for i := 0 to t do
if (Time[i] > 0) or (STA[3][tl]) or (i = t) then
Result := Result + PadZ(IntToStr(Time[i]), STA[3][tl+1]) + STA[3][i];
end;
procedure LoadTimers();
var
i: Int32;
T: TSkillTimer;
S: String;
List: TStringList;
begin
List.Init();
try
List.LoadFromFile(AppPath + 'test.txt');
CloseFile(RewriteFile(AppPath + 'test.txt', True));
if (List.GetCount() < 1) then Exit;
for i := 0 to (List.GetCount() - 1) do
begin
S := List.GetStrings(i);
if (Pos('flash', LowerCase(S)) > 0) then
begin
T.Text := S;
T.Timer := GetTickCount() + FLASH_TIME;
Timers := Timers + T;
end else
if (Pos('heal', LowerCase(S)) > 0) then
begin
T.Text := S;
T.Timer := GetTickCount() + HEAL_TIME;
Timers := Timers + T;
end else
if (Pos('ignite', LowerCase(S)) > 0) then
begin
T.Text := S;
T.Timer := GetTickCount() + IGNITE_TIME;
Timers := Timers + T;
end;
end;
finally
List.Free();
end;
end;
procedure ReadTimers();
var
i: Int32;
t: UInt32 := GetTickCount();
Temp: TSkillTimerArray;
begin
if (Length(Timers) < 1) then Exit;
ClearDebug();
for i := 0 to High(Timers) do
begin
if (t < Timers[i].Timer) then
begin
Temp := Temp + Timers[i];
WriteLn(Timers[i].Text, ' ', MsToTime(Timers[i].Timer - t));
end;
end;
Timers := Temp;
end;
procedure Loop();
begin
LoadTimers();
ReadTimers();
Wait(900);
end;
begin
ClearDebug();
while True do Loop();
end.