﻿system "Garcia"
{
Progressione Garcia
Extremizzato da: LaRoulette.it
Spiegazione della progressione sul sito www.laRoulette.it

}
method "main"
begin
    While Starting new Session
    begin
        Set List[1,3,7] record "Progressione1" data
        copy List[Red,Black,Even,Odd,Low,High] record "lista chance" layout    //Lista indicizzata delle chance per la scelta
        copy List[Black,Red,Odd,Even,High,Low] record "lista opposti" layout   //lista indicizzata delle chance opposte
        Call "Parametri"      //Routine di scelta combinazione e progressione
        put 0 Record"Progressione1" data index
        put 0 Record"Progressione2" data index
        put 0 record"boules" data
        Set Flag "Fase1" true     // Flag che determina le due fasi di gioco
        exit
    end
    while each Spin
    begin
        if flag"Fase1" True
        begin
            call "Gioco"     // prima fase di gioco sull'alternanza
        end
        else
        begin
            call "Recupero"  // seconda fase di gioco sulla serie
        end     
        Add 1 record"boules" data
    end
end
method "Gioco"
begin
    if Net >0 // se vince chiude l'attacco
    begin
        Put 1 record"Progressione1"Data index
        Put 0 record"passivo"Data
        Call "Punta"
    end
    else  // se perde
    begin
        add 100%  All Bets record "passivo" data // mette la sconfitta nel passivo
        if record"Progressione1"Data index<3 // se la progressione non è al terzo
        begin
            Add 1 record"Progressione1"Data index //aumenta di un termine la progressione
            Call "Punta"
        end
        else //se arriva al terzo termine
        begin
            set Flag "Fase1" false
            Put 1 record"Progressione1"Data index
			// prepara la puntata dividedo lo scoperto e poi la esegue
			call "Dividi Scoperto"
    		call "Punta recupero"
        end
    end

end
method "Recupero"
begin
    if net<0        // controlla se ha perso
	or record"Progressione2"Data index >3  // o se è arrivato alla fine
    begin
        add 100% All Bets record "passivo" data  // mette la sconfitta nel passivo
		Add 100% record "passivo" data record "scoperto" data  //consolida il passivo nel nuovo scoperto
        Put 0 record "Passivo" data       // Azzera il passivo parziale
        set Flag "Fase1" true             // abilita la fase di gioco sull'opposta
        put 1 record"Progressione2"Data index
        Call "Punta"                      // piazza la puntata
    end
    else
    begin
        if Net >0 // se vince continua a giocare
    	begin
			subtract 100% All Bets record "passivo" data  // toglie la vincita dal passivo
			call "Punta recupero"            // va a puntare per il recupero
    	end
    end

end
method "Punta"
begin
    // a seconda della combinazione scelta assegna il layout uscito nel record Uguale
	if record "lista chance" layout index =1
	or record "lista chance" layout index =2
	begin
		 copy last Black-Red record "Uguale" layout
	end
	if record "lista chance" layout index =3
	or record "lista chance" layout index =4
	begin
		 copy last even-odd record "Uguale" layout
	end
	if record "lista chance" layout index =5
	or record "lista chance" layout index =6
	begin
		 copy last low-high record "Uguale" layout
	end
	// confronta la combinazione uscita con quella in gioco
	If record "Uguale" Layout = record "chance" layout
    begin  // Se è uguale gioca sull'opposta
        put 100% record"Progressione1"Data sul record "Opposta" Layout
    end
    else
    begin  // se è diversa gioca sulla combinazione scelta
        put 100% record"Progressione1"Data sul record "Chance" Layout
    end
	
end

method "Dividi Scoperto"
begin
    {   Crea i termini della progressione da giocare per il recupero per farlo
        Elabora un doppio ciclo continuo sui tre termini della progressione,
        e ad ognuno di essi aggiunge 1 finchè non si è raggiunto il totale dei pezzi dello scoperto}
	add 100% record "passivo" data record "scoperto"Data
	put 0 record "passivo" data
	Set List[0,0,0] record "Progressione2" data
	put 1 record "Temp" data
    Put 1 record "Progressione2" data index
    loop until record "Temp" data > record "Scoperto" data
    begin
        add 1 record "Progressione2" data
		add 1 record "Progressione2" data index
        If record "Progressione2" data index>3
        begin
            put 1 record "Progressione2" data index
        end
        add 1 record "Temp" data
    end
	put 1 record "Progressione2" data index  // mette l'indice sul primo termine
end

method "Punta recupero"
begin
    // a seconda della combinazione scelta assegna il layout uscito nel record Uguale
	if record "lista chance" layout index =1
	or record "lista chance" layout index =2
	begin
		 copy last Black-Red record "Uguale" layout
	end
	if record "lista chance" layout index =3
	or record "lista chance" layout index =4
	begin
		 copy last even-odd record "Uguale" layout
	end
	if record "lista chance" layout index =5
	or record "lista chance" layout index =6
	begin
		 copy last low-high record "Uguale" layout
	end
    // confronta la combinazione uscita con quella in gioco
	If record "Uguale" Layout = record "Chance" layout
    begin     // se è uguale gioca la combinazione prescelta
        put 100% record"Progressione2"Data sul record "Chance" Layout
    end
    else
    begin    // altrimenti gioca l'opposta
        put 100% record"Progressione2"Data sul record "Opposta" Layout
    end
    add 1  record"Progressione2"Data index   //avanza di 1 termine nella progressione
//----------

end
method "Parametri"
begin
	Group
	begin
  		 Input Dropdown "Che chance vuoi giocare?
         1:=Rosso
         2:=Nero
		 3:=Pari
		 4:=Dispari
		 5:=Manque
		 6:=Passe" to record "Scelta" data

	  Display "Inserite i valori per i primi
	  tre termini della progressione originale [1-3-7]"
  	  
	  Input Data "Progressione 1° termine:" nel record "Step1" data
  	  Input Data "Progressione 2° termine:" nel record "Step2" data
	  Input Data "Progressione 3° termine:" nel Record "Step3" data

	end
	
	Put 100% record "Scelta" data nel record "lista chance" layout index
	Copy record "lista chance" layout nel record "Chance" Layout
	Put 100% record "Scelta" data nel record "lista opposti" layout index
	Copy record "lista opposti" layout nel record "Opposta" Layout
		
	Put 1 record "Progressione1" data index
	Put 100% record "Step1" data nel record "Progressione1" data
	Put 2 record "Progressione1" data index
	Put 100% record "Step2" data nel record "Progressione1" data
	Put 3 record "Progressione1" data index
	Put 100% record "Step3" data nel record "Progressione1" data
end  

