InizioSpecificaStatiClasse Partecipante

	Stato: {NonInGioco, InGioco}

	Variabili di stato ausiliarie:
		--
		
	Stato iniziale:
		stato = NonInGioco
		
FineSpecificaStati

InizioSpecificaTransizioniClasse Partecipante

	Transizione: NonInGioco --> InGioco
	Evento: inizioPartita
	Condizione: --
	Azione:
		pre: evento.dest == this
		post: this.penitenzeSubite = empty


	Transizione: InGioco --> InGioco
	Evento: bottiglia
	Condizione: --
	Azione:
		pre: evento.dest == this
		post: nuovoevento = bottiglia AND nuovo.dest <> this AND 
		      IF evento.mitt <> null AND evento.mitt.getClass() <> this.getClass() 
			  THEN { sia pe = this.partita.scegliPenitenzaRandom()
					 IF <this,pe> not in penitenzeSubite THEN penitenzeSubite = penitenzeSubite@pre UNION <this,pe,1>
														 ELSE penitenzeSubite = penitenzeSubite@pre UNION <this,pe,numeroVolte(<this,pe>)@pre+1>
				   }
		
	Transizione: InGioco --> NonInGioc
	Evento: fine
	Condizione: --
	Azione:
		pre: evento.dest == this
		post: --

FineSpecificaTransizioni

FineSpecifica
