system "Ken's Unhit Street and Split"
{
   ***********************************************************************************
   *
   *       Ken's Unhit Street and Split developed by Mr.J (VLS Forums)
   *       Coded by : Roulette787
   *       More info on VLSRoulette.com  forums
   *
   *   NOTES: Betting starts after 60 spins. This limit can be changed in line 19.
   *
   ***********************************************************************************
}
method "main"
begin
    While starting a new session
    begin
       call "initialize";
       exit;
    end
    
    if record "spin count" data <= 60      // change this value to start game early. Default: 60
    begin
        add 1 unit on record "spin count" data;
        exit;
    end
    else
    begin
        call "check win";
        if flag "isQualified" is true
        begin
            if flag "isSplitBettingOn" is false
            and flag "isStreetBettingOn" is false
            begin
               call "check hits";
            end
        end
        else
        begin
           call "qualify";
        end
        
        call "place bets";
    end
    
end


method "check win"
begin
   if net amount > 0
   begin
      set flag "isQualified" to false;
      set flag "isSplitBettingOn" to false;
      set flag "isStreetBettingOn" to false;
      put 1 unit on record "progression" data index;
   end
   if net amount < 0
   begin
      if record "progression" data index >= record "progression" data count
      begin
         put 1 unit on record "progression" data index;
         set flag "isQualified" to false;
         set flag "isSplitBettingOn" to false;
         set flag "isStreetBettingOn" to false;
      end
      else
      begin
         add 1 unit on record "progression" data index;
      end
   end
end


method "qualify"
begin
    put 0 units on record "current max" data;
    clear record "selected splits" layout;


    put 1 unit on record "all splits" layout index;
    loop until record "all splits" layout index > record "all splits" layout count
    begin
        put 0 units on record "temp" data;
        calculate last appeared of record "all splits" layout to record "temp" data;
        if record "temp" data > record "current max" data
        begin
            clear record "selected splits" layout;
            copy record "all splits" layout to record "selected splits" layout;
            duplicate record "temp" to record "current max";
        end
        add 1 unit to record "all splits" layout index;
    end
    
    
    // QUALIFY STREET
    put 0 units on record "current max street" data;
    clear record "selected streets" layout;

    
    put 1 unit on record "all streets" layout index;
    loop until record "all streets" layout index > record "all streets" layout count
    begin
        put 0 units on record "temp" data;
        calculate last appeared of record "all streets" layout to record "temp" data;
        if record "temp" data > record "current max street" data
        begin
            clear record "selected streets" layout;
            copy record "all streets" layout to record "selected streets" layout;
            duplicate record "temp" to record "current max street";
        end
        add 1 unit to record "all streets" layout index;
    end
    


    if record "selected streets" layout count > 0
    and record "selected splits" layout count > 0
    begin
        clear record "lastHit Number" layout;
        Locate Number Backward record "current max street" data times from the last number to record "lastHit Number" layout;
        if record "lastHit Number" layout count > 0
        begin
            set flag "isQualified" to true;
        end
        call "get street numbers";
    end
end

method "check hits"
begin
        track last number for 1 time to record "lastN" layout;

        if record "selected splits" layout has hit each time
        and record "lastN" layout is found in record "street numbers" layout
        begin
            set flag "isQualified" to false;
            set flag "isStreetBettingOn" to false;
            set flag "isSplitBettingOn" to false;
        end
        else
        begin
            if record "selected splits" layout has hit each time
            begin
                set flag "isStreetBettingOn" to true;
            end
            if record "lastN" layout is found in record "street numbers" layout
            begin
                set flag "isSplitBettingOn" to true;
            end
        end
end

method "place bets"
begin
    if flag "isSplitBettingOn" is true
    begin
        put 200% record "progression" data on record "selected splits" layout;
    end
    if flag "isStreetBettingOn" is true
    begin
        put 100% record "progression" data on record "street numbers" layout list;
    end
end

method "get street numbers"
begin
    clear record "street numbers" layout;
    clear record "temp layout" layout;
    
    if record "selected streets" layout = street(1-3)
    begin
        duplicate record "street 1" to record "temp layout";
    end
    if record "selected streets" layout = street(4-6)
    begin
        duplicate record "street 2" to record "temp layout";
    end
    if record "selected streets" layout = street(7-9)
    begin
        duplicate record "street 3" to record "temp layout";
    end
    if record "selected streets" layout = street(10-12)
    begin
        duplicate record "street 4" to record "temp layout";
    end
    if record "selected streets" layout = street(13-15)
    begin
        duplicate record "street 5" to record "temp layout";
    end
    if record "selected streets" layout = street(16-18)
    begin
        duplicate record "street 6" to record "temp layout";
    end
    if record "selected streets" layout = street(19-21)
    begin
        duplicate record "street 7" to record "temp layout";
    end
    if record "selected streets" layout = street(22-24)
    begin
        duplicate record "street 8" to record "temp layout";
    end
    if record "selected streets" layout = street(25-27)
    begin
        duplicate record "street 9" to record "temp layout";
    end
    if record "selected streets" layout = street(28-30)
    begin
        duplicate record "street 10" to record "temp layout";
    end
    if record "selected streets" layout = street(31-33)
    begin
        duplicate record "street 11" to record "temp layout";
    end
    if record "selected streets" layout = street(34-36)
    begin
        duplicate record "street 12" to record "temp layout";
    end
    

    put 1 unit on record "temp layout" layout index;
    loop until record "temp layout" layout index > record "temp layout" layout count
    begin
        if record "temp layout" layout not = record "lastHit Number" layout
        begin
           copy record "temp layout" layout to record "street numbers" layout;
           add 1 unit on record "street numbers" layout index;
        end
       add 1 unit on record "temp layout" layout index;
    end
    
end



method "initialize"
begin
    copy list [Street(1-3),   Street(4-6),   Street(7-9),   Street(10-12),
               Street(13-15), Street(16-18), Street(19-21), Street(22-24),
               Street(25-27), Street(28-30), Street(31-33), Street(34-36)] to record "all streets" layout;
               // Street(0-2)  , Street(0-3)

    copy list [Split(1-0),  Split(1-2),
                Split(1-4),   Split(2-3),   Split(2-5),   Split(3-6),
                Split(4-5),   Split(4-7),   Split(5-6),   Split(5-8),
                Split(6-9),   Split(7-8),   Split(7-10),  Split(8-9),
                Split(8-11),  Split(9-12),  Split(10-11), Split(10-13),
                Split(11-12), Split(11-14), Split(12-15), Split(13-14),
                Split(13-16), Split(14-15), Split(14-17), Split(15-18),
                Split(16-17), Split(16-19), Split(17-18), Split(17-20),
                Split(18-21), Split(19-20), Split(19-22), Split(20-21),
                Split(20-23), Split(21-24), Split(22-23), Split(22-25),
                Split(23-24), Split(23-26), Split(24-27), Split(25-26),
                Split(25-28), Split(26-27), Split(26-29), Split(27-30),
                Split(28-29), Split(28-31), Split(29-30), Split(29-32),
                Split(30-33), Split(31-32), Split(31-34), Split(32-33),
                Split(32-35), Split(33-36), Split(34-35), Split(35-36),
                Split(2-0),   Split(3-0)]to record "all splits" layout;

     
     copy list [number 1, number 2, number 3] to record "street 1" layout;
     copy list [number 4, number 5, number 6] to record "street 2" layout;
     copy list [number 7, number 8, number 9] to record "street 3" layout;
     copy list [number 10, number 11, number 12] to record "street 4" layout;
     copy list [number 13, number 14, number 15] to record "street 5" layout;
     copy list [number 16, number 17, number 18] to record "street 6" layout;
     copy list [number 19, number 20, number 21] to record "street 7" layout;
     copy list [number 22, number 23, number 24] to record "street 8" layout;
     copy list [number 25, number 26, number 27] to record "street 9" layout;
     copy list [number 28, number 29, number 30] to record "street 10" layout;
     copy list [number 31, number 32, number 33] to record "street 11" layout;
     copy list [number 34, number 35, number 36] to record "street 12" layout;
     
     set list [1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
               3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 7,
               8, 8, 9, 9, 10, 11, 11, 12, 13, 14, 15, 15, 16, 17] to record "progression" data;
     set flag "isQualified" to false;
     set flag "isSplitBettingOn" to false;
     set flag "isStreetBettingOn" to false;
     clear record "lastHit Number" layout;
     put 0 units on record "spin count" data;
end
