system "D12 v4"
{
*************************************
*        System by gigisulivan      *
*         on the VIP Lounge         *
*************************************
          Rx-ed by St0rm0r
-------------------------------------
           00-c0mpatible
-------------------------------------
1. Wait until 12 consecutive different numbers. (user input)
2. Bet 1 unit on each of them.
3a. After a loss, increase bet by one.
3b. After a loss, increase bet to cover losses in 1 spin.
3c. After a loss, leave bet unit as it is.
4. After a win, take off the bet from the number that hit.
5a. After a win, increase the other bets by one.
5b. After a win, increase bet to cover losses in 1 spin.
5c. After a win, decrease the other bets to one.
5d. After a win, leave bet unit as it is.
6. Start over after second hit. (user input)
7. User inputs: Starting Bankroll, Target profit & Stop loss
-------------------------------------
}
method "main"
begin
// section 1: do this once
while starting new session
    begin
    call "init"
    exit
    end

// section 2: do the tracking
track last number for record"#N"data record"last N"layout

if bankroll <= record"stop loss"data or bankroll >= record"win target"data
    begin
    call "reset"
    exit
    end

subtract 100% net record"loss"data
if record"loss"data < 0
    begin
    put 0 record"loss"data
    end

// section 3: act on a loss
if net < 0
    begin
    if record"AL"data = 1
        begin
        add 1 record"pro"data
        end
    if record"AL"data = 2
        begin
        call "calculate betting unit"
        end
    end

// section 4:act on a win
if net > 0
    begin
    call "remove last number"
    if record"AW"data = 1
        begin
        add 1 record"pro"data
        end
    if record"AW"data = 2
        begin
        call "calculate betting unit"
        end
    if record"AW"data = 3
        begin
        put 1 record"pro"data
        end
    add 1 record"#wins"data
    if record"#wins"data = record"#W"data
        begin
        call "reset"
        exit
        end
    end

// section 5:act when not qualified
if flag "qualified" false
    begin
    call "check all number to be unique"
    duplicate record"last N" record"history"
    if record"history"layout count = record"#N"data
        begin
        set flag "qualified" true
        end
    end

// section 6:act when qualified
if flag "qualified" true
    begin
    //bet
    put 100% record"pro"data record"history"layout list
    end
end

// subroutines
method "init"
begin
group
    begin
    display "D12 v3 by gigisulivan"
    display "--------------------------------------"
    input data "Starting Bankroll" bankroll
    input data "Track for x consecutive different numbers (e.g.12)  " record"#N"data
    input dropdown "After a loss
    1:= increase bet by 1 unit
    2:= increase bet to cover losses in 1 spin
    3:= leave bet unit as it is" record"AL"data
    input dropdown "After a win
    1:= increase the other bets by 1
    2:= increase bet to cover losses in 1 spin
    3:= decrease the other bets to 1
    4:= leave bet unit as it is" record"AW"data
    input data "Restart session after x wins (e.g.2)" record"#W"data
    input data "Win target:" record"WT"data
    input data "Stop Loss:" record"SL"data
    end
call "reset"
end

method "reset"
begin
put 100% bankroll record"win target"data
add 100% record"WT"data record"win target"data
put 100% bankroll record"stop loss"data
subtract 100% record"SL"data record"stop loss"data
clear record"history"layout
put 1 record"history"layout index
set flag "qualified" false
put 1 record"pro"data
put 0 record"loss"data
put 0 record"#wins"data
end

method "calculate betting unit"
begin
call "get #numbers to be played"
put 0 record"pro"data
put 100% record"loss"data record"temp"data
loop until record"temp"data < 0
    begin
    add 1 record"pro"data
    add 100% record"#numbers"data record"temp"data
    subtract 36 record"temp"data
    end
end

method "get #numbers to be played"
begin
put 0 record"#numbers"data
put 1 record"history"layout index
loop until record"history"layout index > record"history"layout count
    begin
    add 1 record"#numbers"data
    add 1 record"history"layout index
    end
end

method "remove last number"
begin
clear record"ref"layout
put 1 record"ref"layout index
put 1 record"history"layout index
loop until record"history"layout index > record"history"layout count
    begin
    if record"history"layout not = record"last N"layout
        begin
        copy record"history"layout record"ref"layout
        add 1 record"ref"layout index
        end
    add 1 record"history"layout index
    end
duplicate record"ref" record"history"
end

method "check all number to be unique"
begin
set flag "unique" true
clear record"temp"layout
put 1 record"temp"layout index
put 1 record"last N"layout index
loop until record"last N"layout index > record"last N"layout count
    begin
    if record"last N"layout is found record"temp"layout
        begin
        copy record"last N"layout record"pointer"layout
        set flag "unique" false
        end
    if flag "unique" true
        begin
        copy record"last N"layout record"temp"layout
        add 1 record"temp"layout index
        end
    add 1 record"last N"layout index
    end
if flag "unique" false
    begin
    //goto pointer and repeat action
    put 1 record"last N"layout index
    loop until record"last N"layout = record"pointer"layout
        begin
        add 1 record"last N"layout index
        end
    clear record"temp"layout
    put 1 record"temp"layout index
    add 1 record"last N"layout index
    loop until record"last N"layout index > record"last N"layout count
        begin
        copy record"last N"layout record"temp"layout
        add 1 record"temp"layout index
        add 1 record"last N"layout index
        end
    end

duplicate record"temp" record"last N"
end
