system "Tera-TNT"
{
 *************************************************************************************************************
 *         System: Tera-TNT
 *         Coded by: Roulette787
 *
 * NOTES: Changes from original system.
 *        1. Bets on both even chances for a 50% coverage.
 *           This can be changed on line 41, to cover a single even chance. eg. [RED]
 *        2. The system restarts at the stop-limit.
 *           Comment line 279 to stop betting at the stop-limit.
 *        3. The original system suggests to continue playing without reducing bet sizes.
 *           This leads to very large bet sizes. But here, the system will restart when you're ahead.
 *           Comment lines 267-271 to play without restarting.
 *
 ************************************************************************************************************
}
method "main"
begin
    while starting a new session
    begin
        call "init";
        put 200 units in bankroll;
        put 100% bankroll on record "highest bankroll" data;
        put 150% bankroll on record "target bankroll" data;
        exit;
    end

    call "check win";
    call "place bets";
end


method "init"
begin
   set list [1, 2] as record "numbers" data;
   put 0 units on record "play level" data;
   put 1 unit on record "add level" data;
   put 3 units on record "numbers" data index;
   put 0 units on record "numbers total" data;
   copy list [red, black] to record "ECs" layout;             // CHANGE BETTING PATTERN in [BRACKETS], default [red, black]
end


method "check win"
begin
   if net amount > 0
   begin
      call "check win variables";
      
      // ----------------------- level selection -----------------------
      if record "numbers" data count > 1
      begin
        if record "play level" data = 0
        begin
            if record "RI" data >= 5 OR record "left number" data >= 5
            begin
                put 1 unit on record "play level" data;
            end
        end
      
        if record "play level" data = 1
        begin
            if record "right number" data >= 12
            begin
                put 2 units on record "play level" data;
            end
        end

        if record "play level" data = 2
        begin
            if record "right number" data >= 30
            begin
                put 3 units on record "play level" data;
            end
        end
      
        if record "play level" data = 3
        begin
           if record "RI" data >= 100
           begin
                put 4 units on record "play level" data;
           end
        end
      end
      else
      begin
         put 0 units on record "play level" data;
      end

      // --------------------------------- cancellation -------------------------------
      
      if record "play level" data = 0
      begin
         if record "numbers" data count > 1
         begin
            put 2 units on record "numbers" data index;
            call "erase first numbers";
         end
         else
         begin
            //call "restart";          // 1 number left in series, START OVER? OR DO NOTHING?
         end
      end
      
      if record "play level" data = 1
      begin
          if record "numbers" data count > 2
          begin
              put 3 units on record "numbers" data index;
              call "erase first numbers";
          end
          else
          begin
              put 2 units on record "numbers" data index;
              call "erase first numbers";
          end
      end
      
      if record "play level" data = 2
      begin
         if record "numbers" data count > 3
         begin
            put 4 units on record "numbers" data index;
            call "erase first numbers";
         end
         else
         begin
            call "erase till last one";
         end
      end
      
      if record "play level" data = 3
      begin
         if record "numbers" data count > 5
         begin
            put 6 units on record "numbers" data index;
            call "erase first numbers";
         end
         else
         begin
            call "erase till last one";
         end
      end
      
      if record "play level" data = 4
      begin
         if record "numbers" data count > 10
         begin
            put 11 units on record "numbers" data index;
            call "erase first numbers";
         end
         else
         begin
            call "erase till last one";
         end
      end
   end
   
   
   if net amount < 0
   begin
      call "check lost variables";
      
      //if number 0 has hit each time       // 0 TREATED AS A LOSS
      //begin
      
      //end
      //else
      //begin
         if record "right number" data >= 5
         begin
            put 2 units on record "add level" data;
            if record "right number" data >= 15
            begin
               put 3 units on record "add level" data;
                    if record "right number" data >= 40
                    begin
                       put 6 units on record "add level" data;
                    end
            end
         end
         else
         begin
            put 1 unit on record "add number" data;
         end
         
         put 1 units on record "counter" data;
         loop until record "counter" data > record "add level" data
         begin
            subtract 1 unit from record "numbers" data index;
            put 100% of record "numbers" data to record "temp number" data;
            add 1 unit on record "temp number" data;
            add 1 unit to record "numbers" data index;
            put 100% of record "temp number" data to record "numbers" data;
            add 1 unit on record "counter" data;
            add 1 unit on record "numbers" data index;
         end
      //end
   end
end

method "check win variables"
begin
   put 100% of record "numbers" data index to record "counter" data;
   subtract 1 unit from record "numbers" data index;
   put 100% of record "numbers" data to record "right number" data;
   put 1 unit on record "numbers" data index;
   put 100% of record "numbers" data to record "left number" data;
   put 100% of record "counter" data to record "numbers" data index;
   
   put 100% of record "right number" data to record "RI" data;
   subtract 100% of record "left number" data from record "RI" data;
end

method "check lost variables"
begin
   subtract 1 unit from record "numbers" data index;
   put 100% of record "numbers" data to record "right number" data;
   add 1 unit to record "numbers" data index;
end


method "erase till last one"
begin
            loop until record "numbers" data count < 2
            begin
               put 2 units on record "numbers" data index;
               call "erase first numbers";
            end
end



method "erase first numbers"
begin
            clear record "temp numbers" data;
            loop until record "numbers" data index > record "numbers" data count
            begin
               put 100% record "numbers" data on record "temp numbers" data;
               add 1 unit on record "numbers" data index;
               add 1 unit on record "temp numbers" data index;
            end
            clear record "numbers" data;
            duplicate record "temp numbers" to record "numbers";
end


method "calc stop limit"
begin
   put 1 unit on record "numbers" data index;
   put 0 units on record "numbers total" data;
   
   loop until record "numbers" data index > record "numbers" data count
   begin
      add 100% record "numbers" data to record "numbers total" data;
      add 1 unit on record "numbers" data index;
   end
end


method "place bets"
begin

   put 100% bankroll on record "bankroll" data;
   
   if record "bankroll" data > record "highest bankroll" data             // COMMENT LINES 267 TO 271 TO
   begin                                                                  // CONTINIUOUS PLAY WITHOUT RESTARTING
      put 100% record "bankroll" data to record "highest bankroll" data;  // AT PEAK BANKROLL.
      call "restart";                                                     // THIS WILL RESULT IN VERY LARGE BETS.
   end                                                                    //
   
   //else
   //begin
        call "calc stop limit";
        if record "bankroll" data >= record "target bankroll" data          // stop-play
        OR record "numbers total" data > record "bankroll" data               // STOP LIMIT
        begin
            call "restart";                    // COMMENT THIS LINE TO STOP PLAY AT, STOP LIMIT
        end
        else
        begin
            put 100% record "numbers" data index on record "counter" data;
            put 1 unit on record "numbers" data index;
            if record "ECs" layout index >= record "ECs" layout count
            begin
               put 1 unit on record "ECs" layout index;
            end
            else
            begin
               add 1 unit to record "ECs" layout index;
            end
            put 100% record "numbers" data on record "ECs" layout;
            put 100% record "counter" data on record "numbers" data index;
        end
   //end
end

method "restart"
begin
   clear record "numbers" data;
   call "init";
end
