system "Reward_System"

{REWARD System

for Even Money Bets in Roulette

For instructions, download documentation
}
method "main"
begin
    While Starting a New Session
    begin
        Call "Initialize";
        Call "Input Data";
        Exit;
    end
    
    Call "Check Win-Loss";
    Call "Store Layout";
    Call "Calculate Next Bet";
    Call "Bet Over Maximum";
    Put 100 % of Record "Bet Amount" data on Record "Layout to bet" layout;
end

method "Calculate Next Bet"
begin
    Put 1 on record "Tracking list" data index;
    Put 100 % of Record "Tracking list" data on Record "Bet Amount" data;
    
    While Flag "Won first bet" is True
    begin
        Put 2 on record "Tracking list" data index;
        Add 100% of Record "Tracking list" data on Record "Bet Amount" data;
        Add 1 on Record "Tracking list" data index;
        Add 100% of Record "Tracking list" data on Record "Bet Amount" data;
    end
end

method "Check Win-Loss"
begin
    While Record "Layout to bet" layout has lost each time
    begin
        Set Max on record "Tracking list" data index;
        Add 1 on Record "Tracking list" data index;
        Put 100% of Record "Bet Amount" data on Record "Tracking list" data;
    end
    
    While Record "Layout to bet" layout has won each time
    And  Flag "Won first bet" is False
    begin
        Put 1  on Record "Temporary data" data;
        Call "Cross Out Number";
        Set Flag "Won first bet" to True;
        Call "Check if Sequence Won";
        Call "Check Maximum Sequences Won";
        Return;
    end
    
    While Record "Layout to bet" layout has won each time
    And  Flag "Won first bet" is True
    begin
        Put 3  on Record "Temporary data" data;
        Call "Cross Out Number";
        Call "Check if Sequence Won";
        Call "Check Maximum Sequences Won";
    end
end

method "Cross Out Number"
begin
    Loop until record "Temporary data" data = 0
    begin
        Move list up by 1 on record "Tracking list" data;
        Set Max to record "Tracking list" data index;
        Subtract 1  on Record "Temporary data" data;
    end
end

method "Check if Sequence Won"
begin
    While Record "Tracking list" data count = 0
    begin
        Set Flag "Won first bet" to False;
        Add 1  on Record "Total Sequences Won" data;
        Put 100 % of Record "Minimum Bet" data on Record "Tracking list" data;
        Put 1 on Record "Tracking list" data index;
    end
end

method "Check Maximum Sequences Won"
begin
    While Record "Maximum Sequences" data not = 0
    And  Record "Total Sequences Won" data >= Record "Maximum Sequences" data 
    begin
        Display "Your Maximum Sequences has been Reached.
                  
                  Session is Stop.";
        Stop Session;
    end
end

method "Store Layout"
begin
    While Number 0 has hit each time
    Or Number 00 has hit each time
    begin
        Return;
    end
    
    While Record "Selected Layout" data = 1
    begin
        Call "Layout Even-Odd";
        Return;
    end
    
    While Record "Selected Layout" data = 2
    begin
        Call "Layout Red-Black";
        Return;
    end
    
    While Record "Selected Layout" data = 3
    begin
        Call "Layout High-Low";
    end
end

method "Layout Even-Odd"
begin
    While Even has hit each time
    begin
        Copy Even to the Record "Layout to bet" layout;
    end
    Else
    begin
        Copy Odd to the Record "Layout to bet" layout;
    end
end

method "Layout Red-Black"
begin
    While Red has hit each time
    begin
        Copy Red to the Record "Layout to bet" layout;
    end
    Else
    begin
        Copy Black to the Record "Layout to bet" layout;
    end
end

method "Layout High-Low"
begin
    While high has hit each time
    begin
        Copy high to the Record "Layout to bet" layout;
    end
    Else
    begin
        Copy low to the Record "Layout to bet" layout;
    end
end

{=================================================================
This Area is added to provide a way to Split the Maximum Tracking Bets
into Smaller Pieces
=================================================================
}
method "Bet Over Maximum"
begin
    While Record "Maximum Bet" data not = 0
    And  Record "Bet Amount" data > Record "Maximum Bet" data 
    begin
        Put 0 on Record "Bet Amount" data;
        Put 1 on Record "Tracking list" data index;
        Call "Total Tracking Amounts";
        Clear Record "Tracking list" data;
        Put 1 on Record "Tracking list" data index;
        Call "Set New Tracking Amount";
        Call "Calculate Next Bet";
    end
end

method "Set New Tracking Amount"
begin
    Loop Until Record "Bet Amount" data <= Record "Maximum Tracking Amount" data
    begin
        Subtract 100% of Record "Maximum Tracking Amount" data on
                                                                Record "Bet Amount" data;
        Put 100% of Record "Maximum Tracking Amount" data on Record "Tracking list" data;
        Add 1 on Record "Tracking list" data index;
    end

    Put 100% of Record "Bet Amount" data on Record "Tracking list" data;
end

method "Total Tracking Amounts"
begin
    Loop Until record "Tracking list" data index > record "Tracking list" data count
    begin
        Add 100% of record "Tracking list" data to record "Bet Amount" data;
        Add 1 to record "Tracking list" data index;
    end
end

method "Initialize"
begin
    Set Flag "Won first bet" to false;
    Clear Record "Total Sequences Won" data;
    Clear Record "Bet Amount" data;
    Clear Record "Starting Bankroll" data;
    Clear Record "Tracking list" data;
    Clear Record "Layout to bet" data;
    Clear Record "Maximum Tracking Amount" data;
    Clear Record "Minimum Bet" data;
    Clear Record "Maximum Bet" data;
    Clear Record "Maximum Sequences" data;
    Clear Record "Table Layout" data;
    Clear Record "Selected Layout" data;
    Clear Record "Temporary data" data;
    Clear Record "Temporary data" data;
    Clear Record "Temporary data" data;
    Put 0  on Record "Total Sequences Won" data;
    Put 1  on Record "Minimum Bet" data;
    Put 100 % of Bankroll on Record "Starting Bankroll" data;
end

method "Input Data"
begin
    Set Flag "Input Ok" to False;
    
    Loop Until Flag "Input Ok" is True
    begin
        Group
        begin
            Input Dropdown "What Table Layout do you want to use?

                      1:=European Layout
                      2:=American Layout" to Record "Table Layout" data;

            Input Dropdown "Make a Layout Selection

                      1:=Even/Odd
                      2:=Red/Black
                      3:=High (19-36)/Low (1-18)" to Record "Selected Layout" data;

            Input Data "Enter your starting Bankroll." to Record "Starting Bankroll" data;
            Input Data "What is your Minimum Bet?" to Record "Minimum Bet" data;
            Input Data "What is your Maximum Bet?

                      0 = No Maximum." to Record "Maximum Bet" data;

            Input Data "How many Sequences to Win in this Session?

                      0 = Unlimited Sequences." to Record "Maximum Sequences" data;
        end

        Set Flag "Input Ok" to True;
        Put 100 % of Record "Starting Bankroll" data on Bankroll;

        While Record "Minimum Bet" data = 0
        begin
            Display "Minimum Bet cannot be 0 units.";
            Set Flag "Input Ok" to False;
        end
        else
        begin
            While Record "Maximum Bet" data not = 0
            And  Record "Maximum Bet" data <= Record "Minimum Bet" data
            begin
                Display "Maximum Bet cannot be Less than or Equal to Minimum Bet";
                Set Flag "Input Ok" to False;
            end
        end
    end
    
    Put 100 % of Record "Minimum Bet" data on Record "Tracking list" data;
    
    While Record "Maximum Bet" data not = 0
    begin
        Put 100 % of Record "Maximum Bet" data on Record "Maximum Tracking Amount" data;
        Divide 3 on Record "Maximum Tracking Amount" data;
    end
    
    While Record "Table Layout" data = 1
    begin
        Load Single Wheel;
    end
    Else
    begin
        Load Double Wheel;
    end
end
