'-> Adventures Conceiver by Stefano Regattin 
'i> 12 giugno 1996 
'm> 13,14,15,16,17,19,20,21,22,26,27,28,30 giugno 1996 
'm> 1,2,3,4,5,6,13,14,15,17,18,20,21,23 luglio 1996
'm> 4,17,31 agosto 1996
'm> 7,14,15,16,28 settembre 1996 
'm> 2,8,20,21 ottobre 1996 
'm> 1,2,5 novembre 1996
'm> 23,25 febbraio 1997
'm> 1,2,3,4,5,6,7,8 marzo 1997 
'm> 29 maggio 1997 
'm> 6,12,13,14 giugno 1997 
'm> 29 agosto 1997 
'm> 10,19,28,29,30 settembre 1997
'm> 1,6,31 ottobre 1997
'm> 1,3,4,5,6,7,8,9,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 novembre 1997 
'm> 1,2,3,4,5,6,7,8,9,11,12,13,14,16,17,22 dicembre 1997 
'm> 4 gennaio 1998 
'm> 28,31 marzo 1998 
'm> 22,23,24,25,26,27,28,30 aprile 1998
'm> 1,2,5,7,8,9,10 maggio 1998 
'm> 13,15,16,17,18,19,20,21,23,26,27,28,29 giugno 1998 
'm> 2,3,5,6,7,10,11,12,13,16,17,18,19,20,21,22,25,28,30,31 luglio 1998 
'm> 2,3,4,5,6,7,9,10,15 agosto 1998  
'm> 7,11,20 settembre 1998   
'm> 5,6,7,8,9,10,14,16,17,20,23,27,28 novembre 1998        
'm> 4,5,6,7,11,15,17,22,24,29,31 dicembre 1998       
'm> 5,14 gennaio 1999  
'm> 2,10,15,27 febbraio 1999   
'm> 1,9 marzo 1999 
'm> 14 ottobre 1999
'm> 1,3,11,14,23 novembre 1999     
'm> 20 dicembre 1999 
'm> 24 febbraio 2000 
'm> 22 agosto 2000 
'm> 8 gennaio 2001 
'm> 3 aprile 2001
'm> 3 giugno 2001
'm> 9 luglio 2001
'm> 14 ottobre 2001
'----------------------------------------------------------------------------- 
'Adventures Conceiver è stato realizzato da me con AMOS Professional 2.0. Può
'essere liberamente distribuito. Può essere modificato, purché mi si citi nel
'programma finale risultante. Se si decide di utilizzarlo, spedire 5 Euro al 
'seguente nominativo ed indirizzo: Stefano Maria Regattin, piazza Pietro 
'Gasparri 4/U, 20161 Milano, Italia. Buon divertimento, grazie e ciao! 
'----------------------------------------------------------------------  

Set Buffer 910

FILEREQUESTERMUSICA=True

Data "E' l'alba","E' mattina","E' giorno","E' pomeriggio","E' il tramonto"
Data "E' sera","E' notte"
Data "Il cielo si sta schiarendo","Il sole si sta alzando","Il sole è alto"
Data "Il sole sta calando","Il cielo si sta oscurando"
Data "La luna si sta alzando","La luna è alta","La luna sta calando"
Data "E' nuvoloso","Sta piovendo","Sta nevicando","Sta grandinando"
Data "C'è la nebbia","E' buio"

Data "N","Nord","NE","NordEst","E","Est","SE","SudEst","S","Sud","SO"
Data "SudOvest","O","Ovest","NO","NordOvest","Sopra","Sopra","Sotto","Sotto"

Data "albero","alberi",100000,"albero rotto","alberi rotti",75000,%10000000,0
Data "arco","archi",3000,"arco rotto","archi rotti",1500,%10001000000,9
Data "arancia","arance",250,"buccia di arancia","bucce di arancia",10,1,1
Data "banana","banane",300,"buccia di banana","bucce di banana",15,1,1
Data "bastone","bastoni",1000,"bastone rotto","bastoni rotti",750,%1000000,2
Data "cedro","cedri",200,"buccia di cedro","bucce di cedro",10,1,1
Data "coltello","coltelli",2000,"coltello rotto","coltelli rotti",1000,%1000000,10
Data "dattero","datteri",25,"guscio di dattero","gusci di dattero",5,1,1
Data "fico","fichi",220,"buccia di fico","bucce di fico",10,1,1
Data "foglietto","foglietti",2,"foglietto strappato","foglietti strappati",1,%1000,0
Data "fragola","fragole",10,"picciolo di fragola","piccioli di fragola",1,1,1
Data "freccia","frecce",100,"freccia rotta","freccie rotte",50,%101000000,1
Data "limone","limoni",200,"buccia di limone","bucce di limone",10,1,1
Data "maglia","maglie",5000,"maglia rotta","maglie rotte",2500,%100,19
Data "mandarino","mandarini",175,"buccia di mandarino","bucce di mandarino",10,1,1
Data "mapo","mapo",200,"buccia di mapo","bucce di mapo",10,1,1
Data "masso","massi",50000,"masso rotto","massi rotti",50000,0,0
Data "mela","mele",250,"torsolo di mela","torsoli di mela",50,1,1
Data "pera","pere",250,"torsolo di pera","torsoli di pera",50,1,1
Data "pompelmo","pompelmi",275,"buccia di pompelmo","bucce di pompelmo",10,1,1
Data "spada","spade",7500,"spada rotta","spade rotte",5000,%1000000,20

Data "anarchico","anarchici","bandito","banditi","barbaro","barbari"
Data "bastardo","bastardi","bravotto","bravotti","cretino","cretini"
Data "debosciato","debosciati","deficiente","deficienti"
Data "delinquente","delinquenti","estremista","estremisti"
Data "fanatico","fanatici","fanfarone","fanfaroni","fellone","felloni"
Data "fetente","fetenti","fessacchiotto","fessacchiotti","fesso","fessi"
Data "guerrafondaio","guerrafondai","idiota","idioti","imbecille","imbecilli"
Data "malfattore","malfattori","maniaco","maniaci","maramaldo","maramaldi"
Data "negriero","negrieri","ribelle","ribelli","rimbambito","rimbambiti"
Data "pervertito","pervertiti","pirata","pirati","pirlone","pirloni"

Data "Acqua",5
Data "Bosco",2
Data "Collina",1
Data "Foresta",4
Data "Ghiaccio",3
Data "Montagna",2
Data "Neve",3
Data "Oasi",0
Data "Palude",3
Data "Pianura",0
Data "Roccia",4
Data "Sabbia",1

Data "Adventures Conceiver è stato realizzato da me con AMOS Professional 2.0"
Data ". Può essere liberamente distribuito. Può essere modificato, purché mi "
Data "si citi nel programma finale risultante. Se si decide di utilizzarlo, s"
Data "pedire 5 Euro al seguente nominativo ed indirizzo: Stefano Maria Regatt"
Data "in, piazza Pietro Gasparri 4/U, 20161 Milano, Italia. Buon divertimento"
Data ", grazie e ciao!"

MESSAGGIO3$="Adventures Conceiver by Stefano Maria Regattin"

PROLOGO$="L'avventura preimpostata è dimostrativa. Non c'è uno scopo definito"
PROLOGO$=PROLOGO$+". Gli altri personaggi prenderanno un'oggetto e cercherann"
PROLOGO$=PROLOGO$+"o di usarlo su un personaggio presente dove si trovano, pe"
PROLOGO$=PROLOGO$+"r cui anche sul tuo personaggio; dopo di ciò si muoveranno"
PROLOGO$=PROLOGO$+". Usa tutti i comandi e guarda cosa succede."

_INTERFACCIA$="SIze 320,144;"
_INTERFACCIA$=_INTERFACCIA$+"BAse ScreenWidth SizeX- 2/ ,ScreenHeight SizeY- 2/;"
_INTERFACCIA$=_INTERFACCIA$+"INk 1,0,0;GraphicBox 0,0,SizeX 1-,SizeY 1-;"
_INTERFACCIA$=_INTERFACCIA$+"SetVar 0,'EsseErre Software Solutions';"
_INTERFACCIA$=_INTERFACCIA$+"PrintOutline 0 VA CentreX,8,0 VA,0,1;"
_INTERFACCIA$=_INTERFACCIA$+"SetVar 0,'presenta...';"
_INTERFACCIA$=_INTERFACCIA$+"PrintOutline 0 VA CentreX,16,0 VA,0,1;"
_INTERFACCIA$=_INTERFACCIA$+"SetVar 0,'* Adventures Conceiver 1.5 *';"
_INTERFACCIA$=_INTERFACCIA$+"PrintOutline 0 VA CentreX,32,0 VA,0,1;"
_INTERFACCIA$=_INTERFACCIA$+"SetVar 0,'by Stefano Maria Regattin';"
_INTERFACCIA$=_INTERFACCIA$+"PrintOutline 0 VA CentreX,48,0 VA,0,1;"
_INTERFACCIA$=_INTERFACCIA$+"SetVar 0,'Se decidi di utilizzarlo';"
_INTERFACCIA$=_INTERFACCIA$+"PrintOutline 0 VA CentreX,64,0 VA,0,1;"
_INTERFACCIA$=_INTERFACCIA$+"SetVar 0,'spedisci cinque Euro';"
_INTERFACCIA$=_INTERFACCIA$+"PrintOutline 0 VA CentreX,80,0 VA,0,1;"
_INTERFACCIA$=_INTERFACCIA$+"SetVar 0,'al seguente indirizzo:';"
_INTERFACCIA$=_INTERFACCIA$+"PrintOutline 0 VA CentreX,96,0 VA,0,1;"
_INTERFACCIA$=_INTERFACCIA$+"SetVar 0,'piazza Pietro Gasparri, 4/U';"
_INTERFACCIA$=_INTERFACCIA$+"PrintOutline 0 VA CentreX,112,0 VA,0,1;"
_INTERFACCIA$=_INTERFACCIA$+"SetVar 0,'20161 Milano - Italia';"
_INTERFACCIA$=_INTERFACCIA$+"PrintOutline 0 VA CentreX,128,0 VA,0,1;"
_INTERFACCIA$=_INTERFACCIA$+"RunUntil 0,%1111;EXit;"

BANCO=65535 : BANCOMODULO=1023 : NUMMASE=31 : NUMMASCO=255 : NUMMASL=255
NUMMASO=255 : NUMMASP=255 : NUMMASR=255 : NUMMASS=255 : PESOS=1
'----------------------------------------------------------------------------
'Per un difetto di AMOS Professional non si può assegnare un valore maggiore 
' di 1023 al banco di memoria da usare con il comando Track Load e Track Play
'----------------------------------------------------------------------------- 
Global EPILOGO$,FILE$,MESSAGGIO1$,MESSAGGIO3$,MERITI$,NOMEFILE$,PROLOGO$
Global _INTERFACCIA$
Global ANEMICI,BANCO,BANCOMODULO,CATEGORIADEGLIOGGETTI,CARATTEREMESSAGGIO
Global COMPIUTAAZIONE,CONDIZIONEG,EDIFICIO,FILEREQUESTERMUSICA
Global INEMICITISVEGLIANO,INEMICISVEGLIANOPERSONAGGIOP,LUOGO
Global M0DOVISUALIZZAZIONETEMPO,M0DIFICA,NUMEROCO,NUMEROE,NUMEROL,NUMERON
Global NUMEROO,NUMEROP,NUMEROR,NUMMASCO,NUMMASE,NUMMASL,NUMMASO,NUMMASP
Global NUMMASR,NUMMASS,OGGETTO,OGGETTOUSANTE,OGGETTOUSATO,PERSONAGGIO
Global PERSONAGGIOSUCUIPERSONAGGIO0HAUSATO,PESOS,REGIONE,SENZAMEMORIA,STANZA
Global TEMP0TRASCORSO,ULTIMALINEA,_MUSICA
Dim CONDIZIONEG$(13),DESCRIZIONECO$(NUMMASCO),DESCRIZIONEE$(NUMMASE)
Dim DESCRIZIONEL$(NUMMASL),DESCRIZIONEP$(NUMMASP)
Dim DESCRIZIONES$(NUMMASS,NUMMASE),DREZIONE$(9),DREZIONEL$(9),FASEG$(6)
Dim NOMEE$(NUMMASE),NOMEL$(NUMMASL),NOMEP$(NUMMASP),NOMEPCO$(NUMMASCO)
Dim NOMEPN$(27),NOMEPRO$(NUMMASCO),NOMER$(NUMMASR),NOMES$(NUMMASS,NUMMASE)
Dim NOMESCO$(NUMMASCO),NOMESN$(27),NOMESRO$(NUMMASCO),TESTOO$(1),TIPOL$(11)
Dim AZIONEP(7,NUMMASP),CATEGORIAO(NUMMASO),CAMMINOP(NUMMASP)
Dim C0STITUZIONEP(NUMMASP),DESTREZZAP(NUMMASP),DREZIONEL(9,NUMMASL)
Dim DREZIONEPRESAP(NUMMASP),DREZIONEOPPOSTAAQUELLAPRESAP(NUMMASP)
Dim DREZIONES(9,NUMMASS,NUMMASE),FINEA(7,NUMMASP),F0RZAP(NUMMASP)
Dim INIZIOSONNOP(NUMMASP),LUOGODIDESTINAZIONEP(NUMMASP),NUMEROS(NUMMASE)
Dim OGGETTODATOOLASCIATO(NUMMASCO),OGGETTODELPERSONAGGIO0(NUMMASCO)
Dim OGGETTIDIA(NUMMASCO),OGGETTINELLUOGO(NUMMASCO),PARAAAZIONEP(7,NUMMASP)
Dim PARABAZIONEP(7,NUMMASP),PARACAZIONEP(7,NUMMASP),PARATIPOCO(NUMMASCO)
Dim PARATIPOL(11),PERSONAGGIOVISIBILEP(NUMMASP),PESOCO(NUMMASCO)
Dim PESONETTOP(NUMMASP),PESOP(NUMMASP),PESORESTOCO(NUMMASCO)
Dim POSIZIONEA(NUMMASP),POSIZIONEE(NUMMASL),POSIZIONEO(NUMMASO)
Dim POSIZIONEP(NUMMASP),REGIONEL(NUMMASL),RESISTENZAP(NUMMASP)
Dim RESTODELPERSONAGGIO0(NUMMASCO),RESTIDIA(NUMMASCO),RESTINELLUOGO(NUMMASCO)
Dim SOLDIL(NUMMASL),SOLDIP(NUMMASP),SOLDIS(NUMMASS,NUMMASE)
Dim SOLDIRICEVUTIP(NUMMASP),SONNOP(NUMMASP),TEMP0DIATTRAVERSAMENTOP(NUMMASP)
Dim TESTOO(NUMMASO),TIPOCO(NUMMASCO),TIPOL(NUMMASL),TIPOO(NUMMASO)
Dim TIPOP(NUMMASP)
Global CONDIZIONEG$(),DESCRIZIONECO$(),DESCRIZIONEE$(),DESCRIZIONEL$()
Global DESCRIZIONEP$(),DESCRIZIONES$(),DREZIONE$(),DREZIONEL$(),FASEG$()
Global NOMEE$(),NOMEL$(),NOMEP$(),NOMEPCO$(),NOMEPN$(),NOMEPRO$(),NOMER$()
Global NOMES$(),NOMESCO$(),NOMESN$(),NOMESRO$(),TESTOO$(),TIPOL$()
Global AZIONEP(),CATEGORIAO(),CAMMINOP(),C0STITUZIONEP(),DESTREZZAP()
Global DREZIONEL(),DREZIONEPRESAP(),DREZIONEOPPOSTAAQUELLAPRESAP(),DREZIONES()
Global FINEA(),F0RZAP(),INIZIOSONNOP(),LUOGODIDESTINAZIONEP(),NUMEROS()
Global OGGETTODATOOLASCIATO(),OGGETTODELPERSONAGGIO0(),OGGETTIDIA()
Global OGGETTINELLUOGO(),PARAAAZIONEP(),PARABAZIONEP(),PARACAZIONEP()
Global PARATIPOCO(),PARATIPOL(),PERSONAGGIOVISIBILEP(),PESOCO(),PESONETTOP()
Global PESOP(),PESORESTOCO(),POSIZIONEA(),POSIZIONEE(),POSIZIONEO()
Global POSIZIONEP(),REGIONEL(),RESISTENZAP(),RESTODELPERSONAGGIO0(),RESTIDIA()
Global RESTINELLUOGO(),SOLDIL(),SOLDIP(),SOLDIS(),SOLDIRICEVUTIP(),SONNOP()
Global TEMP0DIATTRAVERSAMENTOP(),TESTOO(),TIPOCO(),TIPOL(),TIPOO(),TIPOP()
Proc SETTASCHERMO
Proc ARCOBALENO
For A=0 To 6
 Read DATO$ : FASEG$(A)=DATO$
Next A
For A=0 To 13
 Read DATO$ : CONDIZIONEG$(A)=DATO$
Next A
For A=0 To 9
 Read DATO$ : DREZIONEL$(A)=DATO$
 Read DATO$ : DREZIONE$(A)=DATO$
Next A
Proc INIZIALIZZALEVARIABILI
NUMEROCO=20 : NUMEROE=0 : NUMEROL=127 : NUMEROO=127 : NUMEROP=20 : NUMEROR=1
NUMEROS(0)=0
Proc _ORDINALUOGHI[127,8,0,True]
For A=0 To NUMEROCO
 Read DATO$ : NOMESCO$(A)=DATO$
 Read DATO$ : NOMEPCO$(A)=DATO$
 Read DATO : PESOCO(A)=DATO
 Read DATO$ : NOMESRO$(A)=DATO$
 Read DATO$ : NOMEPRO$(A)=DATO$
 Read DATO : PESORESTOCO(A)=DATO
 Read DATO : TIPOCO(A)=DATO
 Read DATO : PARATIPOCO(A)=DATO
Next A
If NUMEROE>-1
 For A=0 To NUMEROE
  POSIZIONEE(A)=Rnd(NUMEROL)
  For B=0 To NUMEROS(A)
   SOLDIS(B,A)=Rnd(19)
  Next B
 Next A
End If 
For A=0 To 27
 Read DATO$ : NOMESN$(A)=DATO$
 Read DATO$ : NOMEPN$(A)=DATO$
Next A
For A=0 To 11
 Read DATO$ : TIPOL$(A)=DATO$
 Read DATO : PARATIPOL(A)=DATO
Next A
Randomize Timer
For A=0 To NUMEROL
 TIPOL(A)=Rnd(11)
 SOLDIL(A)=Rnd(1)
Next A
For A=0 To NUMEROO
 CATEGORIAO(A)=Rnd(NUMEROCO)
 POSIZIONEO(A)=Rnd(NUMEROL)
Next A
For A=0 To NUMEROP
 C0STITUZIONEP(A)=Rnd(99)+1
 DESTREZZAP(A)=Rnd(99)+1
 F0RZAP(A)=Rnd(99)+1
 PESOP(A)=Rnd(70)+50
 POSIZIONEP(A)=Rnd(NUMEROL)
 LUOGODIDESTINAZIONEP(A)=-1
 DREZIONEPRESAP(A)=-1
 DREZIONEOPPOSTAAQUELLAPRESAP(A)=0
 RESISTENZAP(A)=C0STITUZIONEP(A)
 DATO=Rnd(1) : If DATO=1 Then Bset 1,TIPOP(A) Else Bclr 1,TIPOP(A)
 DATO=Rnd(1) : If DATO=1 Then Bset 3,TIPOP(A) Else Bclr 3,TIPOP(A)
 DATO=Rnd(9)+1
 SOLDIP(A)=DATO
 Add PESONETTOP(A),DATO*PESOS
 If A>0
  INIZIOSONNOP(A)=Rnd(360)+1080
  AZIONEP(0,A)=17
  PARAAAZIONEP(0,A)=1
  AZIONEP(1,A)=27
  PARAAAZIONEP(1,A)=256
  AZIONEP(2,A)=27
  PARAAAZIONEP(2,A)=256
  AZIONEP(3,A)=27
  PARAAAZIONEP(3,A)=256
  AZIONEP(4,A)=27
  PARAAAZIONEP(4,A)=256
  AZIONEP(5,A)=27
  PARAAAZIONEP(5,A)=256
  AZIONEP(6,A)=27
  PARAAAZIONEP(6,A)=256
  AZIONEP(7,A)=16
 End If 
Next A
'----------------
'Scopo del gioco 
AZIONEP(7,0)=0
'------------
'PARametro A 
PARAAAZIONEP(7,0)=0
'------------
'PARametro B 
PARABAZIONEP(7,0)=0
'------------
'PARametro C 
PARACAZIONEP(7,0)=0
'------------------- 
For A=64 To 127
 REGIONEL(A)=1
Next A
Read DATO$ : MERITI$=DATO$
Read DATO$ : MERITI$=MERITI$+DATO$
Read DATO$ : MERITI$=MERITI$+DATO$
Read DATO$ : MERITI$=MERITI$+DATO$
Read DATO$ : MERITI$=MERITI$+DATO$
Read DATO$ : MERITI$=MERITI$+DATO$
TESTOO$(0)=MERITI$
If _MUSICA=True Then Proc SUONAUNMODULO[FILEREQUESTERMUSICA]
TASTOPREMUTO$="d"
Repeat 
 If TASTOPREMUTO$="d" Then Proc MOSTRAILDESTINODELGIOCO
 If TASTOPREMUTO$="e" Then Proc MOSTRAGLIEDIFICI
 If TASTOPREMUTO$="i" and NUMEROE>-1 Then Proc MOSTRALESTANZE
 If TASTOPREMUTO$="k" Then Proc MOSTRALECATEGORIEDEGLIOGGETTI
 If TASTOPREMUTO$="l" Then Proc MOSTRAILUOGHI
 If TASTOPREMUTO$="o" Then Proc MOSTRAGLIOGGETTI
 If TASTOPREMUTO$="p" Then Proc MOSTRAIPERSONAGGI
 If TASTOPREMUTO$="r" Then Proc MOSTRALEREGIONI
Until TASTOPREMUTO$=Chr$(27)
Track Loop Of : Track Stop : Rainbow Del 0 : Screen Close 0
Erase BANCOMODULO : End 
Procedure ARCOBALENO
 Data $FFF,$EEE,$DDD,$CCC,$BBB,$AAA,$999,$888
 Data $FFF,$EEE,$DDD,$CCC,$BBB,$AAA,$999,$888
 Set Rainbow 0,1,16,"","",""
 For LINEA=0 To 15 : Read DATO : Rain(0,LINEA)=DATO : Next LINEA
 If Ntsc Then LUNGHEZZAARCOBALENO=223 Else LUNGHEZZAARCOBALENO=271
 Rainbow 0,2,0,LUNGHEZZAARCOBALENO
End Proc
Procedure _ASPETTA
 Wait 200
End Proc
Procedure AZIONIALTRIPERSONAGGI
 While COMPIUTAAZIONE>0
  For P=1 To NUMEROP
   If RESISTENZAP(P)>0
    If Btst(2,TIPOP(P))=False
     Proc FAIDORMIREGLIALTRIPERSONAGGI[P]
     If AZIONEP(POSIZIONEA(P),P)>0
      If AZIONEP(POSIZIONEA(P),P)=1
       If FINEA(POSIZIONEA(P),P)=False
        Proc DAIAPAO[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=2
       If FINEA(POSIZIONEA(P),P)=False
        Proc DAIAPAOB[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=3
       If FINEA(POSIZIONEA(P),P)=False
        Proc DAIAPAOTB[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=4
       If FINEA(POSIZIONEA(P),P)=False
        Proc DAIAPAP[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=5
       If FINEA(POSIZIONEA(P),P)=False
        Proc DAIAPPA[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=6
       If FINEA(POSIZIONEA(P),P)=False
        Proc DAIAPABO[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=7
       If FINEA(POSIZIONEA(P),P)=False
        Proc DAIAPABOC[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=8
       If FINEA(POSIZIONEA(P),P)=False
        Proc DAIAPABOTC[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=9
       If FINEA(POSIZIONEA(P),P)=False
        Proc DAIAPABP[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=10
       If FINEA(POSIZIONEA(P),P)=False
        Proc DAIAPAPB[POSIZIONEA(P),P]
       End If 
       '    ------------------------------------  
      Else If AZIONEP(POSIZIONEA(P),P)=11
       If FINEA(POSIZIONEA(P),P)=False
        Proc LASCIAAO[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=12
       If FINEA(POSIZIONEA(P),P)=False
        Proc LASCIAAOB[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=13
       If FINEA(POSIZIONEA(P),P)=False
        Proc LASCIAAOTB[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=14
       If FINEA(POSIZIONEA(P),P)=False
        Proc LASCIAAP[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=15
       If FINEA(POSIZIONEA(P),P)=False
        Proc LASCIAPA[POSIZIONEA(P),P]
       End If 
       '    ------------------------------------  
      Else If AZIONEP(POSIZIONEA(P),P)=16
       If FINEA(POSIZIONEA(P),P)=False and POSIZIONEP(P)>-1
        Proc MUOVITIP[POSIZIONEA(P),P]
       End If 
       '    ------------------------------------  
      Else If AZIONEP(POSIZIONEA(P),P)=17
       If FINEA(POSIZIONEA(P),P)=False
        Proc PRENDIAO[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=18
       If FINEA(POSIZIONEA(P),P)=False
        Proc PRENDIAOB[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=19
       If FINEA(POSIZIONEA(P),P)=False
        Proc PRENDIAOTB[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=20
       If FINEA(POSIZIONEA(P),P)=False
        Proc PRENDIAP[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=21
       If FINEA(POSIZIONEA(P),P)=False
        Proc PRENDIPA[POSIZIONEA(P),P]
       End If 
       '    ------------------------------------  
      Else If AZIONEP(POSIZIONEA(P),P)=22
       If FINEA(POSIZIONEA(P),P)=False and POSIZIONEP(P)>-1
        Proc SEGUI[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=23
       If FINEA(POSIZIONEA(P),P)=False and POSIZIONEP(P)>-1
        Proc SEGUIPA[POSIZIONEA(P),P]
       End If 
       '    ------------------------------------  
      Else If AZIONEP(POSIZIONEA(P),P)=24
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOSUAO[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=25
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOSUAOB[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=26
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOSUAOTB[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=27
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOSUAP[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=28
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOSUPA[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=29
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOASUBO[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=30
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOASUBOC[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=31
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOASUBOTC[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=32
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOASUBP[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=33
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOASUPB[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=34
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOTASUBO[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=35
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOTASUBOC[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=36
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOTASUBOTC[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=37
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOTASUBP[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=38
       If FINEA(POSIZIONEA(P),P)=False
        Proc USAUNOTASUPB[POSIZIONEA(P),P]
       End If 
       '    ------------------------------------  
      Else If AZIONEP(POSIZIONEA(P),P)=39
       If FINEA(POSIZIONEA(P),P)=False
        Proc USATIUNO[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=40
       If FINEA(POSIZIONEA(P),P)=False
        Proc USATIUNOA[POSIZIONEA(P),P]
       End If 
      Else If AZIONEP(POSIZIONEA(P),P)=41
       If FINEA(POSIZIONEA(P),P)=False
        Proc USATIUNOTA[POSIZIONEA(P),P]
       End If 
      End If 
     End If 
     Add POSIZIONEA(P),1,0 To 7
    Else 
     Dec SONNOP(P)
     If SONNOP(P)=0
      Bclr 2,TIPOP(P)
     End If 
    End If 
   End If 
  Next P
  P=Rnd(NUMEROP-1)+1
  PERSONAGGIOPSITROVADENTROUNEDIFICIO=POSIZIONEP(P)/$10000
  If ANEMICI=True and PERSONAGGIOPSITROVADENTROUNEDIFICIO=0
   NEMICI=Rnd(127-TEMP0TRASCORSO/1440)
   NEMICI=Max(NEMICI,0)
   If NEMICI=0
    If Btst(2,TIPOP(P))=True
     Bclr 2,TIPOP(P) : INEMICISVEGLIANOPERSONAGGIOP=True
     Proc NEMICI[P]
    Else 
     INEMICISVEGLIANOPERSONAGGIOP=False
     Proc NEMICI[P]
    End If 
   End If 
  End If 
  Dec COMPIUTAAZIONE
 Wend 
End Proc
Procedure CARATTERISTICHE
 Cls 
 Print "Caratteristiche di ";NOMEP$(0);">"
 Print "Costituzione "; Using "##### ";C0STITUZIONEP(0);
 If C0STITUZIONEP(0)=1 Then Print "punto" Else Print "punti"
 Print "Destrezza    "; Using "##### ";DESTREZZAP(0);
 If DESTREZZAP(0)=1 Then Print "punto" Else Print "punti"
 Print "Forza        "; Using "##### ";F0RZAP(0);
 If F0RZAP(0)=1 Then Print "punto" Else Print "punti"
 Print "Peso         "; Using "##### ";PESOP(0);
 If PESOP(0)=1 Then Print "chilo" Else Print "chili"
 Print "Resistenza   "; Using "##### ";RESISTENZAP(0);
 If RESISTENZAP(0)=1 Then Print "punto" Else Print "punti"
 Print "Sesso ";
 If Btst(1,TIPOP(0))=True Then Print "femminile" Else Print "maschile"
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
   If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
    Print NOMEP$(0);" indossa 1 ";NOMESCO$(CATEGORIAO(A))
    Exit 
   End If 
  End If 
 Next A
 Proc TIC["Premi un tasto",ULTIMALINEA] : Wait Key 
End Proc
Procedure CARICAUNFILE
 Show On : Cls 
 FILE$=Fsel$("*.Adv",NOMEFILE$,"Carica un file","di Adventures Conceiver")
 If Exist(FILE$)
  Open In 1,FILE$
  MARCATORE$=Input$(1,21)
  LUNGHEZZABANCO=Lof(1)
  Close 1
  MEMORIA=Chip Free+Fast Free
  If LUNGHEZZABANCO>MEMORIA
   Proc TIC["Non c'è memoria sufficiente per caricare il file",ULTIMALINEA-1]
   Proc TIC[FILE$,ULTIMALINEA] : Proc _ASPETTA
  Else 
   SEPARATORE=Instr(FILE$,":") : POSIZIONE=1
   For A=1 To Len(FILE$)
    If Instr(FILE$,"/",POSIZIONE)>0
     SEPARATORECASSETTO=Instr(FILE$,"/",POSIZIONE)
     POSIZIONE=SEPARATORECASSETTO+1
    End If 
   Next A
   SEPARATORE=Max(SEPARATORE,SEPARATORECASSETTO)
   PERCORSO$=Left$(FILE$,SEPARATORE)
   If Right$(PERCORSO$,1)="/"
    PERCORSO$=Left$(PERCORSO$,Len(PERCORSO$)-1)
   End If 
   NOMEFILE$=Right$(FILE$,Len(FILE$)-SEPARATORE)
   If MARCATORE$="Adventures Conceiver"+Chr$(10)
    Reserve As Work BANCO,LUNGHEZZABANCO
    Bload FILE$,Start(BANCO)
    MESSAGGIO1$="* "+NOMEFILE$+Str$(LUNGHEZZABANCO)+" Byte *"
   Else 
    Proc TIC[NOMEFILE$,ULTIMALINEA-1]
    Proc TIC["Non è un file di Adventures Conceiver",ULTIMALINEA] : Proc _ASPETTA
   End If 
  End If 
 End If 
 Hide On 
End Proc
Procedure CONDIZIONEDELGIORNO
 Print "Descrizione giornata>";
 If CONDIZIONEG=0
  M1NUTI=(TEMP0TRASCORSO+360) mod 1440
  If M1NUTI<60 : Rem dalle 0:00 alle 0:59 
   Print CONDIZIONEG$(6) : Rem La luna è alta 
  Else If M1NUTI>59 and M1NUTI<300 : Rem dalle 1:00 alle 4:59 
   Print CONDIZIONEG$(7) : Rem La luna sta calando  
  Else If M1NUTI>299 and M1NUTI<360 : Rem dalle 5:00 alle 5:59 
   Print CONDIZIONEG$(0) : Rem Il cielo si sta schiarendo 
  Else If M1NUTI>359 and M1NUTI<600 : Rem dalle 6:00 alle 9:59 
   Print CONDIZIONEG$(1) : Rem Il sole si sta alzando 
  Else If M1NUTI>599 and M1NUTI<900 : Rem dalle 10:00 alle 14:59   
   Print CONDIZIONEG$(2) : Rem Il sole è alto 
  Else If M1NUTI>899 and M1NUTI<1140 : Rem dalle 15:00 alle 18:59   
   Print CONDIZIONEG$(3) : Rem Il sole sta calando
  Else If M1NUTI>1139 and M1NUTI<1200 : Rem dalle 19:00 alle 19:59 
   Print CONDIZIONEG$(4) : Rem Il cielo si sta oscurando
  Else If M1NUTI>1199 and M1NUTI<1380 : Rem dalle 20:00 alle 22:59 
   Print CONDIZIONEG$(5) : Rem La luna si sta alzando 
  Else : Rem dalle 23:00 alle 23:59 
   Print CONDIZIONEG$(6) : Rem La luna è alta 
  End If 
 Else If CONDIZIONEG=1
  Print CONDIZIONEG$(8) : Rem E' nuvoloso
 Else If CONDIZIONEG=2
  Print CONDIZIONEG$(9) : Rem Sta piovendo 
 Else If CONDIZIONEG=3
  Print CONDIZIONEG$(10) : Rem Sta nevicando  
 Else If CONDIZIONEG=4
  Print CONDIZIONEG$(11) : Rem Sta grandinando  
 Else If CONDIZIONEG=5
  Print CONDIZIONEG$(12) : Rem C'è la nebbia
 Else If CONDIZIONEG=6
  Print CONDIZIONEG$(13) : Rem E' buio  
 End If 
End Proc
Procedure CONTROLLASEILPERSONAGGIO0HARAGGIUNTOLOSCOPODELGIOCO
 SCOPODELGIOCO=AZIONEP(7,0)
 PARA=PARAAAZIONEP(7,0)
 PARB=PARABAZIONEP(7,0)
 PARC=PARACAZIONEP(7,0)
 If SCOPODELGIOCO=0
  Pop Proc
 Else If SCOPODELGIOCO=1
  'Dai al personaggio PARA PARB oggetti PARC 
  OGGETTIDIA(PARC)=0
  If OGGETTODATOOLASCIATO(PARC)=PARB
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-PARA and Btst(0,TIPOO(A))=True
     If CATEGORIAO(A)=PARC and Btst(1,TIPOO(A))=False
      Inc OGGETTIDIA(CATEGORIAO(A))
     End If 
    End If 
   Next A
   If OGGETTIDIA(PARC)=PARB
    FINEA(7,0)=True
   End If 
  End If 
 Else If SCOPODELGIOCO=2
  'Dai al personaggio PARA PARB oggetti tipo PARC  
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-PARA and Btst(0,TIPOO(A))=True
    If TIPOCO(CATEGORIAO(A))=PARC and Btst(1,TIPOO(A))=False
     Inc TIPODIOGGETTOPARC
    End If 
   End If 
  Next A
  If TIPODIOGGETTOPARC=PARB
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=3
  'Dai a PARA PARB soldi 
  If SOLDIRICEVUTIP(PARA)=PARB
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=4
  'Guadagna PARA soldi 
  If SOLDIP(0)>=PARA
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=5
  'Lascia nel luogo PARA PARB oggetti PARC 
  OGGETTIDIA(PARC)=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=PARA
    If CATEGORIAO(A)=PARC and Btst(1,TIPOO(A))=False
     Inc OGGETTIDIA(PARC)
    End If 
   End If 
  Next A
  If OGGETTIDIA(PARC)>=PARB
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=6
  'Lascia nel luogo PARA PARB oggetti tipo PARC  
  For A=0 To NUMEROO
   If POSIZIONEO(A)=PARA
    If PARATIPOCO(CATEGORIAO(A))=PARC and Btst(1,TIPOO(A))=False
     Inc OGGETTODELTIPOPARC
    End If 
   End If 
  Next A
  If OGGETTODELTIPOPARC>=PARB
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=7
  'Lascia nel luogo PARA PARB soldi
  If SOLDIL(PARA)>=PARB
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=8
  'Prendi PARA oggetti PARB
  If OGGETTODELPERSONAGGIO0(PARB)=PARA
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=9
  'Prendi  PARA oggetti tipo PARB
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
    If TIPOCO(CATEGORIAO(A))=PARB and Btst(1,TIPOO(A))=False
     Inc TIPODIOGGETTOPARB
    End If 
   End If 
  Next A
  If TIPODIOGGETTOPARB=PARA
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=10
  'Trova il personaggio PARA 
  Proc PERSONAGGIOVISIBILE[PARA]
  If PERSONAGGIOVISIBILEP(PARA)=True
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=11
  'Uccidi il personaggio PARA  
  If RESISTENZAP(PARA)=0
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=12
  'Usa 1 oggetto PARA su 1 oggetto PARB
  If CATEGORIAO(OGGETTOUSANTE)=PARA and CATEGORIAO(OGGETTOUSATO)=PARB
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=13
  'Usa 1 oggetto PARA su 1 oggetto tipo PARB 
  If CATEGORIAO(OGGETTOUSANTE)=PARA and PARATIPOCO(CATEGORIAO(OGGETTOUSATO))=PARB
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=14
  'Usa 1 oggetto PARA su PARB
  If CATEGORIAO(OGGETTOUSANTE)=PARA and PERSONAGGIOSUCUIPERSONAGGIO0HAUSATO=PARB
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=15
  'Usa 1 oggetto tipo PARA su 1 oggetto PARB 
  If PARATIPOCO(CATEGORIAO(OGGETTOUSANTE))=PARA and CATEGORIAO(OGGETTOUSATO)=PARB
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=16
  'Usa 1 oggetto tipo PARA su un oggetto tipo PARB 
  If PARATIPOCO(CATEGORIAO(OGGETTOUSANTE))=PARA and PARATIPOCO(CATEGORIAO(OGGETTOUSATO))=PARB
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=17
  'Usa 1 oggetto tipo PARA su PARB 
  If PARATIPOCO(CATEGORIAO(OGGETTOUSANTE))=PARA and PERSONAGGIOSUCUIPERSONAGGIO0HAUSATO=PARB
   FINEA(7,0)=True
  End If 
 Else If SCOPODELGIOCO=18
  'Vai nel luogo PARA
  If POSIZIONEP(0)=PARA and TEMP0DIATTRAVERSAMENTOP(0)=0
   FINEA(7,0)=True
  End If 
 End If 
End Proc
Procedure CREAMAPPA
 Cls 
 Print At(0,ULTIMALINEA);"Vuoi creare una mappa dei luoghi o delle stanze (l/s) ?"
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="l"
  Repeat 
   Locate 0,ULTIMALINEA : Input "Larghezza della mappa in luoghi (>2)>";LARGHEZZADELLAMAPPA$;
   If LARGHEZZADELLAMAPPA$<>""
    LARGHEZZADELLAMAPPA=Val(LARGHEZZADELLAMAPPA$)
    If LARGHEZZADELLAMAPPA<3
     TIC["La larghezza deve essere almeno di tre luoghi!",ULTIMALINEA]
     Proc _ASPETTA
    End If 
   End If 
  Until LARGHEZZADELLAMAPPA>2
  Repeat 
   Locate 0,ULTIMALINEA : Cline 
   Input "Altezza della mappa in luoghi (>2)>";ALTEZZADELLAMAPPA$;
   If ALTEZZADELLAMAPPA$<>""
    ALTEZZADELLAMAPPA=Val(ALTEZZADELLAMAPPA$)
    If ALTEZZADELLAMAPPA<3
     TIC["L'altezza deve essere almeno di tre luoghi!",ULTIMALINEA]
     Proc _ASPETTA
    End If 
   End If 
  Until ALTEZZADELLAMAPPA>2
  Repeat 
   Locate 0,ULTIMALINEA : Cline 
   Input "Luogo di partenza della mappa (>=0)>";LUOGODIPARTENZADELLAMAPPA$;
   If LUOGODIAPRTENZADELLAMAPPA$<>""
    LUOGODIPARTENZADELLAMAPPA=Val(LUOGODIPARTENZADELLAMAPPA$)
    If LUOGODIAPRTENZADELLAMAPPA<0
     TIC["devi indicare un valore uguale o maggiore di zero!",ULTIMALINEA]
     Proc _ASPETTA
    End If 
   End If 
  Until LUOGODIPARTENZADELLAMAPPA>=0
  NUMEROLUOGHI=LARGHEZZADELLAMAPPA*ALTEZZADELLAMAPPA
  If LUOGODIPARTENZADELLAMAPPA+NUMEROLUOGHI-1>NUMEROL
   TIC["Numero dei luoghi disponibili uguale a"+Str$(NUMEROL+1)+"!",ULTIMALINEA]
   Proc _ASPETTA
  Else 
   Locate 0,ULTIMALINEA : Cline : Print "Vuoi che i luoghi siano delimitati (s/n) ?"
   RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
   If RISPOSTA$="s"
    LIMITI=True
   Else 
    LIMITI=False
   End If 
   TIC["Sto creando la mappa dei luoghi...",ULTIMALINEA]
   Proc _ASPETTA
   Proc _ORDINALUOGHI[NUMEROLUOGHI-1,LARGHEZZADELLAMAPPA,LUOGODIPARTENZADELLLAMAPPA,LIMITI]
  End If 
 Else If RISPOSTA$="s"
  If NUMEROE=-1
   Locate 0,ULTIMALINEA : Cline : Print "Non ci sono Edifici!"
   Proc _ASPETTA : Pop Proc
  Else If NUMEROE>0
   Locate 0,ULTIMALINEA : Input "Quale edificio (0-"+Str$(NUMEROE)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,0,NUMEROE] : NUMEROEDIFICIO=Param
   End If 
  End If 
  Repeat 
   Locate 0,ULTIMALINEA : Input "Larghezza della mappa in stanze (>2)>";LARGHEZZADELLAMAPPA$;
   If LARGHEZZADELLAMAPPA$<>""
    LARGHEZZADELLAMAPPA=Val(LARGHEZZADELLAMAPPA$)
    If LARGHEZZADELLAMAPPA<3
     TIC["La larghezza deve essere almeno di tre stanze!",ULTIMALINEA]
     Proc _ASPETTA
    End If 
   End If 
  Until LARGHEZZADELLAMAPPA>2
  Repeat 
   Locate 0,ULTIMALINEA : Cline 
   Input "Altezza della mappa in stanze (>2)>";ALTEZZADELLAMAPPA$;
   If ALTEZZADELLAMAPPA$<>""
    ALTEZZADELLAMAPPA=Val(ALTEZZADELLAMAPPA$)
    If ALTEZZADELLAMAPPA<3
     TIC["L'altezza deve essere almeno di tre stanze!",ULTIMALINEA]
     Proc _ASPETTA
    End If 
   End If 
  Until ALTEZZADELLAMAPPA>2
  Repeat 
   Locate 0,ULTIMALINEA : Cline 
   Input "Stanza di partenza della mappa (>=0)>";STANZADIPARTENZADELLAMAPPA$;
   If STANZADIAPRTENZADELLAMAPPA$<>""
    STANZADIPARTENZADELLAMAPPA=Val(STANZADIPARTENZADELLAMAPPA$)
    If STANZADIAPRTENZADELLAMAPPA<0
     TIC["devi indicare un valore uguale o maggiore di zero!",ULTIMALINEA]
     Proc _ASPETTA
    End If 
   End If 
  Until STANZADIPARTENZADELLAMAPPA>=0
  NUMEROSTANZE=LARGHEZZADELLAMAPPA*ALTEZZADELLAMAPPA
  If STANZADIPARTENZADELLAMAPPA+NUMEROSTANZE-1>NUMEROS(NUMEROEDIFICIO)
   TIC["Numero delle stanze disponibili uguale a"+Str$(NUMEROS(NUMEROEDIFICIO)+1)+"!",ULTIMALINEA]
   Proc _ASPETTA
  Else 
   TIC["Sto creando la mappa delle stanze...",ULTIMALINEA]
   Proc _ASPETTA
   Proc _ORDINASTANZE[NUMEROEDIFICIO,NUMEROSTANZE-1,LARGHEZZADELLAMAPPA,STANZADIPARTENZADELLLAMAPPA]
  End If 
 End If 
 Curs Off 
End Proc
Procedure DABANCOAVARIABILI
 If Length(BANCO)>0
  TIC["Un attimo che converto i dati...",ULTIMALINEA]
  INDIRIZZO=Start(BANCO)+21
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  'Nemici attivi o no:   
  Add INDIRIZZO,Len(DATO$)+1
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  ANEMICI=Val(DATO$)
  Add INDIRIZZO,Len(DATO$)+1
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  'Numero delle categorie degli oggetti:   
  Add INDIRIZZO,Len(DATO$)+1
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  NUMEROCO=Val(DATO$)
  Add INDIRIZZO,Len(DATO$)+1
  For A=0 To NUMEROCO
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Categoria A>  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Nome singolare: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   NOMESCO$(A)=DATO$
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Nome plurale: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   NOMEPCO$(A)=DATO$
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Nome singolare resto: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   NOMESRO$(A)=DATO$
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Nome plurale resto: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   NOMEPRO$(A)=DATO$
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Peso: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   PESOCO(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Peso resto: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   PESORESTOCO(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Tipo:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   TIPOCO(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Parametro tipo:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   PARATIPOCO(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Descrizione:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,"|")
   DESCRIZIONECO$(A)=DATO$
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Oggetto del personaggio zero: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   OGGETTODELPERSONAGGIO0(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Resto del personaggio zero: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   RESTODELPERSONAGGIO0(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Oggetto dato: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   OGGETTODATOOLASCIATO(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
  Next A
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  'Numero degli edifici:   
  Add INDIRIZZO,Len(DATO$)+1
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  NUMEROE=Val(DATO$)
  Add INDIRIZZO,Len(DATO$)+1
  If NUMEROE>-1
   For A=0 To NUMEROE
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    'Edificio A>   
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    'Nome: 
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    NOMEE$(A)=DATO$
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    'Descrizione:  
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,"|")
    DESCRIZIONEE$(A)=DATO$
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    'Numero delle stanze:  
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    NUMEROS(A)=Val(DATO$)
    Add INDIRIZZO,Len(DATO$)+1
    For B=0 To NUMEROS(A)
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Stanza A>   
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Nome: 
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     NOMES$(B,A)=DATO$
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Luogo Nord: 
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     DREZIONES(0,B,A)=Val(DATO$)
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Luogo NordEst:  
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     DREZIONES(1,B,A)=Val(DATO$)
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Luogo Est:  
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     DREZIONES(2,B,A)=Val(DATO$)
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Luogo SudEst: 
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     DREZIONES(3,B,A)=Val(DATO$)
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Luogo Sud:  
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     DREZIONES(4,B,A)=Val(DATO$)
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Luogo SudOvest: 
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     DREZIONES(5,B,A)=Val(DATO$)
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Luogo Ovest:  
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     DREZIONES(6,B,A)=Val(DATO$)
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Luogo NordOvest:  
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     DREZIONES(7,B,A)=Val(DATO$)
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Luogo Sopra:  
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     DREZIONES(8,B,A)=Val(DATO$)
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Luogo Sotto:  
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     DREZIONES(9,B,A)=Val(DATO$)
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Soldi nella stanza:   
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     SOLDIS(B,A)=Val(DATO$)
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
     'Descrizione:  
     Add INDIRIZZO,Len(DATO$)+1
     DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,"|")
     DESCRIZIONES$(B,A)=DATO$
     Add INDIRIZZO,Len(DATO$)+1
    Next B
   Next A
  End If 
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  'Numero dei luoghi:  
  Add INDIRIZZO,Len(DATO$)+1
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  NUMEROL=Val(DATO$)
  Add INDIRIZZO,Len(DATO$)+1
  For A=0 To NUMEROL
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo A>  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Nome: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   NOMEL$(A)=DATO$
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo Nord: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DREZIONEL(0,A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo NordEst:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DREZIONEL(1,A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo Est:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DREZIONEL(2,A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo SudEst: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DREZIONEL(3,A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo Sud:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DREZIONEL(4,A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo SudOvest: 
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DREZIONEL(5,A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo Ovest:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DREZIONEL(6,A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo NordOvest:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DREZIONEL(7,A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo Sopra:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DREZIONEL(8,A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo Sotto:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DREZIONEL(9,A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Soldi nel luogo:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   SOLDIL(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Tipo di luogo:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   TIPOL(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Descrizione:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,"|")
   DESCRIZIONEL$(A)=DATO$
   Add INDIRIZZO,Len(DATO$)+1
  Next A
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  'Numero degli oggetti:   
  Add INDIRIZZO,Len(DATO$)+1
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  NUMEROO=Val(DATO$)
  Add INDIRIZZO,Len(DATO$)+1
  For A=0 To NUMEROO
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Oggetto A>  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Categoria:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   CATEGORIAO(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Posizione:  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   POSIZIONEO(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Tipo:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   TIPOO(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
  Next A
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  'Numero dei personaggi:  
  Add INDIRIZZO,Len(DATO$)+1
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  NUMEROP=Val(DATO$)
  Add INDIRIZZO,Len(DATO$)+1
  For A=0 To NUMEROP
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Personaggio A>  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Nome:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   NOMEP$(A)=DATO$
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Posizione:    
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   POSIZIONEP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Costituzione:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   C0STITUZIONEP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Destrezza:    
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DESTREZZAP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Forza:    
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   F0RZAP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Peso:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   PESOP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Peso netto:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   PESONETTOP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Resistenza:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   RESISTENZAP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Soldi:    
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   SOLDIP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Tipo:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   TIPOP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Descrizione:    
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,"|")
   DESCRIZIONEP$(A)=DATO$
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Inizio sonno:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   INIZIOSONNOP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Durata sonno:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   SONNOP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Direzione presa:    
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   DREZIONEPRESAP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Luogo di destinazione:    
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   LUOGODIDESTINAZIONEP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Tempo di attraversamento:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   TEMP0DIATTRAVERSAMENTOP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Soldi ricevuti:     
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   SOLDIRICEVUTIP(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
   For B=0 To 7
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    'Azione:   
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    AZIONEP(B,A)=Val(DATO$)
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    'Parametro A azione:   
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    PARAAAZIONEP(B,A)=Val(DATO$)
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    'Parametro B azione:   
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    PARABAZIONEP(B,A)=Val(DATO$)
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    'Parametro C azione:   
    Add INDIRIZZO,Len(DATO$)+1
    DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
    PARACAZIONEP(B,A)=Val(DATO$)
    Add INDIRIZZO,Len(DATO$)+1
   Next B
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Posizione azione:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   POSIZIONEA(A)=Val(DATO$)
   Add INDIRIZZO,Len(DATO$)+1
  Next A
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  'Numero delle regioni:   
  Add INDIRIZZO,Len(DATO$)+1
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  NUMEROR=Val(DATO$)
  Add INDIRIZZO,Len(DATO$)+1
  For A=0 To NUMEROR
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Regione A>  
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   'Nome:   
   Add INDIRIZZO,Len(DATO$)+1
   DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
   NOMER$(A)=DATO$
   Add INDIRIZZO,Len(DATO$)+1
  Next A
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  'Giornata:     
  Add INDIRIZZO,Len(DATO$)+1
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  CONDIZIONEG=Val(DATO$)
  Add INDIRIZZO,Len(DATO$)+1
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  'Tempo trascorso:    
  Add INDIRIZZO,Len(DATO$)+1
  DATO$=Peek$(INDIRIZZO,Start(BANCO)+Length(BANCO)-INDIRIZZO,Chr$(10))
  TEMP0TRASCORSO=Val(DATO$)
  Add INDIRIZZO,Len(DATO$)+1
  If INDIRIZZO=Start(BANCO)+Length(BANCO)
   Proc TIC["Conversione dati avvenuta",ULTIMALINEA] : Proc _ASPETTA
  Else 
   Proc TIC["Conversione dati fallita",ULTIMALINEA] : Proc _ASPETTA
   Proc INIZIALIZZALEVARIABILI
  End If 
  Erase BANCO
 End If 
End Proc
Procedure DAI
 For A=1 To NUMEROP
  If PERSONAGGIOVISIBILEP(A)=True Then Inc PERSONAGGIRICEVENTI
 Next A
 If PERSONAGGIRICEVENTI>0
  For A=0 To NUMEROCO
   If OGGETTODELPERSONAGGIO0(A)>0
    Inc CATEGORIEOGGETTI
   End If 
   If RESTODELPERSONAGGIO0(A)>0
    Inc CATEGORIEOGGETTI
   End If 
  Next A
  For A=1 To NUMEROP
   If POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
    Inc PERSONAGGIDADARE
   End If 
  Next A
  If SOLDIP(0)>0
   SOLDIDADARE=True
  End If 
  If CATEGORIEOGGETTI>0 and PERSONAGGIDADARE>0 and SOLDIDADARE=True
   Print At(0,ULTIMALINEA);"Vuoi dare un oggetto, un personaggio o dei soldi (o/p/s) ?>";
   OGGETTOPERSONAGGIOOSOLDI$=Input$(1)
   OGGETTOPERSONAGGIOOSOLDI$=Lower$(OGGETTOPERSONAGGIOOSOLDI$)
   If OGGETTOPERSONAGGIOOSOLDI$="o"
    Proc DAIUNOGGETTO
   Else If OGGETTOPERSONAGGIOOSOLDI$="p"
    Proc DAIUNPERSONAGGIO
   Else If OGGETTOPERSONAGGIOOSOLDI$="s"
    Proc DAIDEISOLDI
   End If 
  Else If CATEGORIEOGGETTI>0 and PERSONAGGIDADARE=0 and SOLDIDADARE=True
   Print At(0,ULTIMALINEA);"Vuoi dare un oggetto o dei soldi (o/s) ?>";
   OGGETTOOSOLDI$=Input$(1)
   OGGETTOOSOLDI$=Lower$(OGGETTOOSOLDI$)
   If OGGETTOOSOLDI$="o"
    Proc DAIUNOGGETTO
   Else If OGGETTOOSOLDI$="s"
    Proc DAIDEISOLDI
   End If 
  Else If CATEGORIEOGGETTI=0 and PERSONAGGIDADARE>0 and SOLDIDADARE=True
   Print At(0,ULTIMALINEA);"Vuoi dare un personaggio o dei soldi (p/s) ?>";
   PERSONAGGIOOSOLDI$=Input$(1)
   PERSONAGGIOOSOLDI$=Lower$(PERSONAGGIOOSOLDI$)
   If PERSONAGGIOOSOLDI$="p"
    Proc DAIUNPERSONAGGIO
   Else If PERSONAGGIOOSOLDI$="s"
    Proc DAIDEISOLDI
   End If 
  Else If CATEGORIEOGGETTI=0 and PERSONAGGIDADARE=0 and SOLDIDADARE=True
   Proc DAIDEISOLDI
  Else If CATEGORIEOGGETTI>0 and PERSONAGGIDADARE>0 and SOLDIDADARE=False
   Print At(0,ULTIMALINEA);"Vuoi dare un oggetto od un personaggio (o/p) ?>";
   OGGETTOOPERSONAGGIO$=Input$(1)
   OGGETTOOPERSONAGGIO$=Lower$(OGGETTOOPERSONAGGIO$)
   If OGGETTOOPERSONAGGIO$="o"
    Proc DAIUNOGGETTO
   Else If OGGETTOOPERSONAGGIO$="p"
    Proc DAIUNPERSONAGGIO
   End If 
  Else If CATEGORIEOGGETTI>0 and PERSONAGGIDADARE=0 and SOLDIDADARE=False
   Proc DAIUNOGGETTO
  Else If CATEGORIEOGGETTI=0 and PERSONAGGIDADARE>0 and SOLDIDADARE=False
   Proc DAIUNPERSONAGGIO
  Else 
   Print At(0,ULTIMALINEA);"Non hai oggetti, personaggi o soldi da dare";
   If _MUSICA=False
    Bell 1
   End If 
   Proc _ASPETTA
  End If 
 Else 
  Print At(0,ULTIMALINEA);"Non ci sono personaggi a cui dare";
  If _MUSICA=False
   Bell 1
  End If 
  Proc _ASPETTA
 End If 
End Proc
Procedure DAIAPAO[AZIONE,P]
 A=Rnd(NUMEROP) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  NUMEROOGGETTODELPERSONAGGIOP=-1
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
    Inc NUMEROOGGETTODELPERSONAGGIOP
    B=A
   End If 
  Next A
  If NUMEROOGGETTODELPERSONAGGIOP=-1
   Pop Proc
  End If 
  If NUMEROOGGETTODELPERSONAGGIOP=0
   A=B
  Else 
   Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
   B=0
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
     OGGETTODELPERSONAGGIOP(B)=A
     Inc B
    End If 
   Next A
   A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
  End If 
  POSIZIONEO(A)=-1-PERSONAGGIOTROVATO
  If Btst(1,TIPOO(A))=True
   If PERSONAGGIOTROVATO=0
    Inc RESTODELPERSONAGGIO0(CATEGORIAO(A))
   End If 
   Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(A))
   Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(A))
  Else 
   If PERSONAGGIOTROVATO=0
    Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(A))
   End If 
   Add PESONETTOP(P),-PESOCO(CATEGORIAO(A))
   Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(A))
  End If 
  If Btst(1,TIPOCO(CATEGORIAO(A)))=True
   For B=0 To NUMEROO
    If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
     If Btst(1,TIPOO(B))=True
      Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(B))
      Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(B))
     Else 
      Add PESONETTOP(P),-PESOCO(CATEGORIAO(B))
      Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(B))
     End If 
    End If 
   Next B
   For B=1 To NUMEROP
    If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
     Add PESONETTOP(P),-PESOP(B)*1000
     Add PESONETTOP(P),-PESONETTOP(B)
     Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(B)*1000
     Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(B)
    End If 
   Next B
  End If 
  If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
   If PERSONAGGIOTROVATO=0
    Print NOMEP$(P);" ti dà 1 ";
   Else 
    Print NOMEP$(P);" dà 1 ";
   End If 
   If Btst(1,TIPOO(A))=True
    Print NOMESRO$(CATEGORIAO(A));
   Else 
    Print NOMESCO$(CATEGORIAO(A));
   End If 
   If PERSONAGGIOTROVATO=0
    Print 
   Else 
    Print " a ";NOMEP$(PERSONAGGIOTROVATO)
   End If 
  End If 
  Dec PARAAAZIONEP(AZIONE,P)
  If PARAAAZIONEP(AZIONE,P)=0
   FINEA(AZIONE,P)=True
  End If 
 End If 
End Proc
Procedure DAIAPAOB[AZIONE,P]
 A=Rnd(NUMEROP) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  NUMEROOGGETTODELPERSONAGGIOP=-1
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARABAZIONEP(AZIONE,P)
    Inc NUMEROOGGETTODELPERSONAGGIOP
    B=A
   End If 
  Next A
  If NUMEROOGGETTODELPERSONAGGIOP=-1
   Pop Proc
  End If 
  If NUMEROOGGETTODELPERSONAGGIOP=0
   A=B
  Else 
   Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
   B=0
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARABAZIONEP(AZIONE,P)
     OGGETTODELPERSONAGGIOP(B)=A
     Inc B
    End If 
   Next A
   A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
  End If 
  POSIZIONEO(A)=-1-PERSONAGGIOTROVATO
  If Btst(1,TIPOO(A))=True
   If PERSONAGGIOTROVATO=0
    Inc RESTODELPERSONAGGIO0(CATEGORIAO(A))
   End If 
   Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(A))
   Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(A))
  Else 
   If PERSONAGGIOTROVATO=0
    Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(A))
   End If 
   Add PESONETTOP(P),-PESOCO(CATEGORIAO(A))
   Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(A))
  End If 
  If Btst(1,TIPOCO(CATEGORIAO(A)))=True
   For B=0 To NUMEROO
    If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
     If Btst(1,TIPOO(B))=True
      Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(B))
      Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(B))
     Else 
      Add PESONETTOP(P),-PESOCO(CATEGORIAO(B))
      Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(B))
     End If 
    End If 
   Next B
   For B=1 To NUMEROP
    If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
     Add PESONETTOP(P),-PESOP(B)*1000
     Add PESONETTOP(P),-PESONETTOP(B)
     Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(B)*1000
     Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(B)
    End If 
   Next B
  End If 
  If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
   If PERSONAGGIOTROVATO=0
    Print NOMEP$(P);" ti dà 1 ";
   Else 
    Print NOMEP$(P);" dà 1 ";
   End If 
   If Btst(1,TIPOO(A))=True
    Print NOMESRO$(CATEGORIAO(A));
   Else 
    Print NOMESCO$(CATEGORIAO(A));
   End If 
   If PERSONAGGIOTROVATO=0
    Print 
   Else 
    Print " a ";NOMEP$(PERSONAGGIOTROVATO)
   End If 
  End If 
  Dec PARAAAZIONEP(AZIONE,P)
  If PARAAAZIONEP(AZIONE,P)=0
   FINEA(AZIONE,P)=True
  End If 
 End If 
End Proc
Procedure DAIAPAOTB[AZIONE,P]
 A=Rnd(NUMEROP) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  NUMEROOGGETTODELPERSONAGGIOP=-1
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(A))=PARABAZIONEP(AZIONE,P)
    Inc NUMEROOGGETTODELPERSONAGGIOP
    B=A
   End If 
  Next A
  If NUMEROOGGETTODELPERSONAGGIOP=-1
   Pop Proc
  End If 
  If NUMEROOGGETTODELPERSONAGGIOP=0
   A=B
  Else 
   Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
   B=0
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(A))=PARABAZIONEP(AZIONE,P)
     OGGETTODELPERSONAGGIOP(B)=A
     Inc B
    End If 
   Next A
   A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
  End If 
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(A))=PARABAZIONEP(AZIONE,P)
    POSIZIONEO(A)=-1-PERSONAGGIOTROVATO
    If Btst(1,TIPOO(A))=True
     If PERSONAGGIOTROVATO=0
      Inc RESTODELPERSONAGGIO0(CATEGORIAO(A))
     End If 
     Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(A))
     Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(A))
    Else 
     If PERSONAGGIOTROVATO=0
      Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(A))
     End If 
     Add PESONETTOP(P),-PESOCO(CATEGORIAO(A))
     Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(A))
    End If 
    If Btst(1,TIPOCO(CATEGORIAO(A)))=True
     For B=0 To NUMEROO
      If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
       If Btst(1,TIPOO(B))=True
        Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(B))
        Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(B))
       Else 
        Add PESONETTOP(P),-PESOCO(CATEGORIAO(B))
        Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(B))
       End If 
      End If 
     Next B
     For B=1 To NUMEROP
      If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
       Add PESONETTOP(P),-PESOP(B)*1000
       Add PESONETTOP(P),-PESONETTOP(B)
       Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(B)*1000
       Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(B)
      End If 
     Next B
    End If 
    If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
     If PERSONAGGIOTROVATO=0
      Print NOMEP$(P);" ti dà 1 ";
     Else 
      Print NOMEP$(P);" dà 1 ";
     End If 
     If Btst(1,TIPOO(A))=True
      Print NOMESRO$(CATEGORIAO(A));
     Else 
      Print NOMESCO$(CATEGORIAO(A));
     End If 
     If PERSONAGGIOTROVATO=0
      Print 
     Else 
      Print " a ";NOMEP$(PERSONAGGIOTROVATO)
     End If 
    End If 
    Dec PARAAAZIONEP(AZIONE,P)
    If PARAAAZIONEP(AZIONE,P)=0
     FINEA(AZIONE,P)=True
    End If 
    Exit 
   End If 
  Next A
 End If 
End Proc
Procedure DAIAPAP[AZIONE,P]
 A=Rnd(NUMEROP) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  For A=0 To NUMEROP
   If POSIZIONEP(A)=-1-P and Btst(0,TIPOP(A))=True
    POSIZIONEP(A)=-1-PERSONAGGIOTROVATO
    Add PESONETTOP(P),-PESOP(A)*1000
    Add PESONETTOP(P),-PESONETTOP(A)
    Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(A)*1000
    Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(A)
    If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
     If PERSONAGGIOTROVATO=0
      Print NOMEP$(P);" ti dà ";
     Else 
      Print NOMEP$(P);" dà ";
     End If 
     Print NOMEP$(A);
     If PERSONAGGIOTROVATO=0
      Print 
     Else 
      Print " a ";NOMEP$(PERSONAGGIOTROVATO)
     End If 
    End If 
    Dec PARAAAZIONEP(AZIONE,P)
    If PARAAAZIONEP(AZIONE,P)=0
     FINEA(AZIONE,P)=True
    End If 
    Exit 
   End If 
  Next A
 End If 
End Proc
Procedure DAIAPPA[AZIONE,P]
 A=Rnd(NUMEROP) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  A=PARAAAZIONEP(AZIONE,P)
  If POSIZIONEP(A)=-1-P and Btst(0,TIPOP(A))=True
   POSIZIONEP(A)=-1-PERSONAGGIOTROVATO
   Add PESONETTOP(P),-PESOP(A)*1000
   Add PESONETTOP(P),-PESONETTOP(A)
   Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(A)*1000
   Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(A)
   If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
    If PERSONAGGIOTROVATO=0
     Print NOMEP$(P);" ti dà ";
    Else 
     Print NOMEP$(P);" dà ";
    End If 
    Print NOMEP$(A);
    If PERSONAGGIOTROVATO=0
     Print 
    Else 
     Print " a ";NOMEP$(PERSONAGGIOTROVATO)
    End If 
   End If 
   FINEA(AZIONE,P)=True
  End If 
 End If 
End Proc
Procedure DAIAPABO[AZIONE,P]
 A=PARAAAZIONEP(AZIONE,P) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  NUMEROOGGETTODELPERSONAGGIOP=-1
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
    Inc NUMEROOGGETTODELPERSONAGGIOP
    B=A
   End If 
  Next A
  If NUMEROOGGETTODELPERSONAGGIOP=-1
   Pop Proc
  End If 
  If NUMEROOGGETTODELPERSONAGGIOP=0
   A=B
  Else 
   Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
   B=0
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
     OGGETTODELPERSONAGGIOP(B)=A
     Inc B
    End If 
   Next A
   A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
  End If 
  POSIZIONEO(A)=-1-PERSONAGGIOTROVATO
  If Btst(1,TIPOO(A))=True
   If PERSONAGGIOTROVATO=0
    Inc RESTODELPERSONAGGIO0(CATEGORIAO(A))
   End If 
   Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(A))
   Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(A))
  Else 
   If PERSONAGGIOTROVATO=0
    Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(A))
   End If 
   Add PESONETTOP(P),-PESOCO(CATEGORIAO(A))
   Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(A))
  End If 
  If Btst(1,TIPOCO(CATEGORIAO(A)))=True
   For B=0 To NUMEROO
    If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
     If Btst(1,TIPOO(B))=True
      Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(B))
      Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(B))
     Else 
      Add PESONETTOP(P),-PESOCO(CATEGORIAO(B))
      Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(B))
     End If 
    End If 
   Next B
   For B=1 To NUMEROP
    If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
     Add PESONETTOP(P),-PESOP(B)*1000
     Add PESONETTOP(P),-PESONETTOP(B)
     Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(B)*1000
     Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(B)
    End If 
   Next B
  End If 
  If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
   If PERSONAGGIOTROVATO=0
    Print NOMEP$(P);" ti dà 1 ";
   Else 
    Print NOMEP$(P);" dà 1 ";
   End If 
   If Btst(1,TIPOO(A))=True
    Print NOMESRO$(CATEGORIAO(A));
   Else 
    Print NOMESCO$(CATEGORIAO(A));
   End If 
   If PERSONAGGIOTROVATO=0
    Print 
   Else 
    Print " a ";NOMEP$(PERSONAGGIOTROVATO)
   End If 
  End If 
  Dec PARABAZIONEP(AZIONE,P)
  If PARABAZIONEP(AZIONE,P)=0
   FINEA(AZIONE,P)=True
  End If 
 End If 
End Proc
Procedure DAIAPABOC[AZIONE,P]
 A=PARAAAZIONEP(AZIONE,P) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  NUMEROOGGETTODELPERSONAGGIOP=-1
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARACAZIONEP(AZIONE,P)
    Inc NUMEROOGGETTODELPERSONAGGIOP
    B=A
   End If 
  Next A
  If NUMEROOGGETTODELPERSONAGGIOP=-1
   Pop Proc
  End If 
  If NUMEROOGGETTODELPERSONAGGIOP=0
   A=B
  Else 
   Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
   B=0
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARACAZIONEP(AZIONE,P)
     OGGETTODELPERSONAGGIOP(B)=A
     Inc B
    End If 
   Next A
   A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
  End If 
  POSIZIONEO(A)=-1-PERSONAGGIOTROVATO
  If Btst(1,TIPOO(A))=True
   If PERSONAGGIOTROVATO=0
    Inc RESTODELPERSONAGGIO0(CATEGORIAO(A))
   End If 
   Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(A))
   Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(A))
  Else 
   If PERSONAGGIOTROVATO=0
    Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(A))
   End If 
   Add PESONETTOP(P),-PESOCO(CATEGORIAO(A))
   Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(A))
  End If 
  If Btst(1,TIPOCO(CATEGORIAO(A)))=True
   For B=0 To NUMEROO
    If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
     If Btst(1,TIPOO(B))=True
      Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(B))
      Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(B))
     Else 
      Add PESONETTOP(P),-PESOCO(CATEGORIAO(B))
      Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(B))
     End If 
    End If 
   Next B
   For B=1 To NUMEROP
    If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
     Add PESONETTOP(P),-PESOP(B)*1000
     Add PESONETTOP(P),-PESONETTOP(B)
     Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(B)*1000
     Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(B)
    End If 
   Next B
  End If 
  If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
   If PERSONAGGIOTROVATO=0
    Print NOMEP$(P);" ti dà 1 ";
   Else 
    Print NOMEP$(P);" dà 1 ";
   End If 
   If Btst(1,TIPOO(A))=True
    Print NOMESRO$(CATEGORIAO(A));
   Else 
    Print NOMESCO$(CATEGORIAO(A));
   End If 
   If PERSONAGGIOTROVATO=0
    Print 
   Else 
    Print " a ";NOMEP$(PERSONAGGIOTROVATO)
   End If 
  End If 
  Dec PARABAZIONEP(AZIONE,P)
  If PARABAZIONEP(AZIONE,P)=0
   FINEA(AZIONE,P)=True
  End If 
 End If 
End Proc
Procedure DAIAPABOTC[AZIONE,P]
 A=PARAAAZIONEP(AZIONE,P) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  NUMEROOGGETTODELPERSONAGGIOP=-1
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(A))=PARACAZIONEP(AZIONE,P)
    Inc NUMEROOGGETTODELPERSONAGGIOP
    B=A
   End If 
  Next A
  If NUMEROOGGETTODELPERSONAGGIOP=-1
   Pop Proc
  End If 
  If NUMEROOGGETTODELPERSONAGGIOP=0
   A=B
  Else 
   Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
   B=0
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(A))=PARACAZIONEP(AZIONE,P)
     OGGETTODELPERSONAGGIOP(B)=A
     Inc B
    End If 
   Next A
   A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
  End If 
  POSIZIONEO(A)=-1-PERSONAGGIOTROVATO
  If Btst(1,TIPOO(A))=True
   If PERSONAGGIOTROVATO=0
    Inc RESTODELPERSONAGGIO0(CATEGORIAO(A))
   End If 
   Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(A))
   Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(A))
  Else 
   If PERSONAGGIOTROVATO=0
    Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(A))
   End If 
   Add PESONETTOP(P),-PESOCO(CATEGORIAO(A))
   Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(A))
  End If 
  If Btst(1,TIPOCO(CATEGORIAO(A)))=True
   For B=0 To NUMEROO
    If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
     If Btst(1,TIPOO(B))=True
      Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(B))
      Add PESONETTOP(PERSONAGGIOTROVATO),PESORESTOCO(CATEGORIAO(B))
     Else 
      Add PESONETTOP(P),-PESOCO(CATEGORIAO(B))
      Add PESONETTOP(PERSONAGGIOTROVATO),PESOCO(CATEGORIAO(B))
     End If 
    End If 
   Next B
   For B=1 To NUMEROP
    If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
     Add PESONETTOP(P),-PESOP(B)*1000
     Add PESONETTOP(P),-PESONETTOP(B)
     Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(B)*1000
     Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(B)
    End If 
   Next B
  End If 
  If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
   If PERSONAGGIOTROVATO=0
    Print NOMEP$(P);" ti dà 1 ";
   Else 
    Print NOMEP$(P);" dà 1 ";
   End If 
   If Btst(1,TIPOO(A))=True
    Print NOMESRO$(CATEGORIAO(A));
   Else 
    Print NOMESCO$(CATEGORIAO(A));
   End If 
   If PERSONAGGIOTROVATO=0
    Print 
   Else 
    Print " a ";NOMEP$(PERSONAGGIOTROVATO)
   End If 
  End If 
  Dec PARABAZIONEP(AZIONE,P)
  If PARABAZIONEP(AZIONE,P)=0
   FINEA(AZIONE,P)=True
  End If 
 End If 
End Proc
Procedure DAIAPABP[AZIONE,P]
 A=PARAAAZIONEP(AZIONE,P) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  For A=0 To NUMEROP
   If POSIZIONEP(A)=-1-P and Btst(0,TIPOP(A))=True
    POSIZIONEP(A)=-1-PERSONAGGIOTROVATO
    Add PESONETTOP(P),-PESOP(A)*1000
    Add PESONETTOP(P),-PESONETTOP(A)
    Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(A)*1000
    Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(A)
    If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
     If PERSONAGGIOTROVATO=0
      Print NOMEP$(P);" ti dà ";
     Else 
      Print NOMEP$(P);" dà ";
     End If 
     Print NOMEP$(A);
     If PERSONAGGIOTROVATO=0
      Print 
     Else 
      Print " a ";NOMEP$(PERSONAGGIOTROVATO)
     End If 
    End If 
    Dec PARABAZIONEP(AZIONE,P)
    If PARABAZIONEP(AZIONE,P)=0
     FINEA(AZIONE,P)=True
    End If 
    Exit 
   End If 
  Next A
 End If 
End Proc
Procedure DAIAPAPB[AZIONE,P]
 A=PARAAAZIONEP(AZIONE,P) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  A=PARABAZIONEP(AZIONE,P)
  If POSIZIONEP(A)=-1-P and Btst(0,TIPOP(A))=True
   POSIZIONEP(A)=-1-PERSONAGGIOTROVATO
   Add PESONETTOP(P),-PESOP(A)*1000
   Add PESONETTOP(P),-PESONETTOP(A)
   Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(A)*1000
   Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(A)
   If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
    If PERSONAGGIOTROVATO=0
     Print NOMEP$(P);" ti dà ";
    Else 
     Print NOMEP$(P);" dà ";
    End If 
    Print NOMEP$(A);
    If PERSONAGGIOTROVATO=0
     Print 
    Else 
     Print " a ";NOMEP$(PERSONAGGIOTROVATO)
    End If 
   End If 
   FINEA(AZIONE,P)=True
  End If 
 End If 
End Proc
Procedure DAIDEISOLDI
 Locate 0,ULTIMALINEA : Input "Quanti soldi vuoi dare (0-"+Str$(SOLDIP(0))-" "+") ?>";SOLDIDADARE$;
 Curs Off 
 If SOLDIDADARE$<>""
  SOLDIDADARE=Val(SOLDIDADARE$)
  Proc LIMITI[SOLDIDADARE,0,SOLDIP(0)] : SOLDIDADARE=Param
  If SOLDIDADARE>0
   Add SOLDIP(0),-SOLDIDADARE*PESOS
   Proc PERSONAGGIORICEVENTE["S",SOLDIDADARE]
  End If 
 End If 
End Proc
Procedure DAIUNOGGETTO
 For A=0 To NUMEROCO
  If OGGETTODELPERSONAGGIO0(A)>0
   Inc CATEGORIEOGGETTI
  End If 
  If RESTODELPERSONAGGIO0(A)>0
   Inc CATEGORIEOGGETTI
  End If 
 Next A
 If CATEGORIEOGGETTI>0
  If CATEGORIEOGGETTI>1
   Locate 0,ULTIMALINEA : Input "Quale oggetto vuoi dare ?>";OGGETTO$;
   Curs Off 
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
     If Lower$(OGGETTO$)=Lower$(NOMESCO$(CATEGORIAO(A)))
      Proc PERSONAGGIORICEVENTE["O",A] : Exit 
     Else If Lower$(OGGETTO$)=Lower$(NOMESRO$(CATEGORIAO(A)))
      Proc PERSONAGGIORICEVENTE["O",A] : Exit 
     End If 
    End If 
   Next A
  Else 
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
     Proc PERSONAGGIORICEVENTE["O",A] : Exit 
    End If 
   Next A
  End If 
 End If 
End Proc
Procedure DAIUNPERSONAGGIO
 For A=1 To NUMEROP
  If POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
   Inc PERSONAGGI
  End If 
 Next A
 If PERSONAGGI>0
  If PERSONAGGI>1
   Locate 0,ULTIMALINEA : Input "Quale personaggio vuoi dare ?>";PERSONAGGIO$;
   Curs Off 
   For A=0 To NUMEROP
    If Lower$(PERSONAGGIO$)=Lower$(NOMEP$(A)) and POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
     Proc PERSONAGGIORICEVENTE["P",A]
     Exit 
    End If 
   Next A
   If A=NUMEROP+1
    Locate 0,ULTIMALINEA : Cline : Print "Non trasporti nessun ";PERSONAGGIO$;
    If _MUSICA=False
     Bell 1
    End If 
    Proc _ASPETTA
   End If 
  Else 
   For A=0 To NUMEROP
    If POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
     Proc PERSONAGGIORICEVENTE["P",A]
    End If 
   Next A
  End If 
 End If 
End Proc
Procedure DAVARIABILIABANCO[M0DO]
 Shared LUNGHEZZABANCO
 SENZAMEMORIA=False
 If M0DO=True
  TIC["Vuoi salvare anche il tempo trascorso di gioco (s/n) ?",ULTIMALINEA]
  RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
  If RISPOSTA$="s"
   TEMP0TRASCORSODASALVARE=TEMP0TRASCORSO
  Else 
   TEMP0TRASCORSODASALVARE=0
  End If 
  TIC["Un attimo che converto i dati...",ULTIMALINEA]
  Reserve As Work BANCO,LUNGHEZZABANCO
  INDIRIZZO=Start(BANCO)
  Poke$ INDIRIZZO,"Adventures Conceiver"+Chr$(10)
  Add INDIRIZZO,21
  DATO$="Nemici attivi o no:"+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  DATO$=Str$(ANEMICI)-" "+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  DATO$="Numero delle categorie degli oggetti:"+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  DATO$=Str$(NUMEROCO)-" "+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  For A=0 To NUMEROCO
   DATO$="Categoria"+Str$(A)+">"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Nome singolare:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=NOMESCO$(A)+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Nome plurale:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=NOMEPCO$(A)+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Nome singolare resto:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=NOMESRO$(A)+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Nome plurale resto:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=NOMEPRO$(A)+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Peso:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(PESOCO(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Peso resto:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(PESORESTOCO(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Tipo:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(TIPOCO(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Parametro tipo:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(PARATIPOCO(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Descrizione:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=DESCRIZIONECO$(A)+"|"
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Oggetto del personaggio zero:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(OGGETTODELPERSONAGGIO0(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Resto del personaggio zero:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(RESTODELPERSONAGGIO0(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Oggetto dato:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(OGGETTODATOOLASCIATO(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
  Next A
  DATO$="Numero degli edifici:"+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  DATO$=Str$(NUMEROE)-" "+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  If NUMEROE>-1
   For A=0 To NUMEROE
    DATO$="Edificio"+Str$(A)+">"+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$="Nome:"+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$=NOMEE$(A)+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$="Descrizione:"+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$=DESCRIZIONEE$(A)+"|"
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$="Numero delle stanze:"+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$=Str$(NUMEROS(A))-" "+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    For B=0 To NUMEROS(A)
     DATO$="Stanza"+Str$(A)+">"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Nome:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=NOMES$(B,A)+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Luogo a Nord:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=Str$(DREZIONES(0,B,A))-" "+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Luogo a NordEst:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=Str$(DREZIONES(1,B,A))-" "+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Luogo a Est:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=Str$(DREZIONES(2,B,A))-" "+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Luogo a SudEst:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=Str$(DREZIONES(3,B,A))-" "+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Luogo a Sud:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=Str$(DREZIONES(4,B,A))-" "+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Luogo a SudOvest:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=Str$(DREZIONES(5,B,A))-" "+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Luogo a Ovest:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=Str$(DREZIONES(6,B,A))-" "+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Luogo a NordOvest:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=Str$(DREZIONES(7,B,A))-" "+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Luogo Sopra:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=Str$(DREZIONES(8,B,A))-" "+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Luogo Sotto:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=Str$(DREZIONES(9,B,A))-" "+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Soldi:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=Str$(SOLDIS(B,A))-" "+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$="Descrizione:"+Chr$(10)
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
     DATO$=DESCRIZIONES$(B,A)+"|"
     Poke$ INDIRIZZO,DATO$
     Add INDIRIZZO,Len(DATO$)
    Next B
   Next A
  End If 
  DATO$="Numero dei luoghi:"+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  DATO$=Str$(NUMEROL)-" "+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  For A=0 To NUMEROL
   DATO$="Luogo"+Str$(A)+">"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Nome:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=NOMEL$(A)+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Luogo a Nord:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DREZIONEL(0,A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Luogo a NordEst:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DREZIONEL(1,A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Luogo a Est:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DREZIONEL(2,A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Luogo a SudEst:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DREZIONEL(3,A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Luogo a Sud:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DREZIONEL(4,A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Luogo a SudOvest:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DREZIONEL(5,A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Luogo a Ovest:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DREZIONEL(6,A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Luogo a NordOvest:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DREZIONEL(7,A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Luogo Sopra:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DREZIONEL(8,A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Luogo Sotto:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DREZIONEL(9,A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Soldi:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(SOLDIL(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Regione:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(REGIONEL(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Tipo di luogo:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(TIPOL(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Descrizione:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=DESCRIZIONEL$(A)+"|"
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
  Next A
  DATO$="Numero degli oggetti:"+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  DATO$=Str$(NUMEROO)-" "+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  For A=0 To NUMEROO
   DATO$="Oggetto"+Str$(A)+">"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Categoria:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(CATEGORIAO(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Posizione:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(POSIZIONEO(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Tipo:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(TIPOO(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
  Next A
  DATO$="Numero dei personaggi:"+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  DATO$=Str$(NUMEROP)-" "+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  For A=0 To NUMEROP
   DATO$="Personaggio"+Str$(A)+">"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Nome:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=NOMEP$(A)+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Posizione:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(POSIZIONEP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Costituzione:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(C0STITUZIONEP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Destrezza:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DESTREZZAP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Forza:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(F0RZAP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Peso:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(PESOP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Peso netto:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(PESONETTOP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Resistenza:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(RESISTENZAP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Soldi:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(SOLDIP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Tipo:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(TIPOP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Descrizione:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=DESCRIZIONEP$(A)+"|"
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Inizio sonno:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(INIZIOSONNOP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Durata sonno:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(SONNOP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Direzione presa:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(DREZIONEPRESAP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Luogo di destinazione:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(LUOGODIDESTINAZIONEP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Tempo di attraversamento:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(TEMP0DIATTRAVERSAMENTOP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Soldi ricevuti:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(SOLDIRICEVUTIP(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   For B=0 To 7
    DATO$="Azione"+Str$(B)+">"+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$=Str$(AZIONEP(B,A))-" "+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$="Parametro A azione"+Str$(B)+":"+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$=Str$(PARAAAZIONEP(B,A))-" "+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$="Parametro B azione"+Str$(B)+":"+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$=Str$(PARABAZIONEP(B,A))-" "+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$="Parametro C azione"+Str$(B)+":"+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
    DATO$=Str$(PARACAZIONEP(B,A))-" "+Chr$(10)
    Poke$ INDIRIZZO,DATO$
    Add INDIRIZZO,Len(DATO$)
   Next B
   DATO$="Posizione azione:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=Str$(POSIZIONEA(A))-" "+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
  Next A
  DATO$="Numero delle regioni:"+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  DATO$=Str$(NUMEROR)-" "+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  For A=0 To NUMEROR
   DATO$="Regione"+Str$(A)+">"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$="Nome:"+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
   DATO$=NOMER$(A)+Chr$(10)
   Poke$ INDIRIZZO,DATO$
   Add INDIRIZZO,Len(DATO$)
  Next A
  DATO$="Giornata:"+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  DATO$=Str$(CONDIZIONEG)-" "+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  DATO$="Tempo trascorso:"+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  DATO$=Str$(TEMP0TRASCORSODASALVARE)-" "+Chr$(10)
  Poke$ INDIRIZZO,DATO$
  Add INDIRIZZO,Len(DATO$)
  If INDIRIZZO>Start(BANCO)+Length(BANCO)
   Proc TIC["Conversione dati fallita!",ULTIMALINEA]
   Proc _ASPETTA
   SENZAMEMORIA=True
  End If 
 Else 
  Cls 
  Proc TIC["Sto calcolando la lunghezza del banco dei dati...",ULTIMALINEA]
  INDIRIZZO=21
  Print At(0,0);"Lunghezza banco>";Str$(INDIRIZZO)-" ";" Byte"
  DATO$="Nemici attivi o no:"+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  DATO$=Str$(ANEMICI)-" "+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  DATO$="Numero delle categorie degli oggetti:"+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  DATO$=Str$(NUMEROCO)-" "+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  For A=0 To NUMEROCO
   DATO$="Categoria"+Str$(A)+">"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Nome singolare:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=NOMESCO$(A)+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Nome plurale:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=NOMEPCO$(A)+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Nome singolare resto:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=NOMESRO$(A)+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Nome plurale resto:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=NOMEPRO$(A)+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Peso:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(PESOCO(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Peso resto:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(PESORESTOCO(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Tipo:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(TIPOCO(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Parametro tipo:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(PARATIPOCO(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Descrizione:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=DESCRIZIONECO$(A)+"|"
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Oggetto del personaggio zero:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(OGGETTODELPERSONAGGIO0(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Resto del personaggio zero:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(RESTODELPERSONAGGIO0(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Oggetto dato:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(OGGETTODATOOLASCIATO(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  Next A
  DATO$="Numero degli edifici:"+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  DATO$=Str$(NUMEROE)-" "+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  If NUMERO>-1
   For A=0 To NUMEROE
    DATO$="Edificio"+Str$(A)+">"+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$="Nome:"+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$=NOMEE$(A)+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$="Descrizione:"+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$=DESCRIZIONEE$(A)+"|"
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$="Numero delle stanze:"+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$=Str$(NUMEROS(A))-" "+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    For B=0 To NUMEROS(A)
     DATO$="Stanza"+Str$(A)+">"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Nome:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=NOMES$(B,A)+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Luogo a Nord:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=Str$(DREZIONES(0,B,A))-" "+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Luogo a NordEst:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=Str$(DREZIONES(1,B,A))-" "+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Luogo a Est:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=Str$(DREZIONES(2,B,A))-" "+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Luogo a SudEst:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=Str$(DREZIONES(3,B,A))-" "+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Luogo a Sud:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=Str$(DREZIONES(4,B,A))-" "+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Luogo a SudOvest:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=Str$(DREZIONES(5,B,A))-" "+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Luogo a Ovest:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=Str$(DREZIONES(6,B,A))-" "+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Luogo a NordOvest:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=Str$(DREZIONES(7,B,A))-" "+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Luogo Sopra:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=Str$(DREZIONES(8,B,A))-" "+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Luogo Sotto:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=Str$(DREZIONES(9,B,A))-" "+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Soldi:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=Str$(SOLDIS(B,A))-" "+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$="Descrizione:"+Chr$(10)
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
     DATO$=DESCRIZIONES$(B,A)+"|"
     Add INDIRIZZO,Len(DATO$)
     Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    Next B
   Next A
  End If 
  DATO$="Numero dei luoghi:"+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  DATO$=Str$(NUMEROL)-" "+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  For A=0 To NUMEROL
   DATO$="Luogo"+Str$(A)+">"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Nome:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=NOMEL$(A)+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Luogo a Nord:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DREZIONEL(0,A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Luogo a NordEst:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DREZIONEL(1,A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Luogo a Est:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DREZIONEL(2,A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Luogo a SudEst:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DREZIONEL(3,A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Luogo a Sud:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DREZIONEL(4,A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Luogo a SudOvest:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DREZIONEL(5,A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Luogo a Ovest:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DREZIONEL(6,A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Luogo a NordOvest:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DREZIONEL(7,A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Luogo Sopra:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DREZIONEL(8,A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Luogo Sotto:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DREZIONEL(9,A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Soldi:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(SOLDIL(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Regione:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(REGIONEL(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Tipo di luogo:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(TIPOL(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Descrizione:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=DESCRIZIONEL$(A)+"|"
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  Next A
  DATO$="Numero degli oggetti:"+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  DATO$=Str$(NUMEROO)-" "+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  For A=0 To NUMEROO
   DATO$="Oggetto"+Str$(A)+">"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Categoria:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(CATEGORIAO(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Posizione:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(POSIZIONEO(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Tipo:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(TIPOO(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  Next A
  DATO$="Numero dei personaggi:"+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  DATO$=Str$(NUMEROP)-" "+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  For A=0 To NUMEROP
   DATO$="Personaggio"+Str$(A)+">"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Nome:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=NOMEP$(A)+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Posizione:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(POSIZIONEP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Costituzione:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(C0STITUZIONEP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Destrezza:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DESTREZZAP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Forza:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(F0RZAP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Peso:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(PESOP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Peso netto:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(PESONETTOP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Resistenza:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(RESISTENZAP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Soldi:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(SOLDIP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Tipo:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(TIPOP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Descrizione:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=DESCRIZIONEP$(A)+"|"
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Inizio sonno:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(INIZIOSONNOP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Durata sonno:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(SONNOP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Direzione presa:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(DREZIONEPRESAP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Luogo di destinazione:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(LUOGODIDESTINAZIONEP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Tempo di attraversamento:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(TEMP0DIATTRAVERSAMENTOP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Soldi ricevuti:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(SOLDIRICEVUTIP(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   For B=0 To 7
    DATO$="Azione"+Str$(B)+">"+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$=Str$(AZIONEP(B,A))-" "+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$="Parametro A azione"+Str$(B)+":"+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$=Str$(PARAAAZIONEP(B,A))-" "+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$="Parametro B azione"+Str$(B)+":"+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$=Str$(PARABAZIONEP(B,A))-" "+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$="Parametro C azione"+Str$(B)+":"+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
    DATO$=Str$(PARACAZIONEP(B,A))-" "+Chr$(10)
    Add INDIRIZZO,Len(DATO$)
    Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   Next B
   DATO$="Posizione azione:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=Str$(POSIZIONEA(A))-" "+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  Next A
  DATO$="Numero delle regioni:"+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  DATO$=Str$(NUMEROR)-" "+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  For A=0 To NUMEROR
   DATO$="Regione"+Str$(A)+">"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$="Nome:"+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
   DATO$=NOMER$(A)+Chr$(10)
   Add INDIRIZZO,Len(DATO$)
   Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  Next A
  DATO$="Giornata:"+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  DATO$=Str$(CONDIZIONEG)-" "+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  DATO$="Tempo trascorso:"+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  DATO$=Str$(TEMP0TRASCORSODASALVARE)-" "+Chr$(10)
  Add INDIRIZZO,Len(DATO$)
  Print At(16,0);Str$(INDIRIZZO)-" ";" Byte"
  MEMORIA=Max(Chip Free,Fast Free)
  If INDIRIZZO>MEMORIA
   Proc TIC["Mancano"+Str$(INDIRIZZO-1-MEMORIA)+" Byte",ULTIMALINEA]
   Proc _ASPETTA
   SENZAMEMORIA=True
  Else 
   LUNGHEZZABANCO=INDIRIZZO
   SENZAMEMORIA=False
  End If 
 End If 
End Proc
Procedure D0RMI
 COMPIUTAAZIONE=Rnd(120)+420
 Bset 2,TIPOP(0)
 Print At(0,ULTIMALINEA);"Hai deciso di dormire";
 Proc _ASPETTA
End Proc
Procedure EDIFICI
 If NUMEROE>-1
  For A=0 To NUMEROE
   If POSIZIONEE(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(0)=0
    EDIFICIVISIBILI=True
   End If 
  Next A
 Else 
  EDIFICIVISIBILI=False
 End If 
 If EDIFICIVISIBILI=True
  Print "Edifici visibili>"
  Proc FONDOSCHERMOGIOCO
  For A=0 To NUMEROE
   If POSIZIONEE(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(0)=0
    Print NOMEE$(A)
   End If 
   Proc FONDOSCHERMOGIOCO
  Next A
 Else 
  Print "Nessun edificio visibile"
 End If 
End Proc
Procedure EDIFICIOESTANZA
 E=POSIZIONEP(0)/$10000
 Print "Edificio>";NOMEE$(E)
 S=POSIZIONEP(0) mod $10000
 Print "Stanza>";NOMES$(S,E)
 Print "Direzioni visibili>";
 For A=0 To 9
  DREZIONE=DREZIONES(A,S,E) mod $10000
  If DREZIONE<$FFFF Then Print DREZIONEL$(A);" ";
 Next A
 Print 
End Proc
Procedure ESAMINA
 For A=1 To NUMEROP
  If PERSONAGGIOVISIBILEP(A)=True Then OGGETTIEPERSONAGGIDAESAMINARE=True
  If POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
   OGGETTIEPERSONAGGIDAESAMINARE=True
  End If 
 Next A
 If TEMP0DIATTRAVERSAMENTOP(0)=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=POSIZIONEP(0) and Btst(3,TIPOO(A))=False
    OGGETTIEPERSONAGGIDAESAMINARE=True
   End If 
  Next A
 End If 
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True and Btst(3,TIPOO(A))=False
   OGGETTIEPERSONAGGIDAESAMINARE=True
  End If 
 Next A
 If OGGETTIEPERSONAGGIDAESAMINARE=True
  Cls 
  Print "Personaggi ed oggetti esaminabili>"
  For A=1 To NUMEROP
   If POSIZIONEP(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(A)=DREZIONEPRESAP(0)
    If RESISTENZAP(A)=0
     Print "Il cadavere di ",NOMEP$(A)
    Else 
     Print NOMEP$(A)
    End If 
    Proc FONDOSCHERMOGIOCO
   End If 
   If POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
    If RESISTENZAP(A)=0
     Print "Il cadavere di ";NOMEP$(A);" (che stai trasportando)"
    Else 
     Print NOMEP$(A);" (che stai trasportando)"
    End If 
    Proc FONDOSCHERMOGIOCO
   End If 
  Next A
  For A=0 To NUMEROO
   If POSIZIONEO(A)=POSIZIONEP(0)
    If Btst(3,TIPOO(A))=False
     Print Str$(A+1)-" ";">";
     If Btst(1,TIPOO(A))=True
      Print NOMESRO$(CATEGORIAO(A))
     Else 
      Print NOMESCO$(CATEGORIAO(A))
     End If 
     Proc FONDOSCHERMOGIOCO
    End If 
   Else If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
    Print Str$(A+1)-" ";">";
    If Btst(1,TIPOO(A))=True
     Print NOMESRO$(CATEGORIAO(A));
    Else 
     Print NOMESCO$(CATEGORIAO(A));
    End If 
    Print " (che stai trasportando)"
    Proc FONDOSCHERMOGIOCO
   End If 
  Next A
  Print At(0,ULTIMALINEA-1);"Chi o che cosa vuoi esaminare ?>" : Locate 0,ULTIMALINEA
  Input "Numero=Oggetto/Nome=Personaggio>";NUMEROOGGETTOONOMEPERSONAGGIO$;
  Curs Off 
  If NUMEROOGGETTOONOMEPERSONAGGIO$<>""
   If Val(NUMEROOGGETTOONOMEPERSONAGGIO$)=0
    If NUMEROOGGETTOONOMEPERSONAGGIO$="0"
     Pop Proc
    End If 
    For A=1 To NUMEROP
     If Lower$(NUMEROOGGETTOONOMEPERSONAGGIO$)=Lower$(NOMEP$(A))
      Exit 
     End If 
    Next A
    If A=NUMEROP+1
     Print At(0,ULTIMALINEA);"Non c'è nessun ";NUMEROOGGETTOONOMEPERSONAGGIO$;" da esaminare    ";
     If _MUSICA=False
      Bell 1
     End If 
     Proc _ASPETTA
    Else 
     COMPIUTAAZIONE=1
     Cls 
     If RESISTENZAP(A)=0
      Print NOMEP$(A);" era un";
      If Btst(1,TIPOP(A))=True
       Print "a femmina"
      Else 
       Print " maschio"
      End If 
     Else 
      Print NOMEP$(A);" è un";
      If Btst(1,TIPOP(A))=True
       Print "a femmina"
      Else 
       Print " maschio"
      End If 
      If Btst(2,TIPOP(A))=True
       Print NOMEP$(A);" sta dormendo"
      End If 
      For B=0 To NUMEROO
       If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=True and Btst(3,TIPOO(B))=False
        OGGETTIDAMOSTRARE=True
       End If 
      Next B
      If SOLDIP(A)>0
       OGGETTIDAMOSTRARE=True
      End If 
      If OGGETTIDAMOSTRARE=True
       For B=0 To NUMEROCO
        OGGETTIDIA(B)=0
        RESTIDIA(B)=0
       Next B
       For B=0 To NUMEROO
        If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=True and Btst(3,TIPOO(B))=False
         If Btst(1,TIPOO(B))=True
          Inc RESTIDIA(CATEGORIAO(B))
         Else 
          Inc OGGETTIDIA(CATEGORIAO(B))
         End If 
        End If 
       Next B
       Print "Inventario oggetti di ";NOMEP$(A);">"
       For B=0 To NUMEROCO
        If OGGETTIDIA(B)>0
         Print Str$(OGGETTIDIA(B))-" ";" ";
         If OGGETTIDIA(B)=1
          Print NOMESCO$(B)
         Else 
          Print NOMEPCO$(B)
         End If 
        End If 
        If RESTIDIA(B)>0
         Print Str$(RESTIDIA(B))-" ";" ";
         If RESTIDIA(B)=1
          Print NOMESRO$(B)
         Else 
          Print NOMEPRO$(B)
         End If 
        End If 
       Next B
       If SOLDIP(B)>0
        Print Str$(SOLDIP(B))-" ";" ";
        If SOLDIP(B)=1
         Print "soldo"
        Else 
         Print "soldi"
        End If 
        Proc FONDOSCHERMOGIOCO
       End If 
       For B=0 To NUMEROO
        If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=True
         If Btst(2,TIPOCO(CATEGORIAO(B)))=True and Btst(2,TIPOO(B))=True
          Print NOMEP$(A);" indossa 1 ";NOMESCO$(CATEGORIAO(B))
          Exit 
         End If 
        End If 
       Next B
      Else 
       Print NOMEP$(A);" non ha nessun oggetto"
      End If 
     End If 
     Proc TIC["Premi un tasto",ULTIMALINEA] : Wait Key 
    End If 
   Else 
    OGGETTODAESAMINARE=Val(NUMEROOGGETTOONOMEPERSONAGGIO$)
    For A=0 To NUMEROO
     If POSIZIONEO(A)=POSIZIONEP(0) and Btst(3,TIPOO(A))=False and A=OGGETTODAESAMINARE-1
      Exit 
     End If 
     If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True and Btst(3,TIPOO(A))=False and A=OGGETTODAESAMINARE-1
      Exit 
     End If 
    Next A
    If A=NUMEROO+1
     Print At(0,ULTIMALINEA);"Non c'è nessun oggetto col numero";OGGETTODAESAMINARE;
     If _MUSICA=False
      Bell 1
     End If 
     Proc _ASPETTA
    Else 
     COMPIUTAAZIONE=1
     Cls 
     Print "Oggetto numero";OGGETTODAESAMINARE;">";
     If Btst(1,TIPOO(A))=True
      Print NOMESRO$(CATEGORIAO(A))
     Else 
      Print NOMESCO$(CATEGORIAO(A))
     End If 
     If Btst(0,TIPOCO(CATEGORIAO(A)))=True
      Print "è commestibile"
     End If 
     If Btst(1,TIPOCO(CATEGORIAO(A)))=True
      Print "è un contenitore"
     End If 
     If Btst(2,TIPOCO(CATEGORIAO(A)))=True
      Print "è difensivo"
     End If 
     If Btst(3,TIPOCO(CATEGORIAO(A)))=True
      Print "è leggibile"
     End If 
     If Btst(4,TIPOCO(CATEGORIAO(A)))=True
      Print "è liquido"
     Else 
      Print "è solido"
     End If 
     If Btst(5,TIPOCO(CATEGORIAO(A)))=True
      Print "è magico"
     End If 
     If Btst(6,TIPOCO(CATEGORIAO(A)))=True
      Print "è offensivo"
     End If 
     If Btst(7,TIPOCO(CATEGORIAO(A)))=True
      Print "è residente"
     End If 
     If Btst(8,TIPOCO(CATEGORIAO(A)))=True
      Print "è trasferibile"
     End If 
     If Btst(9,TIPOCO(CATEGORIAO(A)))=True
      Print "è trasparente"
     End If 
     If Btst(10,TIPOCO(CATEGORIAO(A)))=True
      Print "è vincolato"
     End If 
     If Btst(1,TIPOCO(CATEGORIAO(A)))=True and Btst(9,TIPOCO(CATEGORIAO(A)))=True
      For B=0 To NUMEROCO
       OGGETTIDIA(B)=0
       RESTIDIA(B)=0
      Next B
      For B=0 To NUMEROO
       If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False and Btst(3,TIPOO(B))=False
        OGGETTICONTENUTI=True
        If Btst(1,TIPOO(B))=True
         Inc RESTIDIA(CATEGORIAO(A))
        Else 
         Inc OGGETTIDIA(CATEGORIAO(A))
        End If 
       End If 
      Next B
      For B=1 To NUMEROP
       If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
        PERSONAGGICONTENUTI=True
       End If 
      Next B
      If OGGETTICONTENUTI=True
       Print "oggetti contenuti>"
       Proc FONDOSCHERMOGIOCO
       For B=0 To NUMEROCO
        If OGGETTIDIA(B)>0
         Print Str$(OGGETTIDIA(B))-" ";" ";
         If OGGETTIDIA(B)=1
          Print NOMESCO$(B)
         Else 
          Print NOMEPCO$(B)
         End If 
         Proc FONDOSCHERMOGIOCO
        End If 
        If RESTIDIA(B)>0
         Print Str$(RESTIDIA(B))-" ";" ";
         If RESTIDIA(B)=1
          Print NOMESRO$(B)
         Else 
          Print NOMEPRO$(B)
         End If 
         Proc FONDOSCHERMOGIOCO
        End If 
       Next B
      Else 
       Print "non contiene nessun oggetto"
      End If 
      If PERSONAGGICONTENUTI=True
       Print "personaggi contenuti>"
       Proc FONDOSCHERMOGIOCO
       For B=1 To NUMEROP
        If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
         Print NOMEP$(B)
         Proc FONDOSCHERMOGIOCO
        End If 
       Next B
      Else 
       Print "non contiene nessun personaggio"
      End If 
     End If 
     Proc TIC["Premi un tasto",ULTIMALINEA] : Wait Key 
    End If 
   End If 
  End If 
 Else 
  Print At(0,ULTIMALINEA);"Non ci sono oggetti e personaggi da esaminare";
  If _MUSICA=False
   Bell 1
  End If 
  Proc _ASPETTA
 End If 
End Proc
Procedure FAIDORMIREGLIALTRIPERSONAGGI[P]
 M1NUTI=(TEMP0TRASCORSO+360) mod 1440-COMPIUTAAZIONE
 If INIZIOSONNOP(P)=M1NUTI
  If PERSONAGGIOVISIBILEP(P)=True
   If Btst(2,TIPOP(P))=False
    Print NOMEP$(P);" si è addormentat";
    If Btst(1,TIPOP(P))=True
     Print "a"
    Else 
     Print "o"
    End If 
   End If 
  End If 
  SONNOP(P)=Rnd(120)+420
  Bset 2,TIPOP(P)
 End If 
End Proc
Procedure FASEDELGIORNO
 Print "Fase del giorno>";
 M1NUTI=(TEMP0TRASCORSO+360) mod 1440
 If M1NUTI<360
  Print FASEG$(6)
 Else If M1NUTI>359 and M1NUTI<420
  Print FASEG$(0)
 Else If M1NUTI>419 and M1NUTI<540
  Print FASEG$(1)
 Else If M1NUTI>539 and M1NUTI<780
  Print FASEG$(2)
 Else If M1NUTI>779 and M1NUTI<1080
  Print FASEG$(3)
 Else If M1NUTI>1079 and M1NUTI<1140
  Print FASEG$(4)
 Else If M1NUTI>1139 and M1NUTI<1260
  Print FASEG$(5)
 Else 
  Print FASEG$(6)
 End If 
End Proc
Procedure FONDOSCHERMOEDITOR
 If MESSAGGIO1$<>""
  If Y Curs=ULTIMALINEA-1
   Proc TIC[MESSAGGIO1$,ULTIMALINEA-1]
   Proc TIC["premi un tasto",ULTIMALINEA]
   Wait Key 
   Cls 
  End If 
 Else 
  If Y Curs=ULTIMALINEA
   Proc TIC["premi un tasto",ULTIMALINEA]
   Wait Key 
   Cls 
  End If 
 End If 
End Proc
Procedure FONDOSCHERMOGIOCO
 If Y Curs=ULTIMALINEA
  Proc TIC["premi un tasto",ULTIMALINEA]
  Wait Key 
  Cls 
 End If 
End Proc
Procedure GIOCA
 Fade 5,$66
 Proc MOSTRAMESSAGGIO["Prologo",PROLOGO$]
 Repeat 
  Proc CONTROLLASEILPERSONAGGIO0HARAGGIUNTOLOSCOPODELGIOCO
  If FINEA(7,0)=True
   Proc MOSTRAMESSAGGIO["****************************** Epilogo ******************************",EPILOGO$]
   Exit 
  End If 
  If COMPIUTAAZIONE>0
   Add TEMP0TRASCORSO,COMPIUTAAZIONE
  End If 
  PERSONAGGIO0SITROVADENTROUNEDIFICIO=POSIZIONEP(0)/$10000
  If ANEMICI=True and PERSONAGGIO0SITROVADENTROUNEDIFICIO=0
   AZIONI=COMPIUTAAZIONE
   While AZIONI>0
    NEMICI=Rnd(127-TEMP0TRASCORSO/1440)
    NEMICI=Max(NEMICI,0)
    If NEMICI=0
     If Btst(2,TIPOP(0))=True
      Bclr 2,TIPOP(0) : Add COMPIUTAAZIONE,-AZIONI : AZIONI=1 : INEMICITISVEGLIANO=True
      Proc NEMICI[0]
     Else 
      Proc NEMICI[0]
     End If 
    End If 
    Dec AZIONI
   Wend 
  End If 
  Cls 
  If RESISTENZAP(0)=0 Then Proc MORTE[0] : Exit 
  Proc TIC["Premi * per le informazioni",0] : Print 
  Print "Nome del personaggio>";NOMEP$(0)
  Proc TEMP0
  If PERSONAGGIO0SITROVADENTROUNEDIFICIO=0
   Proc FASEDELGIORNO
   Proc CONDIZIONEDELGIORNO
   If TEMP0DIATTRAVERSAMENTOP(0)=0
    Proc LUOGO
    Proc TIPODILUOGO
    Proc EDIFICI
    Proc PERSONAGGI
    Proc OGGETTI[True]
    Print String$("*",80);
    Proc AZIONIALTRIPERSONAGGI
    Proc OGGETTI[False]
    Bclr 2,TIPOP(0)
    Memorize X : Memorize Y 
    Print At(0,ULTIMALINEA);"Che cosa vuoi fare ?";
    SCELTA$=Input$(1) : SCELTA$=Lower$(SCELTA$)
    If SCELTA$="*" : Proc INFORMAZIONI : End If 
    If SCELTA$="a" : Proc LASCIAPASSAREILTEMPO : End If 
    If SCELTA$="c" : Proc CARATTERISTICHE : End If 
    If SCELTA$="d" : Proc DAI : End If 
    If SCELTA$="e" : Proc ESAMINA : End If 
    If SCELTA$="g" : Proc GUARDA : End If 
    If SCELTA$="i" : Proc INVENTARIO : End If 
    If SCELTA$="j" and _MUSICA=True : Proc SUONAUNMODULO[FILEREQUESTERMUSICA] : End If 
    If SCELTA$="l" : Proc LASCIA : End If 
    If SCELTA$="m" : Proc MUOVITI : End If 
    If SCELTA$="p" : Proc PRENDI : End If 
    If SCELTA$="t" : M0DOVISUALIZZAZIONETEMPO= Not M0DOVISUALIZZAZIONETEMPO : End If 
    If SCELTA$="u" : Proc USA : End If 
    If SCELTA$="z" : Proc D0RMI : End If 
   Else 
    Print NOMEP$(0);" sta andando ";
    If DREZIONEPRESAP(0)>7
     Print Lower$(DREZIONE$(DREZIONEPRESAP(0)));
    Else 
     Print "a ";Lower$(DREZIONE$(DREZIONEPRESAP(0)));
    End If 
    Print " da ";NOMEL$(POSIZIONEP(0))
    Proc TIPODILUOGO
    Proc TIPODILUOGODIDESTINAZIONE
    If TEMP0DIATTRAVERSAMENTOP(0)=1
     Print "Gli resta 1 minuto";
    Else 
     Print "Gli restano";TEMP0DIATTRAVERSAMENTOP(0);" minuti";
    End If 
    Print " di cammino..."
    Proc PERSONAGGI
    Print String$("*",80);
    Proc AZIONIALTRIPERSONAGGI
    Print At(0,ULTIMALINEA);"Che cosa vuoi fare ?";
    SCELTA$=Input$(1) : SCELTA$=Lower$(SCELTA$)
    If SCELTA$="*" : Proc INFORMAZIONI : End If 
    If SCELTA$="a" : Proc LASCIAPASSAREILTEMPO : End If 
    If SCELTA$="c" : Proc CARATTERISTICHE : End If 
    If SCELTA$="d" : Proc DAI : End If 
    If SCELTA$="i" : Proc INVENTARIO : End If 
    If SCELTA$="j" and _MUSICA=True : Proc SUONAUNMODULO[FILEREQUESTERMUSICA] : End If 
    If SCELTA$="l" : Proc LASCIA : End If 
    If SCELTA$="m" : Proc MUOVITI : MUOVITI=True : End If 
    If SCELTA$="p" : Proc PRENDI : End If 
    If SCELTA$="t" : M0DOVISUALIZZAZIONETEMPO= Not M0DOVISUALIZZAZIONETEMPO : End If 
    If SCELTA$="z" : Proc D0RMI : End If 
   End If 
  Else 
   Proc EDIFICIOESTANZA
   Proc PERSONAGGI
   Print String$("*",80);
   Proc AZIONIALTRIPERSONAGGI
   Print At(0,ULTIMALINEA);"Che cosa vuoi fare ?";
   SCELTA$=Input$(1) : SCELTA$=Lower$(SCELTA$)
   If SCELTA$="*" : Proc INFORMAZIONI : End If 
   If SCELTA$="a" : Proc LASCIAPASSAREILTEMPO : End If 
   If SCELTA$="c" : Proc CARATTERISTICHE : End If 
   If SCELTA$="d" : Proc DAI : End If 
   If SCELTA$="i" : Proc INVENTARIO : End If 
   If SCELTA$="j" and _MUSICA=True : Proc SUONAUNMODULO[FILEREQUESTERMUSICA] : End If 
   If SCELTA$="l" : Proc LASCIA : End If 
   If SCELTA$="m" : Proc MUOVITI : MUOVITI=True : End If 
   If SCELTA$="p" : Proc PRENDI : End If 
   If SCELTA$="t" : M0DOVISUALIZZAZIONETEMPO= Not M0DOVISUALIZZAZIONETEMPO : End If 
   If SCELTA$="z" : Proc D0RMI : End If 
  End If 
  Proc CONTROLLASEILPERSONAGGIO0HARAGGIUNTOLOSCOPODELGIOCO
  If FINEA(7,0)=True
   Proc MOSTRAMESSAGGIO["****************************** Epilogo ******************************",EPILOGO$]
   Exit 
  End If 
 Until SCELTA$="x"
 Fade 5,$60
End Proc
Procedure GUARDA
 For A=0 To NUMEROCO
  If OGGETTINELLUOGO(A)>0 Then Add OGGETTIVISIBILI,OGGETTINELLUOGO(A)
  If RESTINELLUOGO(A)>0 Then Add OGGETTIVISIBILI,RESTINELLUOGO(A)
  If OGGETTODELPERSONAGGIO0(A)>0 Then Add OGGETTIVISIBILI,OGGETTODELPERSONAGGIO0(A)
  If RESTODELPERSONAGGIO0(A)>0 Then Add OGGETTIVISIBILI,RESTODELPERSONAGGIO0(A)
 Next A
 If NUMEROE>-1
  For A=0 To NUMEROE
   If POSIZIONEE(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(0)=0
    Inc EDIFICIVISIBILI
   End If 
  Next A
 Else 
  EDIFICIVISIBILI=0
 End If 
 PERSONAGGIVISIBILI=1
 For A=1 To NUMEROP
  If PERSONAGGIOVISIBILEP(A)=True Then Inc PERSONAGGIVISIBILI
 Next A
 E=POSIZIONEP(0)/$10000
 If E>0
  If OGGETTIVISIBILI>0 and PERSONAGGIVISIBILI>0
   Print At(0,ULTIMALINEA);"Vuoi guardare un oggetto, un personaggio o la stanza (o/p/s) ?>";
   OGGETTOPERSONAGGIOOSTANZA$=Input$(1)
   OGGETTOPERSONAGGIOOSTANZA$=Lower$(OGGETTOPERSONAGGIOOSTANZA$)
   If OGGETTOPERSONAGGIOOSTANZA$="o"
    Proc GUARDAUNOGGETTO
   Else If OGGETTOPERSONAGGIOOSTANZA$="p"
    Proc GUARDAUNPERSONAGGIO
   Else If OGGETTOPERSONAGGIOOSTANZA$="s"
    Proc GUARDALASTANZA
   End If 
  Else If OGGETTIVISIBILI=0 and PERSONAGGIVISIBILI>0
   Print At(0,ULTIMALINEA);"Vuoi guardare un personaggio o la stanza (p/s) ?>";
   PERSONAGGIOOSTANZA$=Input$(1)
   PERSONAGGIOOSTANZA$=Lower$(PERSONAGGIOOSTANZA$)
   If PERSONAGGIOOSTANZA$="p"
    Proc GUARDAUNPERSONAGGIO
   Else If PERSONAGGIOOSTANZA$="s"
    Proc GUARDALASTANZA
   End If 
  End If 
 Else 
  If EDIFICIVISIBILI>0 and OGGETTIVISIBILI>0 and PERSONAGGIVISIBILI>0
   Print At(0,ULTIMALINEA);"Vuoi guardare un'edificio, il luogo, un oggetto od un personaggio (e/l/o/p) ?>";
   EDIFICIOLUOGOOGGETTOOPERSONAGGIO$=Input$(1)
   EDIFICIOLUOGOOGGETTOOPERSONAGGIO$=Lower$(EDIFICIOLUOGOOGGETTOOPERSONAGGIO$)
   If EDIFICIOLUOGOOGGETTOOPERSONAGGIO$="e"
    Proc GUARDALEDIFICIO
   Else If EDIFICIOLUOGOOGGETTOOPERSONAGGIO$="l"
    Proc GUARDAILLUOGO
   Else If EDIFICIOLUOGOOGGETTOOPERSONAGGIO$="o"
    Proc GUARDAUNOGGETTO
   Else If EDIFICIOLUOGOOGGETTOOPERSONAGGIO$="p"
    Proc GUARDAUNPERSONAGGIO
   End If 
  Else If EDIFICIVISIBILI>0 and OGGETTIVISIBILI=0 and PERSONAGGIVISIBILI>0
   Print At(0,ULTIMALINEA);"Vuoi guardare un'edificio, il luogo od un personaggio (e/l/p) ?>";
   EDIFICIOLUOGOOPERSONAGGIO$=Input$(1)
   EDIFICIOLUOGOOPERSONAGGIO$=Lower$(EDIFICIOLUOGOOOPERSONAGGIO$)
   If EDIFICIOLUOGOOGGETTOOPERSONAGGIO$="e"
    Proc GUARDALEDIFICIO
   Else If EDIFICIOLUOGOOOPERSONAGGIO$="l"
    Proc GUARDAILLUOGO
   Else If EDIFICIOLUOGOOPERSONAGGIO$="p"
    Proc GUARDAUNPERSONAGGIO
   End If 
  Else If EDIFICIVISIBILI=0 and OGGETTIVISIBILI>0 and PERSONAGGIVISIBILI>0
   Print At(0,ULTIMALINEA);"Vuoi guardare il luogo, un oggetto od un personaggio (l/o/p) ?>";
   LUOGOOGGETTOOPERSONAGGIO$=Input$(1)
   LUOGOOGGETTOOPERSONAGGIO$=Lower$(LUOGOOGGETTOOPERSONAGGIO$)
   If LUOGOOGGETTOOPERSONAGGIO$="l"
    Proc GUARDAILLUOGO
   Else If LUOGOOGGETTOOPERSONAGGIO$="o"
    Proc GUARDAUNOGGETTO
   Else If LUOGOOGGETTOOPERSONAGGIO$="p"
    Proc GUARDAUNPERSONAGGIO
   End If 
  Else If EDIFICIVISIBILI=0 and OGGETTIVISIBILI=0 and PERSONAGGIVISIBILI>0
   Print At(0,ULTIMALINEA);"Vuoi guardare il luogo od un personaggio (l/p) ?>";
   LUOGOOPERSONAGGIO$=Input$(1)
   LUOGOOPERSONAGGIO$=Lower$(LUOGOOPERSONAGGIO$)
   If LUOGOOPERSONAGGIO$="l"
    Proc GUARDAILLUOGO
   Else If LUOGOOPERSONAGGIO$="p"
    Proc GUARDAUNPERSONAGGIO
   End If 
  End If 
 End If 
End Proc
Procedure GUARDAILLUOGO
 LUOGO$=NOMEL$(POSIZIONEP(0))
 DESCRIZIONE$=DESCRIZIONEL$(POSIZIONEP(0))
 COMPIUTAAZIONE=1
 Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di guardare il luogo ";LUOGO$;
 Proc _ASPETTA
 Proc MOSTRAMESSAGGIO["Descrizione del luogo "+LUOGO$,DESCRIZIONE$]
End Proc
Procedure GUARDALASTANZA
 E=POSIZIONEP(0)/$10000 : S=POSIZIONEP(0) mod $10000
 STANZA$=NOMES$(S,E)
 DESCRIZIONE$=DESCRIZIONES$(S,E)
 COMPIUTAAZIONE=1
 Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di guardare la stanza ";STANZA$;
 Proc _ASPETTA
 Proc MOSTRAMESSAGGIO["Descrizione della stanza "+STANZA$,DESCRIZIONE$]
End Proc
Procedure GUARDALEDIFICIO
 For A=0 To NUMEROE
  If POSIZIONEE(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(0)=0
   Inc EDIFICIVISIBILI : E=A
  End If 
 Next A
 If EDIFICIVISIBILI>1
  Locate 0,ULTIMALINEA : Input "Quale edificio vuoi guardare ?>";EDIFICIO$;
  Curs Off 
  If EDIFICIO$<>""
   For A=1 To NUMEROE
    If Lower$(EDIFICIO$)=Lower$(NOMEE$(A)) and POSIZIONEE(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(0)=0
     EDIFICIO$=NOMEE$(A)
     DESCRIZIONE$=DESCRIZIONEE$(A)
     COMPIUTAAZIONE=1
     Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di guardare l'edificio ";EDIFICIO$;
     Proc _ASPETTA
     Proc MOSTRAMESSAGGIO["Descrizione dell'edificio "+EDIFICIO$,DESCRIZIONE$]
     Exit 
    End If 
   Next A
   If A=NUMEROP+1
    Locate 0,ULTIMALINEA : Cline : Print "Non c'è nessun ";EDIFICIO$;
    If _MUSICA=False
     Bell 1
    End If 
    Proc _ASPETTA
   End If 
  End If 
 Else 
  EDIFICIO$=NOMEE$(E)
  DESCRIZIONE$=DESCRIZIONEE$(E)
  COMPIUTAAZIONE=1
  Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di guardare l'edificio ";EDIFICIO$
  Proc _ASPETTA
  Proc MOSTRAMESSAGGIO["Descrizione dell'edificio "+EDIFICIO$,DESCRIZIONE$]
 End If 
End Proc
Procedure GUARDAUNOGGETTO
 For A=0 To NUMEROO
  If POSIZIONEO(A)=POSIZIONEP(0)
   Inc OGGETTIVISIBILI : O=A
  Else If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
   Inc OGGETTIVISIBILI : O=A
  End If 
 Next A
 If OGGETTIVISIBILI>1
  Cls 
  For A=0 To NUMEROO
   If POSIZIONEO(A)=POSIZIONEP(0)
    If Btst(3,TIPOO(A))=False
     Print Str$(A+1)-" ";">";
     If Btst(1,TIPOO(A))=True
      Print NOMESRO$(CATEGORIAO(A))
     Else 
      Print NOMESCO$(CATEGORIAO(A))
     End If 
     Proc FONDOSCHERMOGIOCO
    End If 
   Else If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
    Print Str$(A+1)-" ";">";
    If Btst(1,TIPOO(A))=True
     Print NOMESRO$(CATEGORIAO(A));
    Else 
     Print NOMESCO$(CATEGORIAO(A));
    End If 
    Print " (che stai trasportando)"
    Proc FONDOSCHERMOGIOCO
   End If 
  Next A
  Locate 0,ULTIMALINEA
  Input "Digita il numero dell'oggetto che vuoi guardare>";NUMEROOGGETTO$;
  Curs Off 
  If NUMEROOGGETTO$<>""
   NUMEROOGGETTO=Val(NUMEROOGGETTO$)
   For A=0 To NUMEROO
    If POSIZIONEO(A)=POSIZIONEP(0) and Btst(3,TIPOO(A))=False and A=NUMEROOGGETTO-1
     Exit 
    Else If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True and Btst(3,TIPOO(A))=False and A=NUMEROOGGETTO-1
     Exit 
    End If 
   Next A
   If A=NUMEROO+1
    Locate 0,ULTIMALINEA : Cline : Print "Non c'è nessun oggetto col numero";NUMEROOGGETTO;
    If _MUSICA=False
     Bell 1
    End If 
    Proc _ASPETTA
   Else 
    OGGETTO$=NOMESCO$(CATEGORIAO(A))
    DESCRIZIONE$=DESCRIZIONECO$(CATEGORIAO(A))
    COMPIUTAAZIONE=1
    Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di guardare l'oggetto ";OGGETTO$;
    Proc _ASPETTA
    Proc MOSTRAMESSAGGIO["Descrizione dell'oggetto "+OGGETTO$,DESCRIZIONE$]
   End If 
  End If 
 Else 
  OGGETTO$=NOMESCO$(CATEGORIAO(O))
  DESCRIZIONE$=DESCRIZIONECO$(CATEGORIAO(O))
  COMPIUTAAZIONE=1
  Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di guardare l'oggetto ";OGGETTO$;
  Proc _ASPETTA
  Proc MOSTRAMESSAGGIO["Descrizione dell'oggetto "+OGGETTO$,DESCRIZIONE$]
 End If 
End Proc
Procedure GUARDAUNPERSONAGGIO
 PERSONAGGIOVISIBILE=1
 For A=0 To NUMEROP
  If PERSONAGGIOVISIBILEP(A)=True Then Inc PERSONAGGIVISIBILI
 Next A
 If PERSONAGGIVISIBILI>1
  Locate 0,ULTIMALINEA : Input "Quale personaggio vuoi guardare ?>";PERSONAGGIO$;
  Curs Off 
  If PERSONAGGIO$<>""
   PERSONAGGIO$=Lower$(PERSONAGGIO$)
   If PERSONAGGIO$="me"
    PERSONAGGIO$=NOMEP$(0)
    DESCRIZIONE$=DESCRIZIONEP$(0)
    COMPIUTAAZIONE=1
    Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di guardarti";
    Proc _ASPETTA
    Proc MOSTRAMESSAGGIO["Descrizione del personaggio "+PERSONAGGIO$,DESCRIZIONE$]
   Else 
    For A=1 To NUMEROP
     If PERSONAGGIO$=Lower$(NOMEP$(A)) and POSIZIONEP(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(A)=DREZIONEPRESAP(0)
      PERSONAGGIO$=NOMEP$(A)
      DESCRIZIONE$=DESCRIZIONEP$(A)
      COMPIUTAAZIONE=1
      Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di guardare il personaggio ";PERSONAGGIO$;
      Proc _ASPETTA
      Proc MOSTRAMESSAGGIO["Descrizione del personaggio "+PERSONAGGIO$,DESCRIZIONE$]
      Exit 
     End If 
    Next A
    If A=NUMEROP+1
     Locate 0,ULTIMALINEA : Cline : Print "Non c'è nessun ";PERSONAGGIO$;
     If _MUSICA=False
      Bell 1
     End If 
     Proc _ASPETTA
    End If 
   End If 
  End If 
 Else 
  PERSONAGGIO$=NOMEP$(0)
  DESCRIZIONE$=DESCRIZIONEP$(0)
  COMPIUTAAZIONE=1
  Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di guardarti";
  Proc _ASPETTA
  Proc MOSTRAMESSAGGIO["Descrizione del personaggio "+PERSONAGGIO$,DESCRIZIONE$]
 End If 
End Proc
Procedure INFORMAZIONI
 Cls 
 TIC["Comandi utilizzabili:",0] : Print 
 If TEMP0DIATTRAVERSAMENTOP(0)=0
  Print "Premi A aspettare cinque minuti di gioco"
  Print "Premi C per vedere le caratteristiche del tuo personaggio"
  Print "Premi D per dare un oggetto, un personaggio o dei soldi ad un personaggio"
  Print "Premi E per esaminare un oggetto od un personaggio"
  Print "Premi G per guardare un'edificio, un luogo, un oggetto od un personaggio"
  Print "Premi I per vedere l'inventario del tuo personaggio"
  Print "Premi J (Juke Box) per cambiare il motivo di sottofondo"
  Print "Premi L per lasciare un oggetto, un personaggio o dei soldi"
  Print "Premi M per muoverti"
  Print "Premi P per prendere un oggetto, un personaggio o dei soldi"
  Print "Premi T per cambiare il modo di visualizzazione del tempo trascorso"
  Print "Premi U per usare un oggetto su un altro oggetto o su un personaggio"
  Print "Premi X per smettere di giocare"
  Print "Premi Z per dormire"
 Else 
  Print "Premi A per aspettare cinque minuti di gioco"
  Print "Premi C per vedere le caratteristiche del tuo personaggio"
  Print "Premi D per dare un oggetto, un personaggio o dei soldi ad un personaggio"
  Print "Premi I per vedere l'inventario del tuo personaggio"
  Print "Premi J (Juke Box) per cambiare il motivo di sottofondo"
  Print "Premi M per muoverti"
  Print "Premi T per cambiare il modo di visualizzazione del tempo trascorso"
  Print "Premi X per smettere di giocare"
  Print "Premi Z per dormire"
 End If 
 Proc TIC["Premi un tasto",ULTIMALINEA] : Wait Key 
End Proc
Procedure INIZIALIZZALEVARIABILI
 MESSAGGIO1$=""
 For A=0 To NUMMASCO
  NOMESCO$(A)="Oggetto"+Str$(A)
  NOMEPCO$(A)="Oggetti"+Str$(A)
  NOMESRO$(A)="Resto oggetto"+Str$(A)
  NOMEPRO$(A)="Resti oggetti"+Str$(A)
  PESOCO(A)=5
  PESORESTOCO(A)=1
  DESCRIZIONECO$(A)="Descrizione della categoria"+Str$(A)+" degli oggetti"
 Next A
 For A=0 To NUMMASE
  NOMEE$(A)="Edificio"+Str$(A)
  DESCRIZIONEE$(A)="Descrizione dell'edificio"+Str$(A)
  For B=0 To NUMMASS
   NOMES$(B,A)="Stanza"+Str$(B)
   DESCRIZIONES$(B,A)="Descrizione della stanza"+Str$(A)
  Next B
 Next A
 For A=0 To NUMMASL
  NOMEL$(A)="Luogo"+Str$(A)
  DESCRIZIONEL$(A)="Descrizione del luogo"+Str$(A)
 Next A
 For A=0 To NUMMASP
  NOMEP$(A)="Personaggio"+Str$(A)
  C0STITUZIONEP(A)=1
  DESTREZZAP(A)=1
  F0RZAP(A)=1
  PESOP(A)=1
  RESISTENZAP(A)=1
  DESCRIZIONEP$(A)="Descrizione del personaggio"+Str$(A)
 Next A
 For A=0 To NUMMASR
  NOMER$(A)="Regione"+Str$(A)
 Next A
End Proc
Procedure INSERISCIPARAMETRIAZIONE[AZIONE,A,P]
 Cls 
 Print "Nome del personaggio";P;">";NOMEP$(P)
 Locate 0,ULTIMALINEA
 If AZIONE=1
  Input "Quanti oggetti vuole dare ai personaggi (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
 Else If AZIONE=2
  Input "Quanti oggetti vuole dare ai personaggi?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARABAZIONEP(A,P)=Param
 Else If AZIONE=3
  Input "Quanti oggetti vuole dare ai personaggi (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARABAZIONEP(AZIONE,P)=Param
 Else If AZIONE=4
  Input "Quanti personaggi vuole dare ai personaggi (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
 Else If AZIONE=5
  Repeat 
   Input "Quale personaggio vuole dare ai personaggi (1-"+Str$(NUMEROP)-" "+") ?>";PARA;
   Proc LIMITI[PARA,1,NUMEROP] : PARA=Param : PARAAAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA
  Until PARA<>P
 Else If AZIONE=6
  Repeat 
   Input "A quale personaggio vuole dare (0-"+Str$(NUMEROP)-" "+") ?>";PARA;
   Proc LIMITI[PARA,0,NUMEROP] : PARA=Param : PARAAAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA : Cline 
  Until PARA<>P
  Input "Quanti oggetti vuole dare al personaggio"+Str$(PARA)+" ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
 Else If AZIONE=7
  Repeat 
   Input "A quale personaggio vuole dare (0-"+Str$(NUMEROP)-" "+") ?>";PARA;
   Proc LIMITI[PARA,0,NUMEROP] : PARA=Param : PARAAAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA
  Until PARA<>P
  Input "Quanti oggetti vuole dare al personaggio"+Str$(PARA)+" ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARACAZIONEP(A,P)=Param
 Else If AZIONE=8
  Repeat 
   Locate 0,ULTIMALINEA
   Input "A quale personaggio vuole dare (0-"+Str$(NUMEROP)-" "+") ?>";PARA;
   Proc LIMITI[PARA,0,NUMEROP] : PARA=Param : PARAAAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA : Cline 
  Until PARA<>P
  Input "Quanti oggetti vuole dare al personaggio"+Str$(PARA)+" ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARACAZIONEP(A,P)=Param
 Else If AZIONE=9
  Repeat 
   Input "A quale personaggio vuole dare (0-"+Str$(NUMEROP)-" "+") ?>";PARA;
   Proc LIMITI[PARA,0,NUMEROP] : PARA=Param : PARAAAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA : Cline 
  Until PARA<>P
  Input "Quanti personaggi vuole dare al personaggio"+Str$(PARA)+" ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
 Else If AZIONE=10
  Repeat 
   Input "A quale personaggio vuole dare (0-"+Str$(NUMEROP)-" "+") ?>";PARA;
   Proc LIMITI[PARA,0,NUMEROP] : PARA=Param : PARAAAZIONEP(A,P)=PARA
   Locate 0,ULTIMALINEA : Cline 
  Until PARA<>P
  Repeat 
   Input "Quale personaggio vuole dare al personaggio"+Str$(PARA)+" ?>";PARB;
   Proc LIMITI[PARB,0,NUMEROP] : PARABAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA : Cline 
  Until PARB<>PARA
 Else If AZIONE=11
  Input "Quanti oggetti vuole lasciare (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
 Else If AZIONE=12
  Input "Quanti oggetti vuole lasciare (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARABAZIONEP(A,P)=Param
 Else If AZIONE=13
  Input "Quanti oggetti vuole lasciare (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARABAZIONEP(A,P)=Param
 Else If AZIONE=14
  Input "Quanti personaggi vuole lasciare (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
 Else If AZIONE=15
  Repeat 
   Input "Quale personaggio vuole lasciare (1-"+Str$(NUMEROP)-" "+") ?>";PARA;
   Proc LIMITI[PARA,1,65535] : PARA=Param : PARAAAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA : Cline 
  Until PARA<>P
 Else If AZIONE=17
  Input "Quanti oggetti vuole prendere (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
 Else If AZIONE=18
  Input "Quanti oggetti vuole prendere (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARABAZIONEP(A,P)=Param
 Else If AZIONE=19
  Input "Quanti oggetti vuole prendere (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARABAZIONEP(A,P)=Param
 Else If AZIONE=20
  Input "Quanti personaggi vuole prendere (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
 Else If AZIONE=21
  Repeat 
   Input "Quale personaggio vuole prendere (1-"+Str$(NUMEROP)-" "+") ?>";PARA;
   Proc LIMITI[PARA,1,NUMEROP] : PARA=Param : PARAAAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA : Cline 
  Until PARA<>P
 Else If AZIONE=23
  Repeat 
   Input "Quale personaggio vuole seguire (0-"+Str$(NUMEROP)-" "+") ?>";PARA;
   Proc LIMITI[PARA,0,NUMEROP] : PARA=Param : PARAAAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA : Cline 
  Until PARA<>P
 Else If AZIONE=24
  Input "Su quanti oggetti vuole usare (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
 Else If AZIONE=25
  Input "Su quanti oggetti vuole usare (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARABAZIONEP(A,P)=Param
 Else If AZIONE=26
  Input "Su quanti oggetti vuole usare (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARABAZIONEP(A,P)=Param
 Else If AZIONE=27
  Input "Su quanti personaggi vuole usare (1-65535) ?>";PARA;
  Proc LIMITI[PARA,1,65535] : PARAAAZIONEP(A,P)=Param
 Else If AZIONE=28
  Repeat 
   Input "Su quale personaggio vuole usare (0-"+Str$(NUMEROP)-" "+") ?>";PARA;
   Proc LIMITI[PARA,0,NUMEROP] : PARA=Param : PARAAAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA : Cline 
  Until PARA<>P
 Else If AZIONE=29
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARAAAZIONEP(A,P)=Param
  Locate 0,ULTIMALINEA : Cline 
  Input "Su quanti oggetti vuole usare (1-65535) ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
 Else If AZIONE=30
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARAAAZIONEP(A,P)=Param
  Locate 0,ULTIMALINEA : Cline 
  Input "Su quanti oggetti vuole usare (1-65535) ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARACAZIONEP(A,P)=Param
 Else If AZIONE=31
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARAAAZIONEP(A,P)=Param
  Locate 0,ULTIMALINEA : Cline 
  Input "Su quanti oggetti vuole usare (1-65535) ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARACAZIONEP(A,P)=Param
 Else If AZIONE=32
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARAAAZIONEP(A,P)=Param
  Locate 0,ULTIMALINEA : Cline 
  Input "Su quanti personaggi vuole usare (1-65535) ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
 Else If AZIONE=33
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARAAAZIONEP(A,P)=Param
  Locate 0,ULTIMALINEA : Cline 
  Repeat 
   Input "Su quale personaggio vuole usare (0-"+Str$(NUMEROP)-" "+") ?>";PARB;
   Proc LIMITI[PARB,0,NUMEROP] : PARB=Param : PARABAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA : Cline 
  Until PARB<>P
 Else If AZIONE=34
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARAAAZIONEP(A,P)=Param
  Cls 
  Print "Nome del personaggio";P;">";NOMEP$(P)
  Locate 0,ULTIMALINEA : Cline 
  Input "Su quanti oggetti vuole usare (1-65535) ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
 Else If AZIONE=35
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARAAAZIONEP(A,P)=Param
  Cls 
  Print "Nome del personaggio";P;">";NOMEP$(P)
  Locate 0,ULTIMALINEA : Cline 
  Input "Su quanti oggetti vuole usare (1-65535) ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARACAZIONEP(A,P)=Param
 Else If AZIONE=36
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARAAAZIONEP(A,P)=Param
  Cls 
  Print "Nome del personaggio";P;">";NOMEP$(P)
  Locate 0,ULTIMALINEA : Cline 
  Input "Su quanti oggetti vuole usare (1-65535) ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARACAZIONEP(A,P)=Param
 Else If AZIONE=37
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARAAAZIONEP(A,P)=Param
  Cls 
  Print "Nome del personaggio";P;">";NOMEP$(P)
  Locate 0,ULTIMALINEA : Cline 
  Input "Su quanti personaggi vuole usare (1-65535) ?>";PARB;
  Proc LIMITI[PARB,1,65535] : PARABAZIONEP(A,P)=Param
 Else If AZIONE=38
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARAAAZIONEP(AZIONE,P)=Param
  Cls 
  Print "Nome del personaggio";P;">";NOMEP$(P)
  Locate 0,ULTIMALINEA : Cline 
  Repeat 
   Input "Su quale personaggio vuole usare (0-"+Str$(NUMEROP)-" "+") ?>";PARB;
   Proc LIMITI[PARB,0,NUMEROP] : PARB=Param : PARABAZIONEP(A,P)=Param
   Locate 0,ULTIMALINEA : Cline 
  Until PARB<>P
 Else If AZIONE=40
  Proc MOSTRAOGGETTOPERINSERIMENTO[P]
  PARAAAZIONEP(A,P)=Param
 Else If AZIONE=41
  Proc MOSTRACATEGORIAPERINSERIMENTO[P]
  PARAAAZIONEP(A,P)=Param
 End If 
End Proc
Procedure _INTERFACCIA
 A=Dialog Box(_INTERFACCIA$)
End Proc
Procedure INVENTARIO
 Cls 
 Print "Inventario degli oggetti e dei personaggi trasportati da ";NOMEP$(0);">"
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
   OGGETTIPRESENTI=True
  End If 
 Next A
 If SOLDIP(0)>0 Then OGGETTIPRESENTI=True
 If OGGETTIPRESENTI=True
  For A=0 To NUMEROCO
   If OGGETTODELPERSONAGGIO0(A)>0
    Print Str$(OGGETTODELPERSONAGGIO0(A))-" ";" ";
    If OGGETTODELPERSONAGGIO0(A)=1
     Print NOMESCO$(A)
    Else 
     Print NOMEPCO$(A)
    End If 
    Proc FONDOSCHERMOGIOCO
   End If 
   If RESTODELPERSONAGGIO0(A)>0
    Print Str$(RESTODELPERSONAGGIO0(A))-" ";" ";
    If RESTODELPERSONAGGIO0(A)=1
     Print NOMESRO$(A)
    Else 
     Print NOMEPRO$(A)
    End If 
    Proc FONDOSCHERMOGIOCO
   End If 
  Next A
  If SOLDIP(0)>0
   Print Str$(SOLDIP(0))-" ";" ";
   If SOLDIP(0)=1
    Print "soldo"
   Else 
    Print "soldi"
   End If 
   Proc FONDOSCHERMOGIOCO
  End If 
 Else 
  Print "Nessun oggetto trasportato"
 End If 
 For A=1 To NUMEROP
  If POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True Then PERSONAGGIPRESENTI=True
 Next A
 If PERSONAGGIPRESENTI=True
  Print "Personaggi trasportati da ";NOMEP$(0);">"
  For A=1 To NUMEROP
   If POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
    Print NOMEP$(A)
   End If 
   Proc FONDOSCHERMOGIOCO
  Next A
 Else 
  Print "Nessun personaggio trasportato"
 End If 
 If OGGETTIPRESENTI=True or PERSONAGGIPRESENTI=True
  Print "Peso totale degli oggetti e dei personaggi trasportati>";
  If PESONETTOP(0)>999
   PESOOEPDELP0=PESONETTOP(0)/1000
   Print Str$(PESOOEPDELP0)-" ";" ";
   If PESOOEPDELP0=1
    Print "chilo";
   Else 
    Print "chili";
   End If 
   PESOOEPDELP0=PESONETTOP(0) mod 1000
   If PESOOEPDELP0>0
    Print " e";PESOOEPDELP0;" ";
    If PESOOEPDELP0=1
     Print "grammo"
    Else 
     Print "grammi"
    End If 
   Else 
    Print 
   End If 
  Else 
   PESOOEPDELP0=PESONETTOP(0)
   Print Str$(PESOOEPDELP0)-" ";" ";
   If PESOOEPDELP0=1
    Print "grammo"
   Else 
    Print "grammi"
   End If 
  End If 
 End If 
 Proc TIC["Premi un tasto",ULTIMALINEA] : Wait Key 
End Proc
Procedure LASCIA
 If TEMP0DIATTRAVERSAMENTOP(0)>0
  For A=1 To NUMEROP
   If POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
    Inc PERSONAGGI
   End If 
  Next A
  If PERSONAGGI>0
   Proc LASCIAUNPERSONAGGIO
  Else 
   Print At(0,ULTIMALINEA);"Non hai personaggi da lasciare";
   If _MUSICA=False
    Bell 1
   End If 
   Proc _ASPETTA
   Pop Proc
  End If 
 Else 
  For A=1 To NUMEROP
   If POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
    Inc PERSONAGGI
   End If 
  Next A
 End If 
 For A=0 To NUMEROCO
  If OGGETTODELPERSONAGGIO0(A)>0 Then Inc CATEGORIEOGGETTI
  If RESTODELPERSONAGGIO0(A)>0 Then Inc CATEGORIEOGGETTI
 Next A
 If SOLDIP(0)>0 Then SOLDI=True
 If CATEGORIEOGGETTI>0 and PERSONAGGI>0 and SOLDI=True
  Print At(0,ULTIMALINEA);"Vuoi lasciare un oggetto,un personaggio o dei soldi (o/p/s) ?>";
  OGGETTOOPERSONAGGIO$=Input$(1)
  OGGETTOOPERSONAGGIO$=Lower$(OGGETTOOPERSONAGGIO$)
  If OGGETTOOPERSONAGGIO$="o"
   Proc LASCIAUNOGGETTO
  Else If OGGETTOOPERSONAGGIO$="p"
   Proc LASCIAUNPERSONAGGIO
  Else If OGGETTOOPERSONAGGIO$="s"
   Proc LASCIADEISOLDI
  End If 
 Else If CATEGORIEOGGETTI>0 and PERSONAGGI=0 and SOLDI=True
  Print At(0,ULTIMALINEA);"Vuoi lasciare un oggetto o dei soldi (o/s) ?>";
  OGGETTOOSOLDI$=Input$(1)
  OGGETTOOSOLDI$=Lower$(OGGETTOOSOLDI$)
  If OGGETTOOSOLDI$="o"
   Proc LASCIAUNOGGETTO
  Else If OGGETTOOSOLDI$="s"
   Proc LASCIADEISOLDI
  End If 
 Else If CATEGORIEOGGETTI=0 and PERSONAGGI>0 and SOLDI=True
  Print At(0,ULTIMALINEA);"Vuoi lasciare un personaggio o dei soldi (p/s) ?>";
  PERSONAGGIOOSOLDI$=Input$(1)
  PERSONAGGIOOSOLDI$=Lower$(PERSONAGGIOOSOLDI$)
  If PERSONAGGIOOSOLDI$="p"
   Proc LASCIAUNPERSONAGGIO
  Else If PERSONAGGIOOSOLDI$="s"
   Proc LASCIADEISOLDI
  End If 
 Else If CATEGORIEOGGETTI=0 and PERSONAGGI=0 and SOLDI=True
  Proc LASCIADEISOLDI
 Else If CATEGORIEOGGETTI>0 and PERSONAGGI>0 and SOLDI=False
  Print At(0,ULTIMALINEA);"Vuoi lasciare un oggetto od un personaggio (o/p) ?>";
  OGGETTOOPERSONAGGIO$=Input$(1)
  OGGETTOOPERSONAGGIO$=Lower$(OGGETTOOPERSONAGGIO$)
  If OGGETTOOPERSONAGGIO$="o"
   Proc LASCIAUNOGGETTO
  Else If OGGETTOOPERSONAGGIO$="p"
   Proc LASCIAUNPERSONAGGIO
  End If 
 Else If CATEGORIEOGGETTI>0 and PERSONAGGI=0 and SOLDI=False
  Proc LASCIAUNOGGETTO
 Else If CATEGORIEOGGETTI=0 and PERSONAGGI>0 and SOLDI=False
  Proc LASCIAUNPERSONAGGIO
 Else 
  Print At(0,ULTIMALINEA);"Non hai oggetti,personaggi o soldi da lasciare";
  If _MUSICA=False
   Bell 1
  End If 
  Proc _ASPETTA
 End If 
End Proc
Procedure LASCIAAO[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 POSIZIONEO(A)=POSIZIONEP(P)
 If Btst(1,TIPOO(A))=True
  Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(A))
 Else 
  Add PESONETTOP(P),-PESOCO(CATEGORIAO(A))
 End If 
 If Btst(1,TIPOCO(CATEGORIAO(A)))=True
  For B=0 To NUMEROO
   If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
    If Btst(1,TIPOO(B))=True
     Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(B))
    Else 
     Add PESONETTOP(P),-PESOCO(CATEGORIAO(B))
    End If 
   End If 
  Next B
  For B=1 To NUMEROP
   If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
    Add PESONETTOP(PERSONAGGIOTROVATO),-PESOP(B)*1000
    Add PESONETTOP(PERSONAGGIOTROVATO),-PESONETTOP(B)
   End If 
  Next B
 End If 
 If POSIZIONEP(P)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(0)=0 and Btst(2,TIPOP(0))=False
  Print NOMEP$(P);" lascia 1 ";
  If Btst(1,TIPOO(A))=True
   Print NOMESRO$(CATEGORIAO(A))
  Else 
   Print NOMESCO$(CATEGORIAO(A))
  End If 
 End If 
 Dec PARAAAZIONEP(AZIONE,P)
 If PARAAAZIONEP(AZIONE,P)=0
  FINEA(AZIONE,P)=True
 End If 
End Proc
Procedure LASCIAAOB[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARABAZIONEP(AZIONE,P)
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARABAZIONEP(AZIONE,P)
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 POSIZIONEO(A)=POSIZIONEP(P)
 If Btst(1,TIPOO(A))=True
  Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(A))
 Else 
  Add PESONETTOP(P),-PESOCO(CATEGORIAO(A))
 End If 
 If Btst(1,TIPOCO(CATEGORIAO(A)))=True
  For B=0 To NUMEROO
   If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
    If Btst(1,TIPOO(B))=True
     Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(B))
    Else 
     Add PESONETTOP(P),-PESOCO(CATEGORIAO(B))
    End If 
   End If 
  Next B
  For B=1 To NUMEROP
   If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
    Add PESONETTOP(PERSONAGGIOTROVATO),-PESOP(B)*1000
    Add PESONETTOP(PERSONAGGIOTROVATO),-PESONETTOP(B)
   End If 
  Next B
 End If 
 If POSIZIONEP(P)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(0)=0 and Btst(2,TIPOP(0))=False
  Print NOMEP$(P);" lascia 1 ";
  If Btst(1,TIPOO(A))=True
   Print NOMESRO$(CATEGORIAO(A))
  Else 
   Print NOMESCO$(CATEGORIAO(A))
  End If 
 End If 
 Dec PARAAAZIONEP(AZIONE,P)
 If PARAAAZIONEP(AZIONE,P)=0
  FINEA(AZIONE,P)=True
 End If 
End Proc
Procedure LASCIAAOTB[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(A))=PARABAZIONEP(AZIONE,P)
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(A))=PARABAZIONEP(AZIONE,P)
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 POSIZIONEO(A)=POSIZIONEP(P)
 If Btst(1,TIPOO(A))=True
  Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(A))
 Else 
  Add PESONETTOP(P),-PESOCO(CATEGORIAO(A))
 End If 
 If Btst(1,TIPOCO(CATEGORIAO(A)))=True
  For B=0 To NUMEROO
   If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
    If Btst(1,TIPOO(B))=True
     Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(B))
    Else 
     Add PESONETTOP(P),-PESOCO(CATEGORIAO(B))
    End If 
   End If 
  Next B
  For B=1 To NUMEROP
   If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
    Add PESONETTOP(PERSONAGGIOTROVATO),-PESOP(B)*1000
    Add PESONETTOP(PERSONAGGIOTROVATO),-PESONETTOP(B)
   End If 
  Next B
 End If 
 If POSIZIONEP(P)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(0)=0 and Btst(2,TIPOP(0))=False
  Print NOMEP$(P);" lascia 1 ";
  If Btst(1,TIPOO(A))=True
   Print NOMESRO$(CATEGORIAO(A))
  Else 
   Print NOMESCO$(CATEGORIAO(A))
  End If 
 End If 
 Dec PARAAAZIONEP(AZIONE,P)
 If PARAAAZIONEP(AZIONE,P)=0
  FINEA(AZIONE,P)=True
 End If 
End Proc
Procedure LASCIAAP[AZIONE,P]
 For A=1 To NUMEROP
  If POSIZIONEP(A)=-1-P and Btst(0,TIPOP(A))=True
   POSIZIONEP(A)=POSIZIONEP(P)
   TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(A)=DREZIONEPRESAP(0)
   Bclr 0,TIPOP(A)
   Add PESONETTOP(P),-PESOP(A)*1000
   Add PESONETTOP(P),-PESONETTOP(A)
   If POSIZIONEP(P)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(P)=DREZIONEPRESAP(0) and Btst(2,TIPOP(0))=False
    Print NOMEP$(P);" lascia ";NOMEP$(A)
   End If 
   Dec PARABAZIONEP(AZIONE,P)
   If PARABAZIONEP(AZIONE,P)=0
    FINEA(AZIONE,P)=True
   End If 
   Exit 
  End If 
 Next A
End Proc
Procedure LASCIADEISOLDI
 Locate 0,ULTIMALINEA : Input "Quanti soldi vuoi lasciare (0-"+Str$(SOLDIP(0))-" "+") ?>";SOLDI$;
 Curs Off 
 If SOLDI$<>""
  SOLDI=Val(SOLDI$)
  Proc LIMITI[SOLDI,0,SOLDIP(0)] : SOLDI=Param
  If SOLDI>0
   Add SOLDIP(0),-SOLDI
   E=POSIZIONEP(0)/$10000
   If E>0
    S=POSIZIONEP(0) mod $10000
    Add SOLDIS(S,E-1),SOLDI
   Else 
    Add SOLDIL(POSIZIONEP(0)),SOLDI
   End If 
   Add PESONETTOP(0),-SOLDI*PESOS
   COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
   Print "Hai deciso di lasciare";SOLDI;
   If SOLDI=1
    Print " soldo";
   Else 
    Print " soldi";
   End If 
   Proc _ASPETTA
  End If 
 End If 
End Proc
Procedure LASCIAOGGETTO[O]
 POSIZIONEO(O)=POSIZIONEP(0)
 If Btst(1,TIPOO(O))=True
  Dec RESTODELPERSONAGGIO0(CATEGORIAO(O))
  Add PESONETTOP(0),-PESORESTOCO(CATEGORIAO(O))
 Else 
  Dec OGGETTODELPERSONAGGIO0(CATEGORIAO(O))
  Add PESONETTOP(0),-PESOCO(CATEGORIAO(O))
  Inc OGGETTODATOOLASCIATO(CATEGORIAO(O))
 End If 
 If Btst(1,TIPOCO(CATEGORIAO(O)))=True
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-O and Btst(0,TIPOO(A))=False
    If Btst(1,TIPOO(A))=True
     Add PESONETTOP(0),-PESORESTOCO(CATEGORIAO(A))
    Else 
     Add PESONETTOP(0),-PESOCO(CATEGORIAO(A))
    End If 
   End If 
  Next A
  For A=1 To NUMEROP
   If POSIZIONEP(A)=-1-O and Btst(0,TIPOP(A))=False
    Add PESONETTOP(0),-PESOP(A)*1000
    Add PESONETTOP(0),-PESONETTOP(A)
   End If 
  Next A
 End If 
 COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
 Print "Hai deciso di lasciare 1 ";
 If Btst(1,TIPOO(O))=True
  Print NOMESRO$(CATEGORIAO(O));
 Else 
  Print NOMESCO$(CATEGORIAO(O));
 End If 
 Proc _ASPETTA
End Proc
Procedure LASCIAPA[AZIONE,P]
 A=PARAAAZIONEP(AZIONE,P)
 If POSIZIONEP(A)=-1-P and Btst(0,TIPOP(A))=True
  POSIZIONEP(A)=POSIZIONEP(P)
  TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0)
  Bclr 0,TIPOP(A)
  Add PESONETTOP(P),-PESOP(A)*1000
  Add PESONETTOP(P),-PESONETTOP(A)
  If POSIZIONEP(P)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(P)=DREZIONEPRESAP(0) and Btst(2,TIPOP(0))=False
   Print NOMEP$(P);" lascia ";NOMEP$(A)
  End If 
  FINEA(AZIONE,P)=True
 End If 
End Proc
Procedure LASCIAPASSAREILTEMPO
 COMPIUTAAZIONE=5
 Print At(0,ULTIMALINEA);"Hai deciso di aspettare cinque minuti";
 Proc _ASPETTA
End Proc
Procedure LASCIAUNOGGETTO
 For A=0 To NUMEROCO
  If OGGETTODELPERSONAGGIO0(A)>0
   Inc CATEGORIEOGGETTI
  End If 
  If RESTODELPERSONAGGIO0(A)>0
   Inc CATEGORIEOGGETTI
  End If 
 Next A
 OGGETTODIFENSIVOINDOSSATO=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True and Btst(2,TIPOCO(CATEGORIAO(A)))=True
   If Btst(2,TIPOO(A))=True
    OGGETTODIFENSIVOINDOSSATO=A
   Else 
    Inc OGGETTIERESTIDIFENSIVINONINDOSSATI
    If Btst(1,TIPOO(A))=True
     Inc RESTIDIFENSIVINONINDOSSATI
    Else 
     Inc OGGETTIDIFENSIVINONINDOSSATI
    End If 
   End If 
  End If 
 Next A
 If CATEGORIEOGGETTI>0
  If CATEGORIEOGGETTI>1
   Locate 0,ULTIMALINEA : Input "Quale oggetto vuoi lasciare ?>";OGGETTO$;
   Curs Off 
   If OGGETTO$<>""
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
      If Lower$(OGGETTO$)=Lower$(NOMESCO$(CATEGORIAO(A))) and Btst(1,TIPOO(A))=False
       If Btst(2,TIPOCO(CATEGORIAO(A)))=True
        If OGGETTODIFENSIVOINDOSSATO>-1
         If OGGETTIDIFENSIVINONINDOSSATI=0
          Bclr 2,TIPOO(A)
          Proc LASCIAOGGETTO[A] : Exit 
         Else 
          If A<>OGGETTODIFENSIVOINDOSSATO
           Proc LASCIAOGGETTO[A] : Exit 
          Else 
           If RESTIDIFENSIVINONINDOSSATI>0
            Bclr 2,TIPOO(A)
            Proc LASCIAOGGETTO[A] : Exit 
           End If 
          End If 
         End If 
        Else 
         Proc LASCIAOGGETTO[A] : Exit 
        End If 
       Else 
        Proc LASCIAOGGETTO[A] : Exit 
       End If 
      Else If Lower$(OGGETTO$)=Lower$(NOMESRO$(CATEGORIAO(A))) and Btst(1,TIPOO(A))=True
       If Btst(2,TIPOCO(CATEGORIAO(A)))=True
        If OGGETTODIFENSIVOINDOSSATO>-1
         If RESTIDIFENSIVINONINDOSSATI=0
          Bclr 2,TIPOO(A)
          Proc LASCIAOGGETTO[A] : Exit 
         Else 
          If A<>OGGETTODIFENSIVOINDOSSATO
           Proc LASCIAOGGETTO[A] : Exit 
          Else 
           If OGGETTIDIFENSIVINONINDOSSATI>0
            Bclr 2,TIPOO(A)
            Proc LASCIAOGGETTO[A] : Exit 
           End If 
          End If 
         End If 
        Else 
         Proc LASCIAOGGETTO[A] : Exit 
        End If 
       Else 
        Proc LASCIAOGGETTO[A] : Exit 
       End If 
      End If 
     End If 
    Next A
    If A=NUMEROO+1
     Locate 0,ULTIMALINEA : Cline : Print "Non hai nessun ";OGGETTO$;
     If _MUSICA=False
      Bell 1
     End If 
     Proc _ASPETTA
    End If 
   End If 
  Else 
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
     If Btst(2,TIPOCO(CATEGORIAO(A)))=True
      If OGGETTODIFENSIVOINDOSSATO>-1
       If OGGETTIERESTIDIFENSIVINONINDOSSATI=0
        Bclr 2,TIPOO(A)
        Proc LASCIAOGGETTO[A] : Exit 
       Else 
        If A<>OGGETTODIFENSIVOINDOSSATO
         Proc LASCIAOGGETTO[A] : Exit 
        End If 
       End If 
      Else 
       Proc LASCIAOGGETTO[A] : Exit 
      End If 
     Else 
      Proc LASCIAOGGETTO[A] : Exit 
     End If 
    End If 
   Next A
  End If 
 End If 
End Proc
Procedure LASCIAUNPERSONAGGIO
 For A=1 To NUMEROP
  If POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
   Inc PERSONAGGI
  End If 
 Next A
 If PERSONAGGI>0
  If PERSONAGGI>1
   Locate 0,ULTIMALINEA : Input "Quale personaggio vuoi lasciare ?>";PERSONAGGIO$;
   Curs Off 
   If PERSONAGGIO$<>""
    For A=0 To NUMEROP
     If Lower$(PERSONAGGIO$)=Lower$(NOMEP$(A)) and POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
      POSIZIONEP(A)=POSIZIONEP(0)
      TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0)
      DREZIONEPRESAP(A)=DREZIONEPRESAP(0)
      Add PESONETTOP(0),-PESOP(A)*1000
      Add PESONETTOP(0),-PESONETTOP(A)
      COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
      Print "Hai deciso di lasciare ";NOMEP$(A);
      Proc _ASPETTA : Exit 
     End If 
    Next A
    If A=NUMEROP+1
     Locate 0,ULTIMALINEA : Cline : Print "Non c'è nessun ";PERSONAGGIO$;
     If _MUSICA=False
      Bell 1
     End If 
     Proc _ASPETTA
    End If 
   End If 
  Else 
   For A=0 To NUMEROP
    If POSIZIONEP(A)=-1 and Btst(0,TIPOP(A))=True
     POSIZIONEP(A)=POSIZIONEP(0)
     TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0)
     DREZIONEPRESAP(A)=DREZIONEPRESAP(0)
     Add PESONETTOP(0),-PESOP(A)*1000
     Add PESONETTOP(0),-PESONETTOP(A)
     COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
     Print "Hai deciso di lasciare ";NOMEP$(A);
     Proc _ASPETTA : Exit 
    End If 
   Next A
  End If 
 End If 
End Proc
Procedure LIMITI[NUMERO,LIMITEMINIMO,LIMITEMASSIMO]
 '-> Limiti by Stefano Regattin 
 'i> 19 maggio 1996 
 'm> 12 giugno 1996 
 '--------------------------------------------------------
 'La procedura equivale alle seguenti linee di programma: 
 ' If NUMERO<LIMITEMINIMO Then NUMERO=LIMITEMINIMO
 ' If NUMERO>LIMITEMASSIMO Then NUMERO=LIMITEMASSIMO
 'Se LIMITEMINIMO è maggiore di LIMITEMASSIMO ne scambia i valori 
 '----------------------------------------------------------------  
 If LIMITEMINIMO>LIMITEMASSIMO Then Swap LIMITEMINIMO,LIMITEMASSIMO
 NUMERO=Max(Min(NUMERO,LIMITEMASSIMO),LIMITEMINIMO)
End Proc[NUMERO]
Procedure LUOGO
 Print "Regione>";NOMER$(REGIONEL(POSIZIONEP(0)))
 Print "Luogo>";NOMEL$(POSIZIONEP(0))
 Print "Direzioni visibili>";
 For A=0 To 9
  DREZIONE=DREZIONEL(A,POSIZIONEP(0)) mod $10000
  If DREZIONE<$FFFF Then Print DREZIONEL$(A);" ";
 Next A
 Print 
End Proc
Procedure MESSAGGIO[MESSAGGIO$]
 Locate 0,ULTIMALINEA
 If CARATTEREMESSAGGIO=0
  Ink 0,1 : Text 0,254,Space$(80) : Ink 1,0
  'Inverse On : Print Space$(80);
 End If 
 Hscroll 1
 Add CARATTEREMESSAGGIO,1,1 To Len(MESSAGGIO$)
 Ink 0,1
 'Inverse On  
 Text 631,ULTIMALINEA*8-1+7,Mid$(MESSAGGIO$,CARATTEREMESSAGGIO,1)
 'Print At(79,ULTIMALINEA);Mid$(MESSAGGIO$,CARATTEREMESSAGGIO,1); 
 Ink 1,0
 'Inverse Off 
 Wait 5
End Proc
Procedure M0DCATEGORIADEGLIOGGETTI
 Cls 
 Print "Nome singolare della categoria degli oggetti";CATEGORIADEGLIOGGETTI;">";NOMESCO$(CATEGORIADEGLIOGGETTI)
 Locate 0,ULTIMALINEA : Input "Nuovo nome singolare della categoria degli oggetti>";NOMECATEGORIADEGLIOGGETTI$;
 If NOMECATEGORIADEGLIOGGETTI$<>"" Then NOMESCO$(CATEGORIADEGLIOGGETTI)=NOMECATEGORIADEGLIOGGETTI$
 Cls 
 Print "Nome plurale della categoria degli oggetti";CATEGORIADEGLIOGGETTI;">";NOMEPCO$(CATEGORIADEGLIOGGETTI)
 Locate 0,ULTIMALINEA : Input "Nuovo nome plurale della categoria degli oggetti>";NOMECATEGORIADEGLIOGGETTI$;
 If NOMECATEGORIADEGLIOGGETTI$<>"" Then NOMEPCO$(CATEGORIADEGLIOGGETTI)=NOMECATEGORIADEGLIOGGETTI$
 Cls 
 Print "Nome singolare del resto degli oggetti";CATEGORIADEGLIOGGETTI;">";NOMESRO$(CATEGORIADEGLIOGGETTI)
 Locate 0,ULTIMALINEA : Input "Nuovo nome singolare del resto degli oggetti>";NOMERESTODEGLIOGGETTI$;
 If NOMERESTODEGLIOGGETTI$<>"" Then NOMESRO$(CATEGORIADEGLIOGGETTI)=NOMERESTODEGLIOGGETTI$
 Cls 
 Print "Nome plurale del resto degli oggetti";CATEGORIADEGLIOGGETTI;">";NOMEPRO$(CATEGORIADEGLIOGGETTI)
 Locate 0,ULTIMALINEA : Input "Nuovo nome plurale del resto degli oggetti>";NOMERESTODEGLIOGGETTI$;
 If NOMERESTODEGLIOGGETTI$<>"" Then NOMEPRO$(CATEGORIADEGLIOGGETTI)=NOMERESTODEGLIOGGETTI$
 Cls 
 PESOOGGETTO=PESOCO(CATEGORIADEGLIOGGETTI)
 Print "Peso della categoria degli oggetti";CATEGORIADEGLIOGGETTI;">";Str$(PESOOGGETTO)-" ";" ";
 If PESOOGGETTO=1
  Print "grammo"
 Else 
  Print "grammi"
 End If 
 Locate 0,ULTIMALINEA : Input "Nuovo peso della categoria degli oggetti in grammi>";PESOCATEGORIADEGLIOGGETTI$;
 If PESOCATEGORIADEGLIOGGETTI$<>"" Then PESOCO(CATEGORIADEGLIOGGETTI)=Val(PESOCATEGORIADEGLIOGGETTI$)
 Cls 
 PESORESTOOGGETTO=PESORESTOCO(CATEGORIADEGLIOGGETTI)
 Print "Peso della categoria dei resti degli oggetti";CATEGORIADEGLIOGGETTI;">";Str$(PESORESTOOGGETTO)-" ";" ";
 If PESORESTOOGGETTO=1
  Print "grammo"
 Else 
  Print "grammi"
 End If 
 Locate 0,ULTIMALINEA : Input "Nuovo peso della categoria dei resti degli oggetti in grammi>";PESOCATEGORIADEIRESTIDEGLIOGGETTI$;
 If PESOCATEGORIADEIRESTIDEGLIOGGETTI$<>"" Then PESORESTOCO(CATEGORIADEGLIOGGETTI)=Val(PESOCATEGORIADEIRESTIDEGLIOGGETTI$)
 Curs Off 
 Cls 
 Print "Nome della categoria degli oggetti";CATEGORIADEGLIOGGETTI;">";
 Print NOMESCO$(CATEGORIADEGLIOGGETTI)
 Print At(0,ULTIMALINEA);"Vuoi che gli oggetti siano commestibili (s/n) ?>";
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="s"
  Bset 0,TIPOCO(CATEGORIADEGLIOGGETTI)
 Else 
  Bclr 0,TIPOCO(CATEGORIADEGLIOGGETTI)
 End If 
 Print At(0,ULTIMALINEA);"Vuoi che gli oggetti siano contenitori (s/n) ?>";
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="s"
  Bset 1,TIPOCO(CATEGORIADEGLIOGGETTI)
 Else 
  If Btst(1,TIPOCO(CATEGORIADEGLIOGGETTI))=True
   For A=0 To NUMEROO
    For B=0 To NUMEROO
     If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False and A<>B
      POSIZIONEO(B)=POSIZIONEO(A)
     End If 
    Next B
    For B=0 To NUMEROP
     If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
      POSIZIONEP(B)=POSIZIONEO(A)
     End If 
    Next B
   Next A
  End If 
  Bclr 1,TIPOCO(CATEGORIADEGLIOGGETTI)
 End If 
 Locate 0,ULTIMALINEA : Cline 
 Print "Vuoi che gli oggetti siano difensivi (s/n) ?>";
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="s"
  Bset 2,TIPOCO(CATEGORIADEGLIOGGETTI)
 Else 
  Bclr 2,TIPOCO(CATEGORIADEGLIOGGETTI)
 End If 
 Print At(0,ULTIMALINEA);"Vuoi che gli oggetti siano leggibili (s/n) ?>";
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="s"
  Bset 3,TIPOCO(CATEGORIADEGLIOGGETTI)
 Else 
  Bclr 3,TIPOCO(CATEGORIADEGLIOGGETTI)
 End If 
 Locate 0,ULTIMALINEA : Cline 
 Print "Vuoi che gli oggetti siano liquidi o solidi (l/s) ?>";
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="l"
  Bset 4,TIPOCO(CATEGORIADEGLIOGGETTI)
 Else 
  Bclr 4,TIPOCO(CATEGORIADEGLIOGGETTI)
 End If 
 Locate 0,ULTIMALINEA : Cline 
 Print "Vuoi che gli oggetti siano magici (s/n) ?>";
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="s"
  Bset 5,TIPOCO(CATEGORIADEGLIOGGETTI)
 Else 
  Bclr 5,TIPOCO(CATEGORIADEGLIOGGETTI)
 End If 
 Print At(0,ULTIMALINEA);"Vuoi che gli oggetti siano offensivi (s/n) ?>";
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="s"
  Bset 6,TIPOCO(CATEGORIADEGLIOGGETTI)
 Else 
  Bclr 6,TIPOCO(CATEGORIADEGLIOGGETTI)
 End If 
 For A=0 To NUMEROO
  If POSIZIONEO(A)<0
   NONRESIDENTI=True
  End If 
 Next A
 If NONRESIDENTI=True
  Print At(0,ULTIMALINEA);"Vuoi che gli oggetti siano residenti (s/n) ?>";
  RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
  If RISPOSTA$="s"
   Bset 7,TIPOCO(CATEGORIADEGLIOGGETTI)
  Else 
   Bclr 7,TIPOCO(CATEGORIADEGLIOGGETTI)
  End If 
 End If 
 Print At(0,ULTIMALINEA);"Vuoi che gli oggetti siano trasferibili (s/n) ?>";
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="s"
  Bset 8,TIPOCO(CATEGORIADEGLIOGGETTI)
 Else 
  Bclr 8,TIPOCO(CATEGORIADEGLIOGGETTI)
 End If 
 Locate 0,ULTIMALINEA : Cline 
 Print "Vuoi che gli oggetti siano trasparenti (s/n) ?>";
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="s"
  Bset 9,TIPOCO(CATEGORIADEGLIOGGETTI)
 Else 
  Bclr 9,TIPOCO(CATEGORIADEGLIOGGETTI)
 End If 
 Print At(0,ULTIMALINEA);"Vuoi che gli oggetti siano vincolati ad un oggetto (s/n) ?>";
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="s"
  Repeat 
   Cls 
   Print "Nome della categoria degli oggetti";CATEGORIADEGLIOGGETTI;">";NOMESCO$(CATEGORIADEGLIOGGETTI)
   Print At(0,ULTIMALINEA-1);"Scegli l'oggetto vincolante>";NOMESCO$(CO)
   Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta oggetto vincolante Spazio conferma",ULTIMALINEA]
   Repeat 
    TASTOPREMUTO$=Inkey$
   Until TASTOPREMUTO$<>""
   If TASTOPREMUTO$=Cup$ : Add CO,-1,0 To NUMEROCO : End If 
   If TASTOPREMUTO$=Cdown$ : Add CO,1,0 To NUMEROCO : End If 
  Until TASTOPREMUTO$=" "
  PARATIPOCO(CATEGORIADEGLIOGGETTI)=CO
  Bset 10,TIPOCO(CATEGORIADEGLIOGGETTI)
 Else 
  Bclr 10,TIPOCO(CATEGORIADEGLIOGGETTI)
  Cls 
  Print "Parametro della categoria degli oggetti";CATEGORIADEGLIOGGETTI;">";Str$(PARATIPOCO(CATEGORIADEGLIOGGETTI))-" "
  Locate 0,ULTIMALINEA : Input "Nuovo parametro della categoria degli oggetti>";PARACATEGORIADEGLIOGGETTI$;
  If PARACATEGORIADEGLIOGGETTI$<>""
   PARATIPOCO(CATEGORIADEGLIOGGETTI)=Val(PARACATEGORIADEGLIOGGETTI$)
  End If 
 End If 
 Curs Off 
End Proc
Procedure M0DDESCRIZIONE[DESCRIZIONE$]
 INIZIODESCRIZIONE=1
 FINEDESCRIZIONE=Min(Len(DESCRIZIONE$),32*80-1)
 Curs Off 
 Repeat 
  Cls 
  For DESCRIZIONE=INIZIODESCRIZIONE To FINEDESCRIZIONE
   Print Mid$(DESCRIZIONE$,DESCRIZIONE,1);
   Exit If FINEDESCRIZIONE-INIZIODESCRIZIONE=32*80-2
   Exit If DESCRIZIONE=Len(DESCRIZIONE$)
  Next DESCRIZIONE
  Wait Vbl 
  POSIZIONEY=DESCRIZIONE/80
  Curs On 
  Repeat 
   If RICORDA=True
    DISTANZAY=Y Curs-RICORDAY
    Add POSIZIONEY,-DISTANZAY
    Locate RICORDAX,RICORDAY : RICORDA=False
   End If 
   BLOCCOPRECEDENTE$=Left$(DESCRIZIONE$,X Curs+POSIZIONEY*80)
   BLOCCOSUCCESSIVO$=Right$(DESCRIZIONE$,Len(DESCRIZIONE$)-X Curs-POSIZIONEY*80)
   Repeat 
    TASTO$=Inkey$
    CODICESCANSIONE=Scancode
   Until TASTO$<>""
   If Asc(TASTO$)=0
    If CODICESCANSIONE=70 and Len(BLOCCOSUCCESSIVO$)>0
     BLOCCOSUCCESSIVO$=Right$(BLOCCOSUCCESSIVO$,Len(BLOCCOSUCCESSIVO$)-1)
     DESCRIZIONE$=BLOCCOPRECEDENTE$+BLOCCOSUCCESSIVO$
     RICORDAX=X Curs : RICORDAY=Y Curs : RICORDA=True
     INIZIODESCRIZIONE=Max(POSIZIONEY*80-RICORDAY*80,1)
     FINEDESCRIZIONE=Len(DESCRIZIONE$)
     Exit 
    End If 
   Else 
    If TASTO$=Chr$(8)
     BLOCCOPRECEDENTE$=Left$(BLOCCOPRECEDENTE$,Len(BLOCCOPRECEDENTE$)-1)
     DESCRIZIONE$=BLOCCOPRECEDENTE$+BLOCCOSUCCESSIVO$
     RICORDAX=X Curs-1 : RICORDAY=Y Curs
     If RICORDAX=-1
      RICORDAX=79 : Dec RICORDAY
      If RICORDAY=-1
       If POSIZIONEY>0
        Vscroll 1 : RICORDAX=0 : RICORDAY=0 : Dec POSIZIONEY
        INIZIODESCRIZIONE=POSIZIONEY*80-79 : FINEDESCRIZIONE=POSIZIONEY*80
       Else 
        RICORDAX=0 : RICORDAY=0
       End If 
      End If 
     End If 
     XG=X Graphic(RICORDAX) : YG=Y Graphic(RICORDAY)
     Ink 0 : Bar XG,YG To XG+7,YG+7 : Ink 1
     INIZIODESCRIZIONE=Max(POSIZIONEY*80-RICORDAX-RICORDAY*80,1)
     FINEDESCRIZIONE=Len(DESCRIZIONE$)
     RICORDA=True
     Exit 
    Else If TASTO$=Cup$
     If Y Curs=0
      If POSIZIONEY>31
       Vscroll 1 : Dec POSIZIONEY
       BLOCCOPRECEDENTE$=Left$(DESCRIZIONE$,X Curs+POSIZIONEY*80)
       BLOCCOSUCCESSIVO$=Right$(DESCRIZIONE$,Len(DESCRIZIONE$)-X Curs-POSIZIONEY*80)
       RICORDAX=0 : RICORDAY=0 : RICORDA=True
       INIZIODESCRIZIONE=POSIZIONEY*80-79 : FINEDESCRIZIONE=POSIZIONEY*80
       Exit 
      End If 
     Else 
      Cmove ,-1 : Dec POSIZIONEY
      BLOCCOPRECEDENTE$=Left$(DESCRIZIONE$,X Curs+POSIZIONEY*80)
      BLOCCOSUCCESSIVO$=Right$(DESCRIZIONE$,Len(DESCRIZIONE$)-X Curs-POSIZIONEY*80)
     End If 
    Else If TASTO$=Cdown$
     If Y Curs=32
      If Len(BLOCCOSUCCESSIVO$)>79
       Vscroll 3 : Inc POSIZIONEY
       BLOCCOPRECEDENTE$=Left$(DESCRIZIONE$,X Curs+POSIZIONEY*80)
       BLOCCOSUCCESSIVO$=Right$(DESCRIZIONE$,Len(DESCRIZIONE$)-X Curs-POSIZIONEY*80)
      End If 
     Else 
      If Len(BLOCCOSUCCESSIVO$)>79
       Cmove ,1 : Inc POSIZIONEY
       BLOCCOPRECEDENTE$=Left$(DESCRIZIONE$,X Curs+POSIZIONEY*80)
       BLOCCOSUCCESSIVO$=Right$(DESCRIZIONE$,Len(DESCRIZIONE$)-X Curs-POSIZIONEY*80)
      End If 
     End If 
    Else If TASTO$=Cleft$
     If X Curs=0
      If Y Curs=0
       If POSIZIONEY>0
        Vscroll 1 : Dec POSIZIONEY
        BLOCCOPRECEDENTE$=Left$(DESCRIZIONE$,X Curs+POSIZIONEY*80)
        BLOCCOSUCCESSIVO$=Right$(DESCRIZIONE$,Len(DESCRIZIONE$)-X Curs-POSIZIONEY*80)
       End If 
      Else 
       Locate 79, : Cmove ,-1 : Dec POSIZIONEY
       BLOCCOPRECEDENTE$=Left$(DESCRIZIONE$,X Curs+POSIZIONEY*80)
       BLOCCOSUCCESSIVO$=Right$(DESCRIZIONE$,Len(DESCRIZIONE$)-X Curs-POSIZIONEY*80)
      End If 
     Else 
      Cmove -1,
      BLOCCOPRECEDENTE$=Left$(DESCRIZIONE$,X Curs+POSIZIONEY*80)
      BLOCCOSUCCESSIVO$=Right$(DESCRIZIONE$,Len(DESCRIZIONE$)-X Curs-POSIZIONEY*80)
     End If 
    Else If TASTO$=Cright$
     If X Curs=79
      If Y Curs=32
       If Len(BLOCCOSUCCESSIVO$)>0
        Vscroll 3 : Inc POSIZIONEY
        BLOCCOPRECEDENTE$=Left$(DESCRIZIONE$,X Curs+POSIZIONEY*80)
        BLOCCOSUCCESSIVO$=Right$(DESCRIZIONE$,Len(DESCRIZIONE$)-X Curs-POSIZIONEY*80)
       End If 
      Else 
       Locate 0, : Cmove ,1 : Inc POSIZIONEY
       BLOCCOPRECEDENTE$=Left$(DESCRIZIONE$,X Curs+POSIZIONEY*80)
       BLOCCOSUCCESSIVO$=Right$(DESCRIZIONE$,Len(DESCRIZIONE$)-X Curs-POSIZIONEY*80)
      End If 
     Else 
      If Len(BLOCCOSUCCESSIVO$)>0
       Cmove 1,
       BLOCCOPRECEDENTE$=Left$(DESCRIZIONE$,X Curs+POSIZIONEY*80)
       BLOCCOSUCCESSIVO$=Right$(DESCRIZIONE$,Len(DESCRIZIONE$)-X Curs-POSIZIONEY*80)
      End If 
     End If 
    Else 
     CARATTERIVALIDI$="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzàèéìòù!',;.:1234567890 "
     If Instr(CARATTERIVALIDI$,TASTO$)>0
      DESCRIZIONE$=BLOCCOPRECEDENTE$+TASTO$+BLOCCOSUCCESSIVO$
      If Len(BLOCCOSUCCESSIVO$)>0
       RICORDAX=X Curs : RICORDAY=Y Curs : RICORDA=True
       INIZIODESCRIZIONE=Max(POSIZIONEY*80-RICORDAX-RICORDAY*80,1)
       FINEDESCRIZIONE=Len(DESCRIZIONE$)
       Exit 
      Else 
       ULTIMACOLONNA=X Curs
       Print TASTO$;
       If ULTIMACOLONNA=79
        Inc POSIZIONEY
        If Y Curs=31
         Vscroll 3
         RICORDAX=X Curs : RICORDAY=Y Curs : RICORDA=True
         INIZIODESCRIZIONE=Max(POSIZIONEY*80-79,1)
         FINEDESCRIZIONE=Len(DESCRIZIONE$)
         Exit 
        End If 
       End If 
      End If 
     End If 
    End If 
   End If 
  Until TASTO$=Chr$(27)
 Until TASTO$=Chr$(27)
 Curs Off 
End Proc[DESCRIZIONE$]
Procedure M0DEDIFICIO
 Cls 
 Print "Nome dell'edificio";EDIFICIO;">";NOMEE$(EDIFICIO)
 Locate 0,ULTIMALINEA
 Input "Nuovo nome dell'edificio"+Str$(EDIFICIO)+">";NOMEEDIFICIO$;
 If NOMEEDIFICIO$<>"" Then NOMEE$(EDIFICIO)=NOMEEDIFICIO$
 Cls 
 Print "Posizione dell'edificio";EDIFICIO;">luogo";POSIZIONEE(EDIFICIO);" nome>";NOMEL$(POSIZIONEE(EDIFICIO))
 Locate 0,ULTIMALINEA
 Input "Nuova posizione dell'edificio"+Str$(EDIFICIO)+" (0-"+Str$(NUMEROL)-" "+")>";NUOVAPOSIZIONEEDIFICIO$;
 If NUOVAPOSIZIONEEDIFICIO$<>""
  NUOVAPOSIZIONEEDIFICIO=Val(NUOVAPOSIZIONEEDIFICIO$)
  Proc LIMITI[NUOVAPOSIZIONEEDIFICIO,0,NUMEROL] : NUOVAPOSIZIONEEDIFICIO=Param
  POSIZIONEE(EDIFICIO)=NUOVAPOSIZIONEEDIFICIO
 End If 
 Cls 
 Print "Numero delle stanze dell'edificio";EDIFICIO;">";NUMEROS(EDIFICIO)+1
 Locate 0,ULTIMALINEA
 Input "Nuovo numero delle stanze dell'edificio"+Str$(EDIFICIO)+" (1-"+Str$(NUMMASS+1)-" "+")>";NUMEROSTANZE$;
 If NUMEROSTANZE$<>""
  NUMEROSTANZE=Val(NUMEROSTANZE$) : Dec NUMEROSTANZE
  Proc LIMITI[NUMEROSTANZE,0,NUMMASS] : NUMEROSTANZE=Param
  NUMEROS(EDIFICIO)=NUMEROSTANZE
 End If 
 Curs Off 
End Proc
Procedure M0DIFICA
 M0DIFICA=True
 Fade 5,$660
 Cls 
 Proc TIC["premi C per modificare una categoria degli oggetti",ULTIMALINEA-13]
 Proc TIC["premi D per modificare una descrizione",ULTIMALINEA-12]
 Proc TIC["premi E per modificare un'edificio",ULTIMALINEA-11]
 Proc TIC["premi F per modificare lo scopo del gioco",ULTIMALINEA-10]
 Proc TIC["premi L per modificare un luogo",ULTIMALINEA-9]
 Proc TIC["premi M per creare una mappa dei luoghi/delle stanze",ULTIMALINEA-8]
 Proc TIC["premi N per modificare un numero",ULTIMALINEA-7]
 Proc TIC["premi O per modificare un oggetto",ULTIMALINEA-6]
 Proc TIC["premi P per modificare un personaggio",ULTIMALINEA-5]
 Proc TIC["premi R per modificare una regione",ULTIMALINEA-4]
 Proc TIC["premi S per modificare una stanza",ULTIMALINEA-3]
 Proc TIC["premi T per modificare il tipo dei luoghi",ULTIMALINEA-2]
 Proc TIC["premi X per attivare/disattivare la musica",ULTIMALINEA-1]
 Proc TIC["premi Z per attivare/disattivare i nemici",ULTIMALINEA]
 SCELTA$=Input$(1) : SCELTA$=Lower$(SCELTA$)
 If SCELTA$="c" Then Proc M0DIFICACATEGORIADEGLIOGGETTI
 If SCELTA$="d" Then Proc M0DIFICADESCRIZIONE
 If SCELTA$="e" Then Proc M0DIFICAEDIFICIO
 If SCELTA$="f" Then Proc M0DIFICASCOPODELGIOCO
 If SCELTA$="l" Then Proc M0DIFICALUOGO
 If SCELTA$="m" Then Proc CREAMAPPA
 If SCELTA$="n" Then Proc M0DIFICANUMERO
 If SCELTA$="o" Then Proc M0DIFICAOGGETTO
 If SCELTA$="p" Then Proc M0DIFICAPERSONAGGIO
 If SCELTA$="r" Then Proc M0DIFICAREGIONE
 If SCELTA$="s" Then Proc M0DIFICASTANZA
 If SCELTA$="t" Then Proc M0DIFICATIPODEILUOGHI
 If SCELTA$="x"
  _MUSICA= Not _MUSICA
  If _MUSICA=True
   Proc SUONAUNMODULO[FILEREQUESTERMUSICA]
   If FILEREQUESTERMUSICA=True and Param$=""
    _MUSICA=False
   End If 
  Else 
   Track Loop Of : Track Stop 
  End If 
 End If 
 If SCELTA$="z" Then ANEMICI= Not ANEMICI
 Fade 5,$60
 M0DIFICA=False
End Proc
Procedure M0DIFICACATEGORIADEGLIOGGETTI
 CATEGORIADEGLIOGGETTI=0
 Repeat 
  Proc MOSTRACATEGORIADEGLIOGGETTI
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta categoria M modifica Esc esci",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="m" Then Proc M0DCATEGORIADEGLIOGGETTI
  If TASTOPREMUTO$=Cup$ Then Add CATEGORIADEGLIOGGETTI,-1,0 To NUMEROCO
  If TASTOPREMUTO$=Cdown$ Then Add CATEGORIADEGLIOGGETTI,1,0 To NUMEROCO
 Until TASTOPREMUTO$=Chr$(27)
 CATEGORIADEGLIOGGETTI=0
End Proc
Procedure M0DIFICADESCRIZIONE
 Shared SCELTA$
 Cls 
 Proc TIC["premi A per modificare il prologo",ULTIMALINEA-7]
 Proc TIC["premi C per modificare la descrizione della categoria degli oggetti selezionata",ULTIMALINEA-7]
 Proc TIC["premi E per modificare la descrizione dell'edificio selezionato",ULTIMALINEA-6]
 Proc TIC["premi L per modificare la descrizione del luogo selezionato",ULTIMALINEA-5]
 Proc TIC["premi O per modificare la descrizione dell'oggetto leggibile selezionato",ULTIMALINEA-4]
 Proc TIC["premi P per modificare la descrizione del personaggio",ULTIMALINEA-3]
 Proc TIC["premi S per modificare la descrizione della stanza",ULTIMALINEA-2]
 Proc TIC["premi Z per modificare l'epilogo",ULTIMALINEA-1]
 Proc TIC["quando sei nell'editor premi Esc per finire",ULTIMALINEA]
 SCELTA$=Input$(1) : SCELTA$=Lower$(SCELTA$)
 If SCELTA$="a" Then DESCRIZIONE$=PROLOGO$ : Proc M0DDESCRIZIONE[DESCRIZIONE$]
 If SCELTA$="c" Then DESCRIZIONE$=DESCRIZIONECO$(CATEGORIADEGLIOGGETTI) : Proc M0DDESCRIZIONE[DESCRIZIONE$]
 If SCELTA$="e" Then DESCRIZIONE$=DESCRIZIONEE$(EDIFICIO) : Proc M0DDESCRIZIONE[DESCRIZIONE$]
 If SCELTA$="l" Then DESCRIZIONE$=DESCRIZIONEL$(LUOGO) : Proc M0DDESCRIZIONE[DESCRIZIONE$]
 If SCELTA$="o" and TIPOCO(CATEGORIAO(OGGETTO))=%1000
  DESCRIZIONE$=TESTOO$(PARATIPOCO(CATEGORIAO(OGGETTO))) : Proc M0DDESCRIZIONE[DESCRIZIONE$]
 End If 
 If SCELTA$="p" Then DESCRIZIONE$=DESCRIZIONEP$(PERSONAGGIO) : Proc M0DDESCRIZIONE[DESCRIZIONE$]
 If SCELTA$="s" Then DESCRIZIONE$=DESCRIZIONES$(STANZA,EDIFICIO) : Proc M0DDESCRIZIONE[DESCRIZIONE$]
 If SCELTA$="z" Then DESCRIZIONE$=EPILOGO$ : Proc M0DDESCRIZIONE[DESCRIZIONE$]
 
 If SCELTA$="a" Then PROLOGO$=Param$
 If SCELTA$="c" Then DESCRIZIONECO$(CATEGORIADEGLIOGGETTI)=Param$
 If SCELTA$="e" Then DESCRIZIONEE$(EDIFICIO)=Param$
 If SCELTA$="l" Then DESCRIZIONEL$(LUOGO)=Param$
 If SCELTA$="o" and TIPOCO(CATEGORIAO(OGGETTO))=%1000
  TESTOO$(PARATIPOCO(CATEGORIAO(OGGETTO)))=Param$
 End If 
 If SCELTA$="p" Then DESCRIZIONEP$(PERSONAGGIO)=Param$
 If SCELTA$="s" Then DESCRIZIONES$(STANZA,EDIFICIO)=Param$
 If SCELTA$="z" Then EPILOGO$=Param$
End Proc
Procedure M0DIFICAEDIFICIO
 If NUMEROE=-1 Then Pop Proc
 EDIFICIO=0
 Repeat 
  Proc MOSTRAEDIFICIO
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta edificio M modifica Esc esci",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="m" Then Proc M0DEDIFICIO
  If TASTOPREMUTO$=Cup$ Then Add EDIFICIO,-1,0 To NUMEROE
  If TASTOPREMUTO$=Cdown$ Then Add EDIFICIO,1,0 To NUMEROE
 Until TASTOPREMUTO$=Chr$(27)
 LUOGO=0
End Proc
Procedure M0DIFICALUOGO
 LUOGO=0
 Repeat 
  Proc MOSTRALUOGO
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta luogo M modifica Esc esci",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="m" Then Proc M0DLUOGO
  If TASTOPREMUTO$=Cup$ Then Add LUOGO,-1,0 To NUMEROL
  If TASTOPREMUTO$=Cdown$ Then Add LUOGO,1,0 To NUMEROL
 Until TASTOPREMUTO$=Chr$(27)
 LUOGO=0
End Proc
Procedure M0DIFICAOGGETTO
 OGGETTO=0
 Repeat 
  Proc MOSTRAOGGETTO
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta oggetto M modifica Esc esci",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="m" Then Proc M0DOGGETTO
  If TASTOPREMUTO$=Cup$ Then Add OGGETTO,-1,0 To NUMEROO
  If TASTOPREMUTO$=Cdown$ Then Add OGGETTO,1,0 To NUMEROO
 Until TASTOPREMUTO$=Chr$(27)
 OGGETTO=0
End Proc
Procedure M0DIFICANUMERO
 Cls 
 Proc TIC["premi C per modificare il numero delle categorie degli oggetti",ULTIMALINEA-6]
 Proc TIC["premi E per modificare il numero degli edifici",ULTIMALINEA-5]
 Proc TIC["premi L per modificare il numero dei luoghi",ULTIMALINEA-4]
 Proc TIC["premi O per modificare il numero degli oggetti",ULTIMALINEA-3]
 Proc TIC["premi P per modificare il numero dei personaggi",ULTIMALINEA-2]
 Proc TIC["premi R per modificare il numero delle regioni",ULTIMALINEA-1]
 Proc TIC["premi S per modificare il numero delle stanze",ULTIMALINEA]
 SCELTA$=Input$(1) : SCELTA$=Lower$(SCELTA$)
 If SCELTA$="c" Then Proc M0DNUMCO
 If SCELTA$="e" Then Proc M0DNUME
 If SCELTA$="l" Then Proc M0DNUML
 If SCELTA$="o" Then Proc M0DNUMO
 If SCELTA$="p" Then Proc M0DNUMP
 If SCELTA$="r" Then Proc M0DNUMR
 If SCELTA$="s" Then Proc M0DNUMS
End Proc
Procedure M0DIFICAPERSONAGGIO
 PERSONAGGIO=0
 Repeat 
  Proc MOSTRAPERSONAGGIO
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta personaggio M modifica Esc esci",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="m" Then Proc M0DPERSONAGGIO
  If TASTOPREMUTO$=Cup$ Then Add PERSONAGGIO,-1,0 To NUMEROP
  If TASTOPREMUTO$=Cdown$ Then Add PERSONAGGIO,1,0 To NUMEROP
 Until TASTOPREMUTO$=Chr$(27)
 PERSONAGGIO=0
End Proc
Procedure M0DIFICAREGIONE
 REGIONE=0
 Repeat 
  Proc MOSTRAREGIONE
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta regione M modifica Esc esci",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="m" Then Proc M0DREGIONE
  If TASTOPREMUTO$=Cup$ Then Add REGIONE,-1,0 To NUMEROR
  If TASTOPREMUTO$=Cdown$ Then Add REGIONE,1,0 To NUMEROR
 Until TASTOPREMUTO$=Chr$(27)
 REGIONE=0
End Proc
Procedure M0DIFICASCOPODELGIOCO
 VECCHIOSCOPODELGIOCO=AZIONEP(7,0)
 SCOPODELGIOCO=VECCHIOSCOPODELGIOCO
 SCOPOMODIFICATO=-1
 Repeat 
  Proc SCOPODELGIOCO[True]
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta scopo del gioco M modifica Esc esci",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="m" Then Proc SCOPODELGIOCO[SCOPODELGIOCO] : SCOPOMODIFICATO=SCOPODELGIOCO
  If TASTOPREMUTO$=Cup$ Then Add SCOPODELGIOCO,-1,0 To 18
  If TASTOPREMUTO$=Cdown$ Then Add SCOPODELGIOCO,1,0 To 18
  AZIONEP(7,0)=SCOPODELGIOCO
 Until TASTOPREMUTO$=Chr$(27)
 If SCOPOMODIFICATO=-1
  AZIONEP(7,0)=VECCHIOSCOPODELGIOCO
 Else 
  AZIONEP(7,0)=SCOPOMODIFICATO
 End If 
 FINEA(7,0)=False
End Proc
Procedure M0DIFICASTANZA
 If NUMEROE=-1 Then Pop Proc
 STANZA=0
 Repeat 
  Proc MOSTRASTANZA
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta stanza M modifica Esc esci",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="m" Then Proc M0DSTANZA
  If TASTOPREMUTO$=Cup$ Then Add STANZA,-1,0 To NUMEROS(EDIFICIO)
  If TASTOPREMUTO$=Cdown$ Then Add STANZA,1,0 To NUMEROS(EDIFICIO)
 Until TASTOPREMUTO$=Chr$(27)
 STANZA=0
End Proc
Procedure M0DIFICATIPODEILUOGHI
 Cls 
 Locate 0,ULTIMALINEA : Input "Luogo di partenza (0-"+Str$(NUMEROL)-" "+") ?>";LUOGODIPARTENZA$;
 If LUOGODIPARTENZA$<>""
  LUOGODIPARTENZA=Val(LUOGODIPARTENZA$)
  Proc LIMITI[LUOGODIPARTENZA,0,NUMEROL] : LUOGODIPARTENZA=Param
 Else 
  LUOGODIPARTENZA=0
 End If 
 Locate 0,ULTIMALINEA : Input "Luogo di arrivo ("+Str$(LUOGODIPARTENZA+1)-" "+"-"+Str$(NUMEROL)-" "+") ?>";LUOGODIARRIVO$;
 If LUOGODIARRIVO$<>""
  LUOGODIARRIVO=Val(LUOGODIARRIVO$)
  Proc LIMITI[LUOGODIARRIVO,LUOGODIPARTENZA+1,NUMEROL] : LUOGODIARRIVO=Param
 Else 
  LUOGODIARRIVO=NUMEROL
 End If 
 Curs Off 
 Repeat 
  Cls 
  Print "Nuovo tipo di luogo dei luoghi";LUOGODIPARTENZA;"-";Str$(LUOGODIARRIVO)-" "
  Print At(0,ULTIMALINEA-1);TIPOL$(TIPOLUOGO)
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta nuovo tipo dei luoghi Spazio conferma Esc esci",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  If TASTOPREMUTO$=Chr$(27) Then Pop Proc
  If TASTOPREMUTO$=Cup$ Then Add TIPOLUOGO,-1,0 To 11
  If TASTOPREMUTO$=Cdown$ Then Add TIPOLUOGO,1,0 To 11
 Until TASTOPREMUTO$=" "
 For A=LUOGODIPARTENZA To LUOGODIARRIVO
  TIPOL(A)=TIPOLUOGO
 Next A
 If PARATIPOL(TIPOLUOGO)=0
  For A=0 To NUMEROP
   TEMP0DIATTRAVERSAMENTOP(A)=0
  Next A
 End If 
End Proc
Procedure M0DLUOGO
 Cls 
 Print "Nome del luogo";LUOGO;">";NOMEL$(LUOGO)
 Locate 0,ULTIMALINEA
 Input "Nuovo nome del luogo"+Str$(LUOGO)+">";NOMELUOGO$;
 If NOMELUOGO$<>"" Then NOMEL$(LUOGO)=NOMELUOGO$
 DREZIONE=DREZIONEL(0,LUOGO)
 Cls 
 Print "Direzione Nord del luogo";LUOGO;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Nord: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONEL(0,LUOGO)=DREZIONE
 End If 
 DREZIONE=DREZIONEL(1,LUOGO)
 Cls 
 Print "Direzione NordEst del luogo";LUOGO;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione NordEst: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONEL(1,LUOGO)=DREZIONE
 End If 
 DREZIONE=DREZIONEL(2,LUOGO)
 Cls 
 Print "Direzione Est del luogo";LUOGO;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Est: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONEL(2,LUOGO)=DREZIONE
 End If 
 DREZIONE=DREZIONEL(3,LUOGO)
 Cls 
 Print "Direzione SudEst del luogo";LUOGO;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione SudEst: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONEL(3,LUOGO)=DREZIONE
 End If 
 DREZIONE=DREZIONEL(4,LUOGO)
 Cls 
 Print "Direzione Sud del luogo";LUOGO;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Sud: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONEL(4,LUOGO)=DREZIONE
 End If 
 DREZIONE=DREZIONEL(5,LUOGO)
 Cls 
 Print "Direzione SudOvest del luogo";LUOGO;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione SudOvest: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONEL(5,LUOGO)=DREZIONE
 End If 
 DREZIONE=DREZIONEL(6,LUOGO)
 Cls 
 Print "Direzione Ovest del luogo";LUOGO;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Ovest: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONEL(6,LUOGO)=DREZIONE
 End If 
 DREZIONE=DREZIONEL(7,LUOGO)
 Cls 
 Print "Direzione NordOvest del luogo";LUOGO;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione NordOvest: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONEL(7,LUOGO)=DREZIONE
 End If 
 DREZIONE=DREZIONEL(8,LUOGO)
 Cls 
 Print "Direzione Sopra del luogo";LUOGO;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Sopra: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     If NUMEROSTANZA=0
      DREZIONE=NUMEROEDIFICIO*$10000
     Else 
      DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
     End If 
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONEL(8,LUOGO)=DREZIONE
 End If 
 DREZIONE=DREZIONEL(9,LUOGO)
 Cls 
 Print "Direzione Sotto del luogo";LUOGO;">luogo";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Sotto: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     If NUMEROSTANZA=0
      DREZIONE=NUMEROEDIFICIO*$10000
     Else 
      DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
     End If 
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONEL(9,LUOGO)=DREZIONE
 End If 
 Cls 
 Print "Soldi nel luogo";LUOGO;">";Str$(SOLDIL(LUOGO))-" ";" ";
 If SOLDIL(LUOGO)=1 Then Print "soldo" Else Print "soldi"
 Locate 0,ULTIMALINEA
 Input "Nuovi soldi del luogo"+Str$(PERSONAGGIO)+" (0-65535)>";SOLDINELLUOGO$;
 If SOLDINELLUOGO$<>""
  SOLDINELLUOGO=Val(SOLDINELLUOGO$)
  Proc LIMITI[SOLDINELLUOGO,0,65535] : SOLDIL(LUOGO)=Param
 End If 
 Curs Off 
 TIPOLUOGO=TIPOL(LUOGO)
 Repeat 
  Cls 
  Print "Tipo di luogo del luogo";LUOGO;">";TIPOL$(TIPOL(LUOGO))
  Print At(0,ULTIMALINEA-1);"Nuovo tipo di luogo del luogo";LUOGO;">";TIPOL$(TIPOLUOGO)
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta nuovo tipo di luogo Spazio conferma",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  If TASTOPREMUTO$=Cup$ Then Add TIPOLUOGO,-1,0 To 11
  If TASTOPREMUTO$=Cdown$ Then Add TIPOLUOGO,1,0 To 11
 Until TASTOPREMUTO$=" "
 TIPOL(LUOGO)=TIPOLUOGO
End Proc
Procedure M0DNUMCO
 Cls 
 Print "Numero delle categorie degli oggetti>";Str$(NUMEROCO+1)-" "
 Locate 0,ULTIMALINEA : Input "Nuovo numero delle categorie degli oggetti (1-"+Str$(NUMMASCO+1)-" "+")>";NUMEROCATEGORIEDEGLIOGGETTI$;
 If NUMEROCATEGORIEDEGLIOGGETTI$<>""
  NUMEROCATEGORIEDEGLIOGGETTI=Val(NUMEROCATEGORIEDEGLIOGGETTI$)
  Dec NUMEROCATEGORIEDEGLIOGGETTI
  Proc LIMITI[NUMEROCATEGORIEDEGLIOGGETTI,0,NUMMASCO] : NUMEROCO=Param
 End If 
 Curs Off 
End Proc
Procedure M0DNUME
 Cls 
 Print "Numero degli edifici>";Str$(NUMEROE+1)-" "
 Locate 0,ULTIMALINEA : Input "Nuovo numero degli edifici (0-"+Str$(NUMMASE+1)-" "+")>";NUMEROEDIFICI$;
 If NUMEROEDIFICI$<>""
  NUMEROEDIFICI=Val(NUMEROEDIFICI$) : Dec NUMEROEDIFICI
  Proc LIMITI[NUMEROEDIFICI,-1,NUMMASE] : NUMEROE=Param
  If NUMEROE=-1
   EDIFICIO=NUMEROE
  End If 
 End If 
 Curs Off 
End Proc
Procedure M0DNUML
 Cls 
 Print "Numero dei luoghi>";Str$(NUMEROL+1)-" "
 Locate 0,ULTIMALINEA : Input "Nuovo numero dei luoghi (1-"+Str$(NUMMASL+1)-" "+")>";NUMEROLUOGHI$;
 If NUMEROLUOGHI$<>""
  NUMEROLUOGHI=Val(NUMEROLUOGHI$) : Dec NUMEROLUOGHI
  Proc LIMITI[NUMEROLUOGHI,0,NUMMASL] : NUMEROL=Param
 End If 
 Curs Off 
End Proc
Procedure M0DNUMO
 Cls 
 Print "Numero degli oggetti>";Str$(NUMEROO+1)-" "
 Locate 0,ULTIMALINEA : Input "Nuovo numero degli oggetti (1-"+Str$(NUMMASO+1)-" "+")>";NUMEROOGGETTI$;
 If NUMEROOGGETTI$<>""
  NUMEROOGGETTI=Val(NUMEROOGGETTI$) : Dec NUMEROOGGETTI
  Proc LIMITI[NUMEROOGGETTI,0,NUMMASO] : NUMEROO=Param
 End If 
 Curs Off 
End Proc
Procedure M0DNUMP
 Cls 
 Print "Numero dei personaggi>";Str$(NUMEROP+1)-" "
 Locate 0,ULTIMALINEA : Input "Nuovo numero dei personaggi (1-"+Str$(NUMMASP+1)-" "+")>";NUMEROPERSONAGGI$;
 If NUMEROPERSONAGGI$<>""
  NUMEROPERSONAGGI=Val(NUMEROPERSONAGGI$) : Dec NUMEROPERSONAGGI
  Proc LIMITI[NUMEROPERSONAGGI,0,NUMMASL] : NUMEROP=Param
 End If 
 Curs Off 
End Proc
Procedure M0DNUMR
 Cls 
 Print "Numero delle regioni>";Str$(NUMEROR+1)-" "
 Locate 0,ULTIMALINEA : Input "Nuovo numero delle regioni (1-"+Str$(NUMMASL+1)-" "+")>";NUMEROREGIONI$;
 If NUMEROREGIONI$<>""
  NUMEROREGIONI=Val(NUMEROREGIONI$) : Dec NUMEROREGIONI
  Proc LIMITI[NUMEROREGIONI,0,NUMMASL] : NUMEROR=Param
 End If 
 Curs Off 
End Proc
Procedure M0DNUMS
 Cls 
 Print "Numero delle stanze>";Str$(NUMEROS(EDIFICIO)+1)-" "
 Locate 0,ULTIMALINEA : Input "Nuovo numero delle stanze (1-"+Str$(NUMMASS+1)-" "+")>";NUMEROSTANZE$;
 If NUMEROSTANZE$<>""
  NUMEROSTANZE=Val(NUMEROSTANZE$) : Dec NUMEROSTANZE
  Proc LIMITI[NUMEROSTANZE,0,NUMMASS] : NUMEROS(EDIFICIO)=Param
 End If 
 Curs Off 
End Proc
Procedure M0DOGGETTO
 CO=CATEGORIAO(OGGETTO)
 Repeat 
  Cls 
  Print "Nome dell'oggetto";OGGETTO;">";
  If Btst(1,TIPOO(OGGETTO))=True
   Print NOMESRO$(CATEGORIAO(OGGETTO))
  Else 
   Print NOMESCO$(CATEGORIAO(OGGETTO))
  End If 
  Print At(0,ULTIMALINEA-1);"Nuovo nome dell'oggetto";OGGETTO;">";
  If Btst(1,TIPOO(OGGETTO))=True
   Print NOMESRO$(CO);
  Else 
   Print NOMESCO$(CO);
  End If 
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta nuovo nome Spazio conferma",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  If TASTOPREMUTO$=Cup$ Then Add CO,-1,0 To NUMEROCO
  If TASTOPREMUTO$=Cdown$ Then Add CO,1,0 To NUMEROCO
 Until TASTOPREMUTO$=" "
 CATEGORIAO(OGGETTO)=CO
 Cls 
 Print "Nome dell'oggetto";OGGETTO;">";
 If Btst(1,TIPOO(OGGETTO))=True
  Print NOMESRO$(CATEGORIAO(OGGETTO))
 Else 
  Print NOMESCO$(CATEGORIAO(OGGETTO))
 End If 
 Print "Posizione dell'oggetto";OGGETTO;">";
 If POSIZIONEO(OGGETTO)<0
  SOGGETTO= Not POSIZIONEO(OGGETTO)
  If Btst(0,TIPOO(OGGETTO))=True
   Print "posseduto dal personaggio";SOGGETTO;
   Print " nome>";NOMEP$(SOGGETTO)
   If POSIZIONEO(OGGETTO)=-1
    POSSEDUTODALPERSONAGGIO0=True
   End If 
  Else 
   Print "contenuto nell'oggetto";SOGGETTO;
   Print " nome>";NOMESCO$(CATEGORIAO(SOGGETTO))
  End If 
 Else 
  E=POSIZIONEO(OGGETTO)/$10000
  If E>0
   Print "Edificio";E;" nome>";NOMEE$(E-1)
   S=POSIZIONEO(OGGETTO) mod $10000
   Print "Stanza";S;" nome>";NOMES$(S,E-1)
  Else 
   Print "luogo";POSIZIONEO(OGGETTO);" nome>";NOMEL$(POSIZIONEO(OGGETTO))
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Luogo dell'oggetto (0-";
 Print Str$(NUMEROL)-" ";" E=Edificio O=Oggetto P=Personaggio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo dell'oggetto>";NUMEROLUOGO$;
 If NUMEROLUOGO$<>""
  NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     POSIZIONEO(OGGETTO)=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else If NUMEROLUOGO$="o"
   Print At(0,ULTIMALINEA-1);"Oggetto che contiene l'oggetto";OGGETTO;
   Print " (0-";Str$(NUMEROO)-" ";")             ";
   Locate 0,ULTIMALINEA : Input "Numero dell'oggetto>";NUMEROOGGETTO$;
   If NUMEROOGGETTO$<>""
    NUMEROOGGETTO=Val(NUMEROOGGETTO$)
    Proc LIMITI[NUMEROOGGETTO,0,NUMEROO] : NUMEROOGGETTO=Param
    If NUMEROOGGETTO=OGGETTO
     Curs Off 
     Print At(0,ULTIMALINEA);"L'oggetto non può contenere sé stesso";
     Proc _ASPETTA
    Else 
     If Btst(1,TIPOCO(CATEGORIAO(NUMEROOGGETTO)))=True
      POSIZIONEO(OGGETTO)= Not NUMEROOGGETTO : Bclr 0,TIPOO(OGGETTO)
     Else 
      Print At(0,ULTIMALINEA);"L'oggetto non è un contenitore";
      Proc _ASPETTA
     End If 
    End If 
   End If 
  Else If NUMEROLUOGO$="p"
   Locate 0,ULTIMALINEA-1 : Cline : Print "Personaggio che possiede l'oggetto (0-";
   Print Str$(NUMEROP)-" ";")"
   Locate 0,ULTIMALINEA : Input "Numero del personaggio>";NUMEROPERSONAGGIO$;
   If NUMEROPERSONAGGIO$<>""
    NUMEROPERSONAGGIO=Val(NUMEROPERSONAGGIO$)
    Proc LIMITI[NUMEROPERSONAGGIO,0,NUMEROP] : NUMEROPERSONAGGIO=Param
    POSIZIONEO(OGGETTO)= Not NUMEROPERSONAGGIO : Bset 0,TIPOO(OGGETTO)
    If Btst(1,TIPOO(OGGETTO))=True
     Add PESONETTOP(NUMEROPERSONAGGIO),PESORESTOCO(CATEGORIAO(OGGETTO))
    Else 
     Add PESONETTOP(NUMEROPERSONAGGIO),PESOCO(CATEGORIAO(OGGETTO))
    End If 
    If NUMEROPERSONAGGIO=0
     If Btst(1,TIPOO(OGGETTO))=True
      Inc RESTODELPERSONAGGIO0(CATEGORIAO(OGGETTO))
     Else 
      Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(OGGETTO))
     End If 
    End If 
    If Btst(1,TIPOCO(CATEGORIAO(OGGETTO)))=True
     For A=0 To NUMEROO
      If POSIZIONEO(A)=-1-OGGETTO and Btst(0,TIPOO(A))=False
       If Btst(1,TIPOO(A))=True
        Add PESONETTOP(NUMEROPERSONAGGIO),PESORESTOCO(CATEGORIAO(A))
       Else 
        Add PESONETTOP(NUMEROPERSONAGGIO),PESOCO(CATEGORIAO(A))
       End If 
      End If 
     Next A
     For A=0 To NUMEROP
      If POSIZIONEP(A)=-1-OGGETTO and Btst(0,TIPOP(A))=False
       Add PESONETTOP(NUMEROPERSONAGGIO),PESOP(A)
       Add PESONETTOP(NUMEROPERSONAGGIO),PESONETTOP(A)
      End If 
     Next A
    End If 
   End If 
  Else 
   NUMEROLUOGO=Val(NUMEROLUOGO$)
   Proc LIMITI[NUMEROLUOGO,0,NUMEROL] : POSIZIONEO(OGGETTO)=Param
  End If 
  If POSSEDUTODALPERSONAGGIO0=True
   If Btst(1,TIPOO(OGGETTO))=True
    Dec RESTODELPERSONAGGIO0(CATEGORIAO(OGGETTO))
   Else 
    Dec OGGETTODELPERSONAGGIO0(CATEGORIAO(OGGETTO))
   End If 
  End If 
 End If 
 Curs Off 
 If POSIZIONEO(OGGETTO)>0 or Btst(0,TIPOO(OGGETTO))=False or Btst(2,TIPOCO(CATEGORIAO(OGGETTO)))=False or Btst(2,TIPOO(OGGETTO))=False
  Cls 
  Print "Nome dell'oggetto";OGGETTO;">";
  If Btst(1,TIPOO(OGGETTO))=True
   Print NOMESRO$(CATEGORIAO(OGGETTO))
  Else 
   Print NOMESCO$(CATEGORIAO(OGGETTO))
  End If 
  Print At(0,ULTIMALINEA);"Vuoi che l'oggetto sia un resto di oggetto (s/n) ?>";
  RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
  If RISPOSTA$="s"
   If NUMEROPERSONAGGIO=0 or POSSEDUTODALPERSONAGGIO0=True
    If Btst(1,TIPOO(OGGETTO))=False
     Dec OGGETTODELPERSONAGGIO0(CATEGORIAO(OGGETTO))
     Inc RESTODELPERSONAGGIO0(CATEGORIAO(OGGETTO))
    End If 
   End If 
   Bset 1,TIPOO(OGGETTO)
  Else 
   If NUMEROPERSONAGGIO=0 or POSSEDUTODALPERSONAGGIO0=True
    If Btst(1,TIPOO(OGGETTO))=True
     Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(OGGETTO))
     Dec RESTODELPERSONAGGIO0(CATEGORIAO(OGGETTO))
    End If 
   End If 
   Bclr 1,TIPOO(OGGETTO)
  End If 
 End If 
 If POSIZIONEO(OGGETTO)<0 and Btst(0,TIPOO(OGGETTO))=True and Btst(2,TIPOCO(CATEGORIAO(OGGETTO)))=True and Btst(1,TIPOO(OGGETTO))=False
  Cls 
  Print "Nome dell'oggetto";OGGETTO;">";NOMESCO$(CATEGORIAO(OGGETTO))
  Print At(0,ULTIMALINEA);"Vuoi che l'oggetto difensivo sia indossato (s/n) ?>";
  RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
  If RISPOSTA$="s"
   Bset 2,TIPOO(OGGETTO)
  Else 
   Bclr 2,TIPOO(OGGETTO)
  End If 
 End If 
 Locate 0,ULTIMALINEA : Cline 
 Print "Vuoi che l'oggetto sia nascosto (s/n) ?>";
 RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
 If RISPOSTA$="s"
  Bset 3,TIPOO(OGGETTO)
 Else 
  Bclr 3,TIPOO(OGGETTO)
 End If 
End Proc
Procedure M0DPERSONAGGIO
 Cls 
 Print "Nome del personaggio";PERSONAGGIO;">";NOMEP$(PERSONAGGIO)
 Locate 0,ULTIMALINEA : Input "Nuovo nome del personaggio"+Str$(PERSONAGGIO)+">";NOMEPERSONAGGIO$;
 If NOMEPERSONAGGIO$<>"" Then NOMEP$(PERSONAGGIO)=NOMEPERSONAGGIO$
 Cls 
 Print "Nome del personaggio";PERSONAGGIO;">";NOMEP$(PERSONAGGIO)
 Print "Posizione del personaggio";PERSONAGGIO;">";
 If POSIZIONEP(PERSONAGGIO)<0
  SOGGETTO= Not POSIZIONEP(PERSONAGGIO)
  If Btst(0,TIPOP(PERSONAGGIO))=True
   Print "trasportato dal personaggio";SOGGETTO;
   Print " di nome ";NOMEP$(SOGGETTO)
  Else 
   Print "contenuto nell'oggetto";SOGGETTO;
   Print " di nome ";NOMESCO$(CATEGORIAO(SOGGETTO))
  End If 
 Else 
  E=POSIZIONEP(PERSONAGGIO)/$10000
  If E>0
   Print "Edificio";E;" nome>";NOMEE$(E-1)
   S=POSIZIONEP(PERSONAGGIO) mod $10000
   Print "Stanza";S;" nome>";NOMES$(S,E-1)
  Else 
   Print "luogo";POSIZIONEP(PERSONAGGIO);" nome>";NOMEL$(POSIZIONEP(PERSONAGGIO))
  End If 
 End If 
 If PERSONAGGIO=0
  Print At(0,ULTIMALINEA-1);"Luogo del personaggio (0-";Str$(NUMEROL)-" ";" E=Edificio)";
  Locate 0,ULTIMALINEA : Input "Nuovo luogo del personaggio>";NUMEROLUOGO$;
  If NUMEROLUOGO$<>""
   If NUMEROLUOGO$="e" and NUMEROE>-1
    Locate 0,ULTIMALINEA : Input "Quale edificio (0-"+Str$(NUMEROE)-" "+") ?>";NUMEROEDIFICIO$;
    If NUMEROEDIFICIO$<>""
     NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
     Proc LIMITI[NUMEROEDIFICIO,0,NUMEROE] : NUMEROEDIFICIO=Param
     Locate 0,ULTIMALINEA : Input "Quale stanza (0-"+Str$(NUMEROS(NUMEROEDIFICIO))-" "+") ?>";NUMEROSTANZA$;
     If NUMEROSTANZA$<>""
      NUMEROSTANZA=Val(NUMEROSTANZA$)
      Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
      POSIZIONEP(PERSONAGGIO)=(NUMEROEDIFICIO+1)*$10000+NUMEROSTANZA
     End If 
    End If 
   Else 
    NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
    NUMEROLUOGO=Val(NUMEROLUOGO$)
    Proc LIMITI[NUMEROLUOGO,0,NUMEROL] : POSIZIONEP(PERSONAGGIO)=Param
    LUOGODIDESTINAZIONEP(PERSONAGGIO)=-1
    TEMP0DIATTRAVERSAMENTOP(PERSONAGGIO)=0
    DREZIONEPRESAP(PERSONAGGIO)=-1
    DREZIONEOPPOSTAAQUELLAPRESAP(PERSONAGGIO)=0
   End If 
  End If 
 Else 
  Print At(0,ULTIMALINEA-1);"Luogo del personaggio (0-";
  Print Str$(NUMEROL)-" ";" E=Edificio O=Oggetto P=Personaggio)";
  Locate 0,ULTIMALINEA : Input "Nuovo luogo del personaggio>";NUMEROLUOGO$;
  If NUMEROLUOGO$<>""
   NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
   If NUMEROLUOGO$="e" and NUMEROE>-1
    Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
    If NUMEROEDIFICIO$<>""
     NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
     Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
     Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
     If NUMEROSTANZA$<>""
      NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
      Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
      POSIZIONEP(PERSONAGGIO)=NUMEROEDIFICIO*$10000+NUMEROSTANZA
     End If 
    End If 
   Else If NUMEROLUOGO$="o"
    Print At(0,ULTIMALINEA-1);"Oggetto che contiene il personaggio (0-";
    Print Str$(NUMEROO)-" ";")             ";
    Locate 0,ULTIMALINEA : Input "Numero dell'oggetto>";NUMEROOGGETTO$;
    If NUMEROOGGETTO$<>""
     NUMEROOGGETTO=Val(NUMEROOGGETTO$)
     Proc LIMITI[NUMEROOGGETTO,0,NUMEROO] : NUMEROOGGETTO=Param
     If Btst(1,TIPOCO(CATEGORIAO(NUMEROOGGETTO)))=True
      POSIZIONEP(PERSONAGGIO)= Not NUMEROOGGETTO : Bclr 0,TIPOP(PERSONAGGIO)
     Else 
      Print At(0,ULTIMALINEA);"L'oggetto non è un contenitore";
      Proc _ASPETTA
     End If 
    End If 
   Else If NUMEROLUOGO$="p"
    Print At(0,ULTIMALINEA-1);"Personaggio che trasporta il personaggio";PERSONAGGIO;
    Print " (0-";Str$(NUMEROP)-" ";")    ";
    Locate 0,ULTIMALINEA : Input "Numero del personaggio>";NUMEROPERSONAGGIO$;
    If NUMEROPERSONAGGIO$<>""
     NUMEROPERSONAGGIO=Val(NUMEROPERSONAGGIO$)
     Proc LIMITI[NUMEROPERSONAGGIO,0,NUMEROP] : NUMEROPERSONAGGIO=Param
     If NUMEROPERSONAGGIO=PERSONAGGIO
      Curs Off 
      Print At(0,ULTIMALINEA);"Il personaggio non può trasportare sé stesso";
      Proc _ASPETTA
     Else 
      POSIZIONEP(PERSONAGGIO)= Not NUMEROPERSONAGGIO : Bset 0,TIPOP(PERSONAGGIO)
      Add PESONETTOP(NUMEROPERSONAGGIO),PESOP(PERSONAGGIO)*1000
     End If 
    End If 
   Else 
    NUMEROLUOGO=Val(NUMEROLUOGO$)
    Proc LIMITI[NUMEROLUOGO,0,NUMEROL] : POSIZIONEP(PERSONAGGIO)=Param
    LUOGODIDESTINAZIONEP(PERSONAGGIO)=-1
    TEMP0DIATTRAVERSAMENTOP(PERSONAGGIO)=0
    DREZIONEPRESAP(PERSONAGGIO)=-1
    DREZIONEOPPOSTAAQUELLAPRESAP(PERSONAGGIO)=0
   End If 
  End If 
 End If 
 Curs Off 
 Cls 
 Print "Nome del personaggio";PERSONAGGIO;">";NOMEP$(PERSONAGGIO)
 Print "Costituzione del personaggio";PERSONAGGIO;">";
 Print Str$(C0STITUZIONEP(PERSONAGGIO))-" ";" ";
 If C0STITUZIONEP(PERSONAGGIO)=1 Then Print "punto" Else Print "punti"
 Locate 0,ULTIMALINEA
 Input "Nuova costituzione del personaggio"+Str$(PERSONAGGIO)+" (1-65536)>";C0STITUZIONEPERSONAGGIO$;
 If C0STITUZIONEPERSONAGGIO$<>""
  C0STITUZIONEPERSONAGGIO=Val(C0STITUZIONEPERSONAGGIO$)
  LIMITI[C0STITUZIONEPERSONAGGIO,1,65536]
  C0STITUZIONEP(PERSONAGGIO)=Param
 End If 
 Cls 
 Print "Nome del personaggio";PERSONAGGIO;">";NOMEP$(PERSONAGGIO)
 Print "Forza del personaggio";PERSONAGGIO;">";Str$(F0RZAP(PERSONAGGIO))-" ";" ";
 If F0RZAP(PERSONAGGIO)=1 Then Print "punto" Else Print "punti"
 Locate 0,ULTIMALINEA
 Input "Nuova forza del personaggio"+Str$(PERSONAGGIO)+" (1-65536)>";F0RZAPERSONAGGIO$;
 If F0RZAPERSONAGGIO$<>""
  F0RZAPERSONAGGIO=Val(F0RZAPERSONAGGIO$)
  LIMITI[F0RZAPERSONAGGIO,1,65536] : F0RZAP(PERSONAGGIO)=Param
 End If 
 Cls 
 Print "Nome del personaggio";PERSONAGGIO;">";NOMEP$(PERSONAGGIO)
 Print "Peso del personaggio";PERSONAGGIO;">";Str$(PESOP(PERSONAGGIO))-" ";" ";
 If PESOP(PERSONAGGIO)=1 Then Print "chilo" Else Print "chili"
 Locate 0,ULTIMALINEA
 Input "Nuovo peso del personaggio"+Str$(PERSONAGGIO)+" (1-65536)>";PESOPERSONAGGIO$;
 If PESOPERSONAGGIO$<>""
  PESOPERSONAGGIO=Val(PESOPERSONAGGIO$) : PESOPRECEDENTE=PESOP(PERSONAGGIO)
  LIMITI[PESOPERSONAGGIO,1,65536] : PESOP(PERSONAGGIO)=Param
  For A=0 To NUMEROP
   If POSIZIONEP(PERSONAGGIO)=-1-A and Btst(0,TIPOP(PERSONAGGIO))=True
    Add PESONETTOP(A),-PESOPRECEDENTE*1000
    Add PESONETTOP(A),PESOP(PERSONAGGIO)*1000
   End If 
  Next A
 End If 
 Cls 
 Print "Nome del personaggio";PERSONAGGIO;">";NOMEP$(PERSONAGGIO)
 Print "Resistenza del personaggio";PERSONAGGIO;">";
 Print Str$(RESISTENZAP(PERSONAGGIO))-" ";" ";
 If RESISTENZAP(PERSONAGGIO)=1 Then Print "punto" Else Print "punti"
 Locate 0,ULTIMALINEA
 Input "Nuova resistenza del personaggio"+Str$(PERSONAGGIO)+" (0-"+Str$(C0STITUZIONEP(PERSONAGGIO))-" "+")>";RESISTENZAPERSONAGGIO$;
 If RESISTENZAPERSONAGGIO$<>""
  RESISTENZAPERSONAGGIO=Val(RESISTENZAPERSONAGGIO$)
  LIMITI[RESISTENZAPERSONAGGIO,0,C0STITUZIONEP(PERSONAGGIO)]
  RESISTENZAP(PERSONAGGIO)=Param
  If RESISTENZAP(PERSONAGGIO)=0
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-PERSONAGGIO and Btst(0,TIPOO(A))=True
     POSIZIONEO(A)=POSIZIONEP(PERSONAGGIO)
     If Btst(1,TIPOO(A))=True
      Add PESONETTOP(PERSONAGGIO),-PESORESTOCO(CATEGORIAO(A))
     Else 
      Add PESONETTOP(PERSONAGGIO),-PESOCO(CATEGORIAO(A))
     End If 
     If Btst(1,TIPOCO(CATEGORIAO(A)))=True
      For B=0 To NUMEROO
       If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
        If Btst(1,TIPOO(B))=True
         Add PESONETTOP(PERSONAGGIO),-PESORESTOCO(CATEGORIAO(B))
        Else 
         Add PESONETTOP(PERSONAGGIO),-PESOCO(CATEGORIAO(B))
        End If 
       End If 
      Next B
      For B=1 To NUMEROP
       If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(B))=False
        Add PESONETTOP(PERSONAGGIO),-PESOP(B)*1000
        Add PESONETTOP(PERSONAGGIO),-PESONETTOP(B)
       End If 
      Next B
     End If 
    End If 
   Next A
   Add SOLDIL(POSIZIONEP(PERSONAGGIO)),SOLDIP(PERSONAGGIO)
   Add PESONETTOP(PERSONAGGIO),-SOLDIP(PERSONAGGIO)*PESOS
   SOLDIP(PERSONAGGIO)=0
  End If 
 End If 
 Cls 
 Print "Nome del personaggio";PERSONAGGIO;">";NOMEP$(PERSONAGGIO)
 Print "Sesso del personaggio";PERSONAGGIO;">";
 If Btst(1,TIPOP(PERSONAGGIO))=True Then Print "Femminile" Else Print "Maschile"
 Locate 0,ULTIMALINEA
 Input "Nuovo sesso del personaggio"+Str$(PERSONAGGIO)+" (M=maschile F=femminile)>";SESSOPERSONAGGIO$;
 SESSOPERSONAGGIO$=Lower$(Left$(SESSOPERSONAGGIO$,1))
 If SESSOPERSONAGGIO$<>""
  If SESSOPERSONAGGIO$="f"
   Bset 1,TIPOP(PERSONAGGIO)
  End If 
  If SESSOPERSONAGGIO$="m"
   Bclr 1,TIPOP(PERSONAGGIO)
  End If 
 End If 
 If PERSONAGGIO>0
  Cls 
  Print "Nome del personaggio";PERSONAGGIO;">";NOMEP$(PERSONAGGIO)
  Print "Condizione del personaggio";PERSONAGGIO;">";
  If Btst(3,TIPOP(PERSONAGGIO))=True
   Print "Nemic";
  Else 
   Print "Amic";
  End If 
  If Btst(1,TIPOP(PERSONAGGIO))=True
   Print "a"
  Else 
   Print "o"
  End If 
  Locate 0,ULTIMALINEA
  Input "Nuova condizione del personaggio"+Str$(PERSONAGGIO)+" (A=amico/a N=nemico/a)>";CONDIZIONEPERSONAGGIO$;
  CONDIZIONEPERSONAGGIO$=Lower$(Left$(CONDIZIONEPERSONAGGIO$,1))
  If CONDIZIONEPERSONAGGIO$<>""
   If CONDIZIONEPERSONAGGIO$="n"
    Bset 3,TIPOP(PERSONAGGIO)
   End If 
   If CONDIZIONEPERSONAGGIO$="a"
    Bclr 3,TIPOP(PERSONAGGIO)
   End If 
  End If 
 End If 
 SOLDIPRECEDENTI=SOLDIP(PERSONAGGIO)
 Cls 
 Print "Nome del personaggio";PERSONAGGIO;">";NOMEP$(PERSONAGGIO)
 Print "Soldi del personaggio";PERSONAGGIO;">";Str$(SOLDIPRECEDENTI)-" ";" ";
 If SOLDIPRECEDENTI=1 Then Print "soldo" Else Print "soldi"
 Locate 0,ULTIMALINEA
 Input "Nuovi soldi del personaggio"+Str$(PERSONAGGIO)+" (0-65535)>";SOLDIPERSONAGGIO$;
 If SOLDIPERSONAGGIO$<>""
  SOLDIPERSONAGGIO=Val(SOLDIPERSONAGGIO$)
  Proc LIMITI[SOLDIPERSONAGGIO,0,65535] : SOLDIP(PERSONAGGIO)=Param
  If SOLDIPERSONAGGIO>0
   Add PESONETTOP(PERSONAGGIO),-SOLDIPRECEDENTI*PESOS
   Add PESONETTOP(PERSONAGGIO),SOLDIPERSONAGGIO*PESOS
  End If 
 End If 
 If PERSONAGGIO>0
  Cls 
  Print "Nome del personaggio";PERSONAGGIO;">";NOMEP$(PERSONAGGIO)
  Print "Inizio sonno del personaggio>";PERSONAGGIO;">";
  _ORE=INIZIOSONNOP(PERSONAGGIO)/60 mod 24
  Print Using "#";_ORE/10; Using "#";_ORE mod 10;
  M1NUTI=INIZIOSONNOP(PERSONAGGIO) mod 60
  Print Using ":#";M1NUTI/10; Using "#";M1NUTI mod 10
  Locate 0,ULTIMALINEA
  Input "Ore del nuovo inizio del sonno del personaggio"+Str$(PERSONAGGIO)+" (0-23)>";INIZIOSONNOPERSONAGGIO$;
  If INIZIOSONNOPERSONAGGIO$<>""
   INIZIOSONNOPERSONAGGIO=Val(INIZIOSONNOPERSONAGGIO$)
   Proc LIMITI[INIZIOSONNOPERSONAGGIO,0,23] : INIZIOSONNOP(PERSONAGGIO)=Param*60
   Locate 0,ULTIMALINEA
   Input "Minuti del nuovo inizio del sonno del personaggio"+Str$(PERSONAGGIO)+" (0-59)>";INIZIOSONNOPERSONAGGIO$;
   If INIZIOSONNOPERSONAGGIO$<>""
    INIZIOSONNOPERSONAGGIO=Val(INIZIOSONNOPERSONAGGIO$)
    Proc LIMITI[INIZIOSONNOPERSONAGGIO,0,59] : Add INIZIOSONNOP(PERSONAGGIO),Param
   End If 
  End If 
  Curs Off 
  For A=0 To 7
   Cls 
   Print "Nome del personaggio";PERSONAGGIO;">";NOMEP$(PERSONAGGIO)
   AZIONE=AZIONEP(A,PERSONAGGIO)
   PARA=PARAAAZIONEP(A,PERSONAGGIO)
   PARB=PARABAZIONEP(A,PERSONAGGIO)
   PARC=PARACAZIONEP(A,PERSONAGGIO)
   Print "Azione";A+1;">";
   Proc MOSTRAAZIONEDEGLIALTRIP[AZIONE,PARA,PARB,PARC]
   Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scelta nuova azione Spazio conferma",ULTIMALINEA]
   Repeat 
    Print At(0,ULTIMALINEA-2); : Cline : Print : Cline : Cmove ,-1
    Print "azione";A+1;">";
    Proc MOSTRAAZIONEDEGLIALTRIP[AZIONE,PARA,PARB,PARC]
    Repeat 
     TASTOPREMUTO$=Inkey$
    Until TASTOPREMUTO$<>""
    If TASTOPREMUTO$=Cup$
     Add AZIONE,-1,1 To 41
    End If 
    If TASTOPREMUTO$=Cdown$
     Add AZIONE,1,1 To 41
    End If 
   Until TASTOPREMUTO$=" "
   AZIONEP(A,PERSONAGGIO)=AZIONE
   Proc TIC["Vuoi modificare i parametri dell'azione (s/n) ?",ULTIMALINEA]
   RISPOSTA$=Input$(1)
   If RISPOSTA$="s"
    Proc INSERISCIPARAMETRIAZIONE[AZIONE,A,PERSONAGGIO]
    Curs Off 
   End If 
  Next A
 End If 
 Curs Off 
End Proc
Procedure M0DREGIONE
 Cls 
 Print "Nome della regione";REGIONE;">";NOMER$(REGIONE)
 Locate 0,ULTIMALINEA : Input "Nuovo nome della regione"+Str$(REGIONE)+">";NOMEREGIONE$;
 If NOMEREGIONE$<>"" Then NOMER$(REGIONE)=NOMEREGIONE$
 Curs Off 
End Proc
Procedure M0DSTANZA
 Cls 
 Print "Nome della stanza";STANZA;">";NOMES$(STANZA,EDIFICIO)
 Locate 0,ULTIMALINEA
 Input "Nuovo nome della stanza"+Str$(LUOGO)+">";NOMESTANZA$;
 If NOMESTANZA$<>"" Then NOMES$(STANZA,EDIFICIO)=NOMESTANZA$
 DREZIONE=DREZIONES(0,STANZA,EDIFICIO)
 Cls 
 Print "Direzione Nord della stanza";STANZA;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Nord: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONES(0,STANZA,EDIFICIO)=DREZIONE
 End If 
 DREZIONE=DREZIONES(1,STANZA,EDIFICIO)
 Cls 
 Print "Direzione NordEst della stanza";STANZA;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione NordEst: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONES(1,STANZA,EDIFICIO)=DREZIONE
 End If 
 DREZIONE=DREZIONES(2,STANZA,EDIFICIO)
 Cls 
 Print "Direzione Est della stanza";STANZA;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Est: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONES(2,STANZA,EDIFICIO)=DREZIONE
 End If 
 DREZIONE=DREZIONES(3,STANZA,EDIFICIO)
 Cls 
 Print "Direzione SudEst della stanza";STANZA;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione SudEst: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONES(3,STANZA,EDIFICIO)=DREZIONE
 End If 
 DREZIONE=DREZIONES(4,STANZA,EDIFICIO)
 Cls 
 Print "Direzione Sud della stanza";STANZA;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Sud: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONES(4,STANZA,EDIFICIO)=DREZIONE
 End If 
 DREZIONE=DREZIONES(5,STANZA,EDIFICIO)
 Cls 
 Print "Direzione SudOvest della stanza";STANZA;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione SudOvest: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONES(5,STANZA,EDIFICIO)=DREZIONE
 End If 
 DREZIONE=DREZIONES(6,STANZA,EDIFICIO)
 Cls 
 Print "Direzione Ovest della stanza";STANZA;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Ovest: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONES(6,STANZA,EDIFICIO)=DREZIONE
 End If 
 DREZIONE=DREZIONES(7,STANZA,EDIFICIO)
 Cls 
 Print "Direzione NordOvest della stanza";STANZA;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione NordOvest: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONES(7,STANZA,EDIFICIO)=DREZIONE
 End If 
 DREZIONE=DREZIONES(8,STANZA,EDIFICIO)
 Cls 
 Print "Direzione Sopra della stanza";STANZA;">";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Sopra: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     If NUMEROSTANZA=0
      DREZIONE=NUMEROEDIFICIO*$10000
     Else 
      DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
     End If 
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONES(8,STANZA,EDIFICIO)=DREZIONE
 End If 
 DREZIONE=DREZIONES(9,STANZA,EDIFICIO)
 Cls 
 Print "Direzione Sotto della stanza";STANZA;">luogo";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  If DREZIONE<$FFFF
   Print DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print " nessuno"
  End If 
 End If 
 Print At(0,ULTIMALINEA-1);"Direzione Sotto: luogo (0-";Str$(NUMEROL)-" ";" N=Nessuno E=Edificio)";
 Locate 0,ULTIMALINEA : Input "Nuovo luogo>";NUMEROLUOGO$;
 NUMEROLUOGO$=Lower$(NUMEROLUOGO$)
 If NUMEROLUOGO$<>""
  If NUMEROLUOGO$="e" and NUMEROE>-1
   Locate 0,ULTIMALINEA : Input "Quale edificio (1-"+Str$(NUMEROE+1)-" "+") ?>";NUMEROEDIFICIO$;
   If NUMEROEDIFICIO$<>""
    NUMEROEDIFICIO=Val(NUMEROEDIFICIO$)
    Proc LIMITI[NUMEROEDIFICIO,1,NUMEROE+1] : NUMEROEDIFICIO=Param
    Locate 0,ULTIMALINEA : Input "Quale stanza (1-"+Str$(NUMEROS(NUMEROEDIFICIO)+1)-" "+") ?>";NUMEROSTANZA$;
    If NUMEROSTANZA$<>""
     NUMEROSTANZA=Val(NUMEROSTANZA$) : Dec NUMEROSTANZA
     Proc LIMITI[NUMEROSTANZA,0,NUMEROS(NUMEROEDIFICIO)] : NUMEROSTANZA=Param
     If NUMEROSTANZA=0
      DREZIONE=NUMEROEDIFICIO*$10000
     Else 
      DREZIONE=NUMEROEDIFICIO*$10000+NUMEROSTANZA
     End If 
    End If 
   End If 
  Else 
   If NUMEROLUOGO$="n"
    DREZIONE=$FFFF
   Else 
    DREZIONE=Val(NUMEROLUOGO$) : Proc LIMITI[DREZIONE,0,NUMEROL] : DREZIONE=Param
   End If 
  End If 
  DREZIONES(9,STANZA,EDIFICIO)=DREZIONE
 End If 
 Cls 
 Print "Soldi nella stanza";STANZA;">";Str$(SOLDIS(STANZA,EDIFICIO))-" ";" ";
 If SOLDIS(STANZA,EDIFICIO)=1 Then Print "soldo" Else Print "soldi"
 Locate 0,ULTIMALINEA
 Input "Nuovi soldi del luogo"+Str$(PERSONAGGIO)+" (0-65535)>";SOLDINELLASTANZA$;
 If SOLDINELLASTANZA$<>""
  SOLDINELLASTANZA=Val(SOLDINELLASTANZA$)
  Proc LIMITI[SOLDINELLASTANZA,0,65535] : SOLDIS(STANZA,EDIFICIO)=Param
 End If 
 Curs Off 
End Proc
Procedure MORTE[P]
 If P=0
  COMPIUTAAZIONE=0
  Print NOMEP$(0);" è morto. La tua avventura è finita."
  Print "La tua avventura è durata";
  GIORNI=TEMP0TRASCORSO/1440
  If GIORNI>0
   Print GIORNI;
   If GIORNI=1
   Print " giorno"; Else Print " giorni";
   End If 
  End If 
  _ORE=TEMP0TRASCORSO/60 mod 24
  If _ORE>0
   Print _ORE;
   If _ORE=1
   Print " ora"; Else Print " ore";
   End If 
  End If 
  M1NUTI=TEMP0TRASCORSO mod 60 : Print M1NUTI;
  If M1NUTI=1
  Print " minuto"; Else Print " minuti";
  End If 
  Print " di gioco."
  Proc TIC["Premi un tasto",ULTIMALINEA] : Wait Key 
 Else 
  If Btst(2,TIPOP(0))=False
   Remember X : Remember Y 
   Print NOMEP$(P);" è mort";
   If Btst(1,TIPOP(P))=True
    Print "a"
   Else 
    Print "o"
   End If 
  End If 
 End If 
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
   POSIZIONEO(A)=POSIZIONEP(P)
   If Btst(1,TIPOO(A))=True
    Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(A))
   Else 
    Add PESONETTOP(P),-PESOCO(CATEGORIAO(A))
   End If 
   If Btst(1,TIPOCO(CATEGORIAO(A)))=True
    For B=0 To NUMEROO
     If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
      If Btst(1,TIPOO(B))=True
       Add PESONETTOP(P),-PESORESTOCO(CATEGORIAO(B))
      Else 
       Add PESONETTOP(P),-PESOCO(CATEGORIAO(B))
      End If 
     End If 
    Next B
    For B=1 To NUMEROP
     If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(B))=False
      Add PESONETTOP(P),-PESOP(B)*1000
      Add PESONETTOP(P),-PESONETTOP(B)
     End If 
    Next B
   End If 
  End If 
 Next A
 Add SOLDIL(POSIZIONEP(P)),SOLDIP(P)
 Add PESONETTOP(P),-SOLDIP(P)*PESOS
 SOLDIP(P)=0
End Proc
Procedure MOSTRAAZIONEDEGLIALTRIP[AZIONE,PARA,PARB,PARC]
 If AZIONE=1
  Print "dai ai personaggi";PARA;" oggett";
  If PARA=1
   Print "o"
  Else 
   Print "i"
  End If 
 Else If AZIONE=2
  Print "dai ai personaggi";PARA;" ";
  Proc LIMITI[PARB,0,NUMEROCO] : PARB=Param
  If PARA=1
   Print NOMESCO$(PARB)
  Else 
   Print NOMEPCO$(PARB)
  End If 
 Else If AZIONE=3
  Print "dai ai personaggi";PARA;" oggett";
  If PARA=1
   Print "o ";
  Else 
   Print "i ";
  End If 
  Proc MOSTRACATEGORIAPERAZIONE[PARB]
 Else If AZIONE=4
  Print "dai ai personaggi";PARA;" personaggi";
  If PARA=1
   Print "o"
  Else 
   Print 
  End If 
 Else If AZIONE=5
  Print "dai ai personaggi ";
  Proc LIMITI[PARA,0,NUMEROP] : PARA=Param
  Print NOMEP$(PARA)
 Else If AZIONE=6
  Print "dai a ";
  Proc LIMITI[PARA,0,NUMEROP] : PARA=Param
  Print NOMEP$(PARA);PARB;" oggett";
  If PARB=1
   Print "o"
  Else 
   Print "i"
  End If 
 Else If AZIONE=7
  Print "dai a ";
  Proc LIMITI[PARA,0,NUMEROP] : PARA=Param
  Print NOMEP$(PARA);PARB;" ";
  Proc LIMITI[PARC,0,NUMEROCO] : PARC=Param
  If PARB=1
   Print NOMESCO$(PARC)
  Else 
   Print NOMEPCO$(PARC)
  End If 
 Else If AZIONE=8
  Print "dai a ";
  Proc LIMITI[PARA,0,NUMEROP] : PARA=Param
  Print NOMEP$(PARA);PARB;" oggett";
  If PARB=1
   Print "o ";
  Else 
   Print "i ";
  End If 
  Proc MOSTRACATEGORIAPERAZIONE[PARC]
 Else If AZIONE=9
  Print "dai a ";
  Proc LIMITI[PARA,0,NUMEROP] : PARA=Param
  Print NOMEP$(PARA);PARB;" personaggi";
  If PARB=1
   Print "o"
  Else 
   Print 
  End If 
 Else If AZIONE=10
  Print "dai a ";
  Proc LIMITI[PARA,0,NUMEROP] : PARA=Param
  Print NOMEP$(PARA);" ";
  Proc LIMITI[PARB,0,NUMEROP] : PARB=Param
  Print NOMEP$(PARB)
 Else If AZIONE=11
  Print "lascia";PARA;" oggett";
  If PARA=1
   Print "o"
  Else 
   Print "i"
  End If 
 Else If AZIONE=12
  Print "lascia";PARA;" ";
  Proc LIMITI[PARB,0,NUMEROCO] : PARB=Param
  If PARA=1
   Print NOMESCO$(PARB)
  Else 
   Print NOMEPCO$(PARB)
  End If 
 Else If AZIONE=13
  Print "lascia";PARA;" oggett";
  If PARA=1
   Print "o ";
  Else 
   Print "i ";
  End If 
  Proc MOSTRACATEGORIAPERAZIONE[PARB]
 Else If AZIONE=14
  Print "lascia";PARA;" personaggi";
  If PARA=1
   Print "o"
  Else 
   Print 
  End If 
 Else If AZIONE=15
  Print "lascia ";
  Proc LIMITI[PARA,0,NUMEROP] : PARA=Param
  Print NOMEP$(PARA)
 Else If AZIONE=16
  Print "muoviti"
 Else If AZIONE=17
  Print "prendi";PARA;" oggett";
  If PARA=1
   Print "o"
  Else 
   Print "i"
  End If 
 Else If AZIONE=18
  Print "prendi";PARA;" ";
  Proc LIMITI[PARB,0,NUMEROCO] : PARB=Param
  If PARA=1
   Print NOMESCO$(PARB)
  Else 
   Print NOMEPCO$(PARB)
  End If 
 Else If AZIONE=19
  Print "prendi";PARA;" oggett";
  If PARA=1
   Print "o ";
  Else 
   Print "i ";
  End If 
  Proc MOSTRACATEGORIAPERAZIONE[PARB]
 Else If AZIONE=20
  Print "prendi";PARA;" personaggi";
  If PARA=1
   Print "o"
  Else 
   Print 
  End If 
 Else If AZIONE=21
  Print "prendi ";
  Proc LIMITI[PARA,0,NUMEROP] : PARA=Param
  Print NOMEP$(PARA)
 Else If AZIONE=22
  Print "segui"
 Else If AZIONE=23
  Print "segui ";
  Proc LIMITI[PARA,0,NUMEROP] : PARA=Param
  Print NOMEP$(PARA)
 Else If AZIONE=24
  Print "usa un'oggetto su";PARA;" oggett";
  If PARA=1
   Print "o"
  Else 
   Print "i"
  End If 
 Else If AZIONE=25
  Print "usa un'oggetto su";PARA;" ";
  Proc LIMITI[PARB,0,NUMEROP] : PARB=Param
  If PARA=1
   Print NOMESCO$(PARB)
  Else 
   Print NOMEPCO$(PARB)
  End If 
 Else If AZIONE=26
  Print "usa un'oggetto su";PARA;" oggett";
  If PARA=1
   Print "o ";
  Else 
   Print "i ";
  End If 
  Proc MOSTRACATEGORIAPERAZIONE[PARB]
 Else If AZIONE=27
  Print "usa un'oggetto su";PARA;" personaggi";
  If PARA=1
   Print "o"
  Else 
   Print 
  End If 
 Else If AZIONE=28
  Print "usa un'oggetto su ";
  Proc LIMITI[PARA,0,NUMEROP] : PARA=Param
  Print NOMEP$(PARA)
 Else If AZIONE=29
  Print "usa 1 ";
  Proc LIMITI[PARA,0,NUMEROCO] : PARA=Param
  Print NOMESCO$(PARA);" su";PARB;" oggett";
  If PARB=1
   Print "o"
  Else 
   Print "i"
  End If 
 Else If AZIONE=30
  Print "usa 1 ";
  Proc LIMITI[PARA,0,NUMEROCO] : PARA=Param
  Print NOMESCO$(PARA);" su";PARB;" ";
  Proc LIMITI[PARC,0,NUMEROCO] : PARC=Param
  If PARB=1
   Print NOMESCO$(PARC)
  Else 
   Print NOMEPCO$(PARC)
  End If 
 Else If AZIONE=31
  Print "usa 1 ";
  Proc LIMITI[PARA,0,NUMEROCO] : PARA=Param
  Print NOMESCO$(PARA);" su";PARB;" oggett";
  If PARB=1
   Print "o ";
  Else 
   Print "i ";
  End If 
  Proc MOSTRACATEGORIAPERAZIONE[PARC]
 Else If AZIONE=32
  Print "usa 1 ";
  Proc LIMITI[PARA,0,NUMEROCO] : PARA=Param
  Print NOMESCO$(PARA);" su";PARB;" personaggi";
  If PARB=1
   Print "o"
  Else 
   Print 
  End If 
 Else If AZIONE=33
  Print "usa 1 ";
  Proc LIMITI[PARA,0,NUMEROCO] : PARA=Param
  Print NOMESCO$(PARA);" su ";
  Proc LIMITI[PARB,0,NUMEROP] : PARB=Param
  Print NOMEP$(PARB)
 Else If AZIONE=34
  Print "usa un'oggetto ";
  Proc MOSTRACATEGORIAPERAZIONE[PARA]
  Print Space$(9);"su";PARB;" oggett";
  If PARB=1
   Print "o"
  Else 
   Print "i"
  End If 
 Else If AZIONE=35
  Print "usa un'oggetto ";
  Proc MOSTRACATEGORIAPERAZIONE[PARA]
  Print Space$(9);"su";PARB;" ";
  Proc LIMITI[PARC,0,NUMEROCO] : PARC=Param
  If PARB=1
   Print NOMESCO$(PARC)
  Else 
   Print NOMEPCO$(PARC)
  End If 
 Else If AZIONE=36
  Print "usa un'oggetto ";
  Proc MOSTRACATEGORIAPERAZIONE[PARA]
  Print Space$(9);"su";PARB;" oggett";
  If PARB=1
   Print "o ";
  Else 
   Print "i ";
  End If 
  Proc MOSTRACATEGORIAPERAZIONE[PARC]
 Else If AZIONE=37
  Print "usa un'oggetto ";
  Proc MOSTRACATEGORIAPERAZIONE[PARA]
  Print Space$(9);"su";PARB;" personaggi";
  If PARB=1
   Print "o"
  Else 
   Print 
  End If 
 Else If AZIONE=38
  Print "usa un'oggetto ";
  Proc MOSTRACATEGORIAPERAZIONE[PARA]
  Print Space$(9);"su ";
  Proc LIMITI[PARB,0,NUMEROP] : PARB=Param
  Print NOMEP$(PARB)
 Else If AZIONE=39
  Print "usati un'oggetto"
 Else If AZIONE=40
  Print "usati un'oggetto ";
  Proc LIMITI[PARA,0,NUMEROCO] : PARA=Param
  Print NOMESCO$(PARA)
 Else If AZIONE=41
  Print "usati un'oggetto ";
  Proc MOSTRACATEGORIAPERAZIONE[PARA]
 End If 
End Proc
Procedure MOSTRACATEGORIADEGLIOGGETTI
 Cls 
 If M0DIFICA=False
  Proc TIC[MESSAGGIO3$,0] : Print 
 End If 
 Print "Nome singolare e plurale della categoria";CATEGORIADEGLIOGGETTI;" degli oggetti>"
 Print NOMESCO$(CATEGORIADEGLIOGGETTI);"<=>";NOMEPCO$(CATEGORIADEGLIOGGETTI)
 Print "Peso della categoria";CATEGORIADEGLIOGGETTI;" degli oggetti>";
 PESOOGGETTO=PESOCO(CATEGORIADEGLIOGGETTI)
 Print Str$(PESOOGGETTO)-" ";" ";
 If PESOOGGETTO=1
  Print "grammo"
 Else 
  Print "grammi"
 End If 
 Print "Nome singolare e plurale della categoria";CATEGORIADEGLIOGGETTI;" dei resti degli oggetti>"
 Print NOMESRO$(CATEGORIADEGLIOGGETTI);"<=>";NOMEPRO$(CATEGORIADEGLIOGGETTI)
 Print "Peso della categoria";CATEGORIADEGLIOGGETTI;" dei resti degli oggetti>";
 PESORESTOOGGETTO=PESORESTOCO(CATEGORIADEGLIOGGETTI)
 Print Str$(PESORESTOOGGETTO)-" ";" ";
 If PESORESTOOGGETTO=1
  Print "grammo"
 Else 
  Print "grammi"
 End If 
 Print "Parametro della categoria";CATEGORIADEGLIOGGETTI;" degli oggetti>";
 Print Str$(PARATIPOCO(CATEGORIADEGLIOGGETTI))-" "
 If Btst(0,TIPOCO(CATEGORIADEGLIOGGETTI))=True Then Print "Commestibile"
 If Btst(1,TIPOCO(CATEGORIADEGLIOGGETTI))=True Then Print "Contenitore"
 If Btst(2,TIPOCO(CATEGORIADEGLIOGGETTI))=True Then Print "Difensivo"
 If Btst(3,TIPOCO(CATEGORIADEGLIOGGETTI))=True Then Print "Leggibile"
 If Btst(4,TIPOCO(CATEGORIADEGLIOGGETTI))=True Then Print "Liquido"
 If Btst(5,TIPOCO(CATEGORIADEGLIOGGETTI))=True Then Print "Magico"
 If Btst(6,TIPOCO(CATEGORIADEGLIOGGETTI))=True Then Print "Offensivo"
 If Btst(7,TIPOCO(CATEGORIADEGLIOGGETTI))=True Then Print "Residente"
 If Btst(4,TIPOCO(CATEGORIADEGLIOGGETTI))=False Then Print "Solido"
 If Btst(8,TIPOCO(CATEGORIADEGLIOGGETTI))=True Then Print "Trasferibile"
 If Btst(9,TIPOCO(CATEGORIADEGLIOGGETTI))=True Then Print "Trasparente"
 If Btst(10,TIPOCO(CATEGORIADEGLIOGGETTI))=True Then Print "Vincolato"
End Proc
Procedure MOSTRACATEGORIAPERAZIONE[CATEGORIA]
 If Btst(0,CATEGORIA)=True Then Print "commestibile ";
 If Btst(1,CATEGORIA)=True Then Print "contenitore ";
 If Btst(2,CATEGORIA)=True Then Print "difensivo ";
 If Btst(3,CATEGORIA)=True Then Print "leggibile ";
 If Btst(4,CATEGORIA)=True Then Print "liquido "; Else Print "solido ";
 If Btst(5,CATEGORIA)=True Then Print "magico ";
 If Btst(6,CATEGORIA)=True Then Print "offensivo ";
 If Btst(8,CATEGORIA)=True Then Print "trasferibile ";
 If Btst(9,CATEGORIA)=True Then Print "trasparente ";
 If Btst(10,CATEGORIA)=True Then Print "vincolato ";
 Print 
End Proc
Procedure MOSTRACATEGORIAPERINSERIMENTO[P]
 Repeat 
  Cls 
  Print "Nome del personaggio";P;">";NOMEP$(P)
  Print At(0,ULTIMALINEA-11);"Categoria";CATEGORIA;" degli oggetti>";NOMEPCO$(CATEGORIA)
  If Btst(0,TIPOCO(CATEGORIA))=True Then Print "commestibile "
  If Btst(1,TIPOCO(CATEGORIA))=True Then Print "contenitore "
  If Btst(2,TIPOCO(CATEGORIA))=True Then Print "difensivo "
  If Btst(3,TIPOCO(CATEGORIA))=True Then Print "leggibile "
  If Btst(4,TIPOCO(CATEGORIA))=True Then Print "liquido " Else Print "solido "
  If Btst(5,TIPOCO(CATEGORIA))=True Then Print "magico "
  If Btst(6,TIPOCO(CATEGORIA))=True Then Print "offensivo "
  If Btst(8,TIPOCO(CATEGORIA))=True Then Print "trasferibile "
  If Btst(9,TIPOCO(CATEGORIA))=True Then Print "trasparente "
  If Btst(10,TIPOCO(CATEGORIA))=True Then Print "vincolato "
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scegli la categoria Spazio conferma",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  If TASTOPREMUTO$=Cup$ Then Add CATEGORIA,-1,0 To NUMEROCO
  If TASTOPREMUTO$=Cdown$ Then Add CATEGORIA,1,0 To NUMEROCO
 Until TASTOPREMUTO$=" "
End Proc[TIPOCO(CATEGORIA)]
Procedure MOSTRAGLIEDIFICI
 Shared TASTOPREMUTO$
 MESSAGGIO2$="Tasti cursore: sopra e sotto -> scelta edificio...C -> carica un"
 MESSAGGIO2$=MESSAGGIO2$+" file di Adventures Conceiver...D -> mostra il desti"
 MESSAGGIO2$=MESSAGGIO2$+"no (scopo) del gioco...G -> gioca un'avventura...I -"
 MESSAGGIO2$=MESSAGGIO2$+"> mostra le stanze dell'edificio corrente...K -> mos"
 MESSAGGIO2$=MESSAGGIO2$+"tra le categorie degli oggetti...L -> mostra i luogh"
 MESSAGGIO2$=MESSAGGIO2$+"i...M -> modifica un'avventura...O -> mostra gli ogg"
 MESSAGGIO2$=MESSAGGIO2$+"etti...P -> mostra i personaggi...R -> mostra le reg"
 MESSAGGIO2$=MESSAGGIO2$+"ioni...S -> salva un file di Adventures Conceiver..."
 MESSAGGIO2$=MESSAGGIO2$+"? -> mostra i meriti...Esc -> esci da Adventures Con"
 MESSAGGIO2$=MESSAGGIO2$+"ceiver..."
 MESSAGGIO2$=MESSAGGIO2$+MERITI$+"..."
 Repeat 
  Proc MOSTRAEDIFICIO
  If MESSAGGIO1$<>"" Then Proc TIC[MESSAGGIO1$,ULTIMALINEA-1]
  CARATTEREMESSAGGIO=0
  Repeat 
   TASTOPREMUTO$=Inkey$
   Proc MESSAGGIO[MESSAGGIO2$]
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="c" Then Proc CARICAUNFILE : Proc DABANCOAVARIABILI
  If TASTOPREMUTO$="d" Then Exit 
  If TASTOPREMUTO$="g" Then Proc GIOCA
  If TASTOPREMUTO$="i" and NUMEROE>-1 Then Exit 
  If TASTOPREMUTO$="k" Then Exit 
  If TASTOPREMUTO$="l" Then Exit 
  If TASTOPREMUTO$="m" Then Proc M0DIFICA
  If TASTOPREMUTO$="o" Then Exit 
  If TASTOPREMUTO$="p" Then Exit 
  If TASTOPREMUTO$="r" Then Exit 
  If TASTOPREMUTO$="s"
   Proc DAVARIABILIABANCO[False]
   If SENZAMEMORIA=False
    Proc DAVARIABILIABANCO[True]
    If SENZAMEMORIA=False
     Proc SALVAUNFILE
    End If 
   End If 
  End If 
  If TASTOPREMUTO$="?" Then Proc _INTERFACCIA
  If EDIFICIO>-1
   If TASTOPREMUTO$=Cup$
    Add EDIFICIO,-1,0 To NUMEROE
   End If 
   If TASTOPREMUTO$=Cdown$
    Add EDIFICIO,1,0 To NUMEROE
   End If 
  End If 
 Until TASTOPREMUTO$=Chr$(27)
End Proc
Procedure MOSTRAGLIOGGETTI
 Shared TASTOPREMUTO$
 MESSAGGIO2$="Tasti cursore: sopra e sotto -> scelta oggetto...C -> carica un "
 MESSAGGIO2$=MESSAGGIO2$+"file di Adventures Conceiver...D -> mostra il destin"
 MESSAGGIO2$=MESSAGGIO2$+"o (scopo) del gioco...E -> mostra gli edifici...G ->"
 MESSAGGIO2$=MESSAGGIO2$+" gioca un'avventura...I -> mostra le stanze dell'edi"
 MESSAGGIO2$=MESSAGGIO2$+"ficio corrente...K -> mostra le categorie degli ogge"
 MESSAGGIO2$=MESSAGGIO2$+"tti...L -> mostra i luoghi M -> modifica un'avventur"
 MESSAGGIO2$=MESSAGGIO2$+"a...P -> mostra i personaggi...R -> mostra le region"
 MESSAGGIO2$=MESSAGGIO2$+"i...S -> salva un file di Adventures Conceiver...? -"
 MESSAGGIO2$=MESSAGGIO2$+"> mostra i meriti...Esc -> esci da Adventures Concei"
 MESSAGGIO2$=MESSAGGIO2$+"ver..."
 MESSAGGIO2$=MESSAGGIO2$+MERITI$+"..."
 Repeat 
  Proc MOSTRAOGGETTO
  If MESSAGGIO1$<>"" Then Proc TIC[MESSAGGIO1$,ULTIMALINEA-1]
  CARATTEREMESSAGGIO=0
  Repeat 
   TASTOPREMUTO$=Inkey$
   Proc MESSAGGIO[MESSAGGIO2$]
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="c" Then Proc CARICAUNFILE : Proc DABANCOAVARIABILI
  If TASTOPREMUTO$="d" Then Exit 
  If TASTOPREMUTO$="e" Then Exit 
  If TASTOPREMUTO$="g" Then Proc GIOCA
  If TASTOPREMUTO$="i" and NUMEROE>-1 Then Exit 
  If TASTOPREMUTO$="k" Then Exit 
  If TASTOPREMUTO$="l" Then Exit 
  If TASTOPREMUTO$="m" Then Proc M0DIFICA
  If TASTOPREMUTO$="p" Then Exit 
  If TASTOPREMUTO$="r" Then Exit 
  If TASTOPREMUTO$="s"
   Proc DAVARIABILIABANCO[False]
   If SENZAMEMORIA=False
    Proc DAVARIABILIABANCO[True]
    If SENZAMEMORIA=False
     Proc SALVAUNFILE
    End If 
   End If 
  End If 
  If TASTOPREMUTO$="?" Then Proc _INTERFACCIA
  If TASTOPREMUTO$=Cup$ Then Add OGGETTO,-1,0 To NUMEROO
  If TASTOPREMUTO$=Cdown$ Then Add OGGETTO,1,0 To NUMEROO
 Until TASTOPREMUTO$=Chr$(27)
End Proc
Procedure MOSTRAEDIFICIO
 Cls 
 If M0DIFICA=False
  Proc TIC[MESSAGGIO3$,0] : Print 
 End If 
 If EDIFICIO>-1
  Print "Edificio";EDIFICIO;":"
  Print "Nome>";NOMEE$(EDIFICIO)
  Print "Posizione>luogo";POSIZIONEE(EDIFICIO);" nome>";NOMEL$(POSIZIONEE(EDIFICIO))
  Print "Numero delle stanze>";Str$(NUMEROS(EDIFICIO)+1)-" "
 Else 
  Print "Nessun edificio"
 End If 
End Proc
Procedure MOSTRAILDESTINODELGIOCO
 Shared TASTOPREMUTO$
 MESSAGGIO2$="C -> carica un file di Adventures Conceiver...E -> mostra gli ed"
 MESSAGGIO2$=MESSAGGIO2$+"ifici...G -> gioca un'avventura...I -> mostra le sta"
 MESSAGGIO2$=MESSAGGIO2$+"nze dell'edificio corrente...K -> mostra le categori"
 MESSAGGIO2$=MESSAGGIO2$+"e degli oggetti...L -> mostra i luoghi...M -> modifi"
 MESSAGGIO2$=MESSAGGIO2$+"ca un'avventura...O -> mostra gli oggetti...P -> mos"
 MESSAGGIO2$=MESSAGGIO2$+"tra i personaggi...R -> mostra le regioni...S -> sal"
 MESSAGGIO2$=MESSAGGIO2$+"va un file di Adventures Conceiver...? -> mostra i m"
 MESSAGGIO2$=MESSAGGIO2$+"eriti...Esc -> esci da Adventures Conceiver..."
 MESSAGGIO2$=MESSAGGIO2$+MERITI$+"..."
 Repeat 
  Proc SCOPODELGIOCO[True]
  Print "Nemici>";
  If ANEMICI=True Then Print "attivati" Else Print "disattivati"
  Print "Musica>";
  If _MUSICA=True Then Print "attivata" Else Print "disattivata"
  If MESSAGGIO1$<>"" Then Proc TIC[MESSAGGIO1$,ULTIMALINEA-1]
  CARATTEREMESSAGGIO=0
  Repeat 
   TASTOPREMUTO$=Inkey$
   Proc MESSAGGIO[MESSAGGIO2$]
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="c" Then Proc CARICAUNFILE : Proc DABANCOAVARIABILI
  If TASTOPREMUTO$="e" Then Exit 
  If TASTOPREMUTO$="g" Then Proc GIOCA
  If TASTOPREMUTO$="i" and NUMEROE>-1 Then Exit 
  If TASTOPREMUTO$="k" Then Exit 
  If TASTOPREMUTO$="l" Then Exit 
  If TASTOPREMUTO$="m" Then Proc M0DIFICA
  If TASTOPREMUTO$="o" Then Exit 
  If TASTOPREMUTO$="p" Then Exit 
  If TASTOPREMUTO$="r" Then Exit 
  If TASTOPREMUTO$="s"
   Proc DAVARIABILIABANCO[False]
   If SENZAMEMORIA=False
    Proc DAVARIABILIABANCO[True]
    If SENZAMEMORIA=False
     Proc SALVAUNFILE
    End If 
   End If 
  End If 
  If TASTOPREMUTO$="?" Then Proc _INTERFACCIA
 Until TASTOPREMUTO$=Chr$(27)
End Proc
Procedure MOSTRAILUOGHI
 Shared TASTOPREMUTO$
 MESSAGGIO2$="Tasti cursore: sopra e sotto -> scelta luogo...C -> carica un fi"
 MESSAGGIO2$=MESSAGGIO2$+"le di Adventures Conceiver...D -> mostra il destino "
 MESSAGGIO2$=MESSAGGIO2$+"(scopo) del gioco...E -> mostra gli edifici...G -> g"
 MESSAGGIO2$=MESSAGGIO2$+"ioca un'avventura...I -> mostra le stanze dell'edifi"
 MESSAGGIO2$=MESSAGGIO2$+"cio corrente...K -> mostra le categorie degli oggett"
 MESSAGGIO2$=MESSAGGIO2$+"i...M -> modifica un'avventura...O -> mostra gli ogg"
 MESSAGGIO2$=MESSAGGIO2$+"etti...P -> mostra i personaggi...R -> mostra le reg"
 MESSAGGIO2$=MESSAGGIO2$+"ioni...S -> salva un file di Adventures Conceiver..."
 MESSAGGIO2$=MESSAGGIO2$+"? -> mostra i meriti...Esc -> esci da Adventures Con"
 MESSAGGIO2$=MESSAGGIO2$+"ceiver..."
 MESSAGGIO2$=MESSAGGIO2$+MERITI$+"..."
 Repeat 
  Proc MOSTRALUOGO
  If MESSAGGIO1$<>"" Then Proc TIC[MESSAGGIO1$,ULTIMALINEA-1]
  CARATTEREMESSAGGIO=0
  Repeat 
   TASTOPREMUTO$=Inkey$
   Proc MESSAGGIO[MESSAGGIO2$]
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="c" Then Proc CARICAUNFILE : Proc DABANCOAVARIABILI
  If TASTOPREMUTO$="d" Then Exit 
  If TASTOPREMUTO$="e" Then Exit 
  If TASTOPREMUTO$="g" Then Proc GIOCA
  If TASTOPREMUTO$="i" and NUMEROE>-1 Then Exit 
  If TASTOPREMUTO$="k" Then Exit 
  If TASTOPREMUTO$="m" Then Proc M0DIFICA
  If TASTOPREMUTO$="o" Then Exit 
  If TASTOPREMUTO$="p" Then Exit 
  If TASTOPREMUTO$="r" Then Exit 
  If TASTOPREMUTO$="s"
   Proc DAVARIABILIABANCO[False]
   If SENZAMEMORIA=False
    Proc DAVARIABILIABANCO[True]
    If SENZAMEMORIA=False
     Proc SALVAUNFILE
    End If 
   End If 
  End If 
  If TASTOPREMUTO$="?" Then Proc _INTERFACCIA
  If TASTOPREMUTO$=Cup$ Then Add LUOGO,-1,0 To NUMEROL
  If TASTOPREMUTO$=Cdown$ Then Add LUOGO,1,0 To NUMEROL
 Until TASTOPREMUTO$=Chr$(27)
End Proc
Procedure MOSTRAIPERSONAGGI
 Shared TASTOPREMUTO$
 MESSAGGIO2$="Tasti cursore: sopra e sotto -> scelta personaggio...C -> carica"
 MESSAGGIO2$=MESSAGGIO2$+" un file di Adventures Conceiver...D -> mostra il de"
 MESSAGGIO2$=MESSAGGIO2$+"stino (scopo) del gioco...E -> mostra gli edifici..."
 MESSAGGIO2$=MESSAGGIO2$+"G -> gioca un'avventura...I -> mostra le stanze dell"
 MESSAGGIO2$=MESSAGGIO2$+"'edificio corrente...K -> mostra le categorie degli "
 MESSAGGIO2$=MESSAGGIO2$+"oggetti...L -> mostra i luoghi...M -> modifica un'av"
 MESSAGGIO2$=MESSAGGIO2$+"ventura...O -> mostra gli oggetti...R -> mostra le r"
 MESSAGGIO2$=MESSAGGIO2$+"egioni...S -> salva un file di Adventures Conceiver."
 MESSAGGIO2$=MESSAGGIO2$+"..? -> mostra i meriti...Esc -> esci da Adventures C"
 MESSAGGIO2$=MESSAGGIO2$+"onceiver..."
 MESSAGGIO2$=MESSAGGIO2$+MERITI$+"..."
 Repeat 
  Proc MOSTRAPERSONAGGIO
  If MESSAGGIO1$<>"" Then Proc TIC[MESSAGGIO1$,ULTIMALINEA-1]
  CARATTEREMESSAGGIO=0
  Repeat 
   TASTOPREMUTO$=Inkey$
   Proc MESSAGGIO[MESSAGGIO2$]
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="c" Then Proc CARICAUNFILE : Proc DABANCOAVARIABILI
  If TASTOPREMUTO$="d" Then Exit 
  If TASTOPREMUTO$="e" Then Exit 
  If TASTOPREMUTO$="g" Then Proc GIOCA
  If TASTOPREMUTO$="i" and NUMEROE>-1 Then Exit 
  If TASTOPREMUTO$="k" Then Exit 
  If TASTOPREMUTO$="l" Then Exit 
  If TASTOPREMUTO$="m" Then Proc M0DIFICA
  If TASTOPREMUTO$="o" Then Exit 
  If TASTOPREMUTO$="r" Then Exit 
  If TASTOPREMUTO$="s"
   Proc DAVARIABILIABANCO[False]
   If SENZAMEMORIA=False
    Proc DAVARIABILIABANCO[True]
    If SENZAMEMORIA=False
     Proc SALVAUNFILE
    End If 
   End If 
  End If 
  If TASTOPREMUTO$="?" Then Proc _INTERFACCIA
  If TASTOPREMUTO$=Cup$ Then Add PERSONAGGIO,-1,0 To NUMEROP
  If TASTOPREMUTO$=Cdown$ Then Add PERSONAGGIO,1,0 To NUMEROP
 Until TASTOPREMUTO$=Chr$(27)
End Proc
Procedure MOSTRALECATEGORIEDEGLIOGGETTI
 Shared TASTOPREMUTO$
 MESSAGGIO2$="Tasti cursore: sopra e sotto -> scelta categoria...C -> carica u"
 MESSAGGIO2$=MESSAGGIO2$+"n file di Adventures Conceiver...D -> mostra il dest"
 MESSAGGIO2$=MESSAGGIO2$+"ino (scopo) del gioco...E -> mostra gli edifici...G "
 MESSAGGIO2$=MESSAGGIO2$+"-> gioca un'avventura...I -> mostra le stanze dell'e"
 MESSAGGIO2$=MESSAGGIO2$+"dificio corrente...L -> mostra i luoghi...M -> modif"
 MESSAGGIO2$=MESSAGGIO2$+"ica un'avventura...O -> mostra gli oggetti...P -> mo"
 MESSAGGIO2$=MESSAGGIO2$+"stra i personaggi...R -> mostra le regioni...S -> sa"
 MESSAGGIO2$=MESSAGGIO2$+"lva un file di Adventures Conceiver...? -> mostra i "
 MESSAGGIO2$=MESSAGGIO2$+"meriti...Esc -> esci da Adventures Conceiver..."
 MESSAGGIO2$=MESSAGGIO2$+MERITI$+"..."
 Repeat 
  Proc MOSTRACATEGORIADEGLIOGGETTI
  If MESSAGGIO1$<>"" Then Proc TIC[MESSAGGIO1$,ULTIMALINEA-1]
  CARATTEREMESSAGGIO=0
  Repeat 
   TASTOPREMUTO$=Inkey$
   Proc MESSAGGIO[MESSAGGIO2$]
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="c" Then Proc CARICAUNFILE : Proc DABANCOAVARIABILI
  If TASTOPREMUTO$="d" Then Exit 
  If TASTOPREMUTO$="e" Then Exit 
  If TASTOPREMUTO$="g" Then Proc GIOCA
  If TASTOPREMUTO$="i" and NUMEROE>-1 Then Exit 
  If TASTOPREMUTO$="l" Then Exit 
  If TASTOPREMUTO$="m" Then Proc M0DIFICA
  If TASTOPREMUTO$="o" Then Exit 
  If TASTOPREMUTO$="p" Then Exit 
  If TASTOPREMUTO$="r" Then Exit 
  If TASTOPREMUTO$="s"
   Proc DAVARIABILIABANCO[False]
   If SENZAMEMORIA=False
    Proc DAVARIABILIABANCO[True]
    If SENZAMEMORIA=False
     Proc SALVAUNFILE
    End If 
   End If 
  End If 
  If TASTOPREMUTO$="?" Then Proc _INTERFACCIA
  If TASTOPREMUTO$=Cup$ Then Add CATEGORIADEGLIOGGETTI,-1,0 To NUMEROCO
  If TASTOPREMUTO$=Cdown$ Then Add CATEGORIADEGLIOGGETTI,1,0 To NUMEROCO
 Until TASTOPREMUTO$=Chr$(27)
End Proc
Procedure MOSTRALEREGIONI
 Shared TASTOPREMUTO$
 MESSAGGIO2$="Tasti cursore: sopra e sotto -> scelta regione...C -> carica un "
 MESSAGGIO2$=MESSAGGIO2$+"file di Adventures Conceiver...D -> mostra il destin"
 MESSAGGIO2$=MESSAGGIO2$+"o (scopo) del gioco...E -> mostra gli edifici...G ->"
 MESSAGGIO2$=MESSAGGIO2$+" gioca un'avventura...I -> mostra le stanze dell'edi"
 MESSAGGIO2$=MESSAGGIO2$+"ficio corrente...K -> mostra le categorie degli ogge"
 MESSAGGIO2$=MESSAGGIO2$+"tti...L -> mostra i luoghi...M -> modifica un'avvent"
 MESSAGGIO2$=MESSAGGIO2$+"ura...O -> mostra gli oggetti...P -> mostra i person"
 MESSAGGIO2$=MESSAGGIO2$+"aggi...S -> salva un file di Adventures Conceiver..."
 MESSAGGIO2$=MESSAGGIO2$+"? -> mostra i meriti...Esc -> esci da Adventures Con"
 MESSAGGIO2$=MESSAGGIO2$+"ceiver..."
 MESSAGGIO2$=MESSAGGIO2$+MERITI$+"..."
 Repeat 
  Proc MOSTRAREGIONE
  If MESSAGGIO1$<>"" Then Proc TIC[MESSAGGIO1$,ULTIMALINEA-1]
  CARATTEREMESSAGGIO=0
  Repeat 
   TASTOPREMUTO$=Inkey$
   Proc MESSAGGIO[MESSAGGIO2$]
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="c" Then Proc CARICAUNFILE : Proc DABANCOAVARIABILI
  If TASTOPREMUTO$="d" Then Exit 
  If TASTOPREMUTO$="e" Then Exit 
  If TASTOPREMUTO$="g" Then Proc GIOCA
  If TASTOPREMUTO$="i" and NUMEROE>-1 Then Exit 
  If TASTOPREMUTO$="k" Then Exit 
  If TASTOPREMUTO$="l" Then Exit 
  If TASTOPREMUTO$="m" Then Proc M0DIFICA
  If TASTOPREMUTO$="o" Then Exit 
  If TASTOPREMUTO$="p" Then Exit 
  If TASTOPREMUTO$="s"
   Proc DAVARIABILIABANCO[False]
   If SENZAMEMORIA=False
    Proc DAVARIABILIABANCO[True]
    If SENZAMEMORIA=False
     Proc SALVAUNFILE
    End If 
   End If 
  End If 
  If TASTOPREMUTO$="?" Then Proc _INTERFACCIA
  If TASTOPREMUTO$=Cup$ Then Add REGIONE,-1,0 To NUMEROR
  If TASTOPREMUTO$=Cdown$ Then Add REGIONE,1,0 To NUMEROR
 Until TASTOPREMUTO$=Chr$(27)
End Proc
Procedure MOSTRALESTANZE
 Shared TASTOPREMUTO$
 MESSAGGIO2$="Tasti cursore: sopra e sotto -> scelta stanza...C -> carica un f"
 MESSAGGIO2$=MESSAGGIO2$+"ile di Adventures Conceiver...D -> mostra il destino"
 MESSAGGIO2$=MESSAGGIO2$+" (scopo) del gioco...E -> mostra gli edifici...G -> "
 MESSAGGIO2$=MESSAGGIO2$+"gioca un'avventura...K -> mostra le categorie degli "
 MESSAGGIO2$=MESSAGGIO2$+"oggetti...L -> mostra i luoghi...M -> modifica un'av"
 MESSAGGIO2$=MESSAGGIO2$+"ventura...O -> mostra gli oggetti...P -> mostra i pe"
 MESSAGGIO2$=MESSAGGIO2$+"rsonaggi...R -> mostra le regioni...S -> salva un fi"
 MESSAGGIO2$=MESSAGGIO2$+"le di Adventures Conceiver...? -> mostra i meriti..."
 MESSAGGIO2$=MESSAGGIO2$+"Esc -> esci da Adventures Conceiver..."
 MESSAGGIO2$=MESSAGGIO2$+MERITI$+"..."
 Repeat 
  Proc MOSTRASTANZA
  If MESSAGGIO1$<>"" Then Proc TIC[MESSAGGIO1$,ULTIMALINEA-1]
  CARATTEREMESSAGGIO=0
  Repeat 
   TASTOPREMUTO$=Inkey$
   Proc MESSAGGIO[MESSAGGIO2$]
  Until TASTOPREMUTO$<>""
  TASTOPREMUTO$=Lower$(TASTOPREMUTO$)
  If TASTOPREMUTO$="c" Then Proc CARICAUNFILE : Proc DABANCOAVARIABILI
  If TASTOPREMUTO$="d" Then Exit 
  If TASTOPREMUTO$="e" Then Exit 
  If TASTOPREMUTO$="g" Then Proc GIOCA
  If TASTOPREMUTO$="k" Then Exit 
  If TASTOPREMUTO$="l" Then Exit 
  If TASTOPREMUTO$="m" Then Proc M0DIFICA
  If TASTOPREMUTO$="o" Then Exit 
  If TASTOPREMUTO$="p" Then Exit 
  If TASTOPREMUTO$="r" Then Exit 
  If TASTOPREMUTO$="s"
   Proc DAVARIABILIABANCO[False]
   If SENZAMEMORIA=False
    Proc DAVARIABILIABANCO[True]
    If SENZAMEMORIA=False
     Proc SALVAUNFILE
    End If 
   End If 
  End If 
  If TASTOPREMUTO$="?" Then Proc _INTERFACCIA
  If TASTOPREMUTO$=Cup$ Then Add STANZA,-1,0 To NUMEROS(EDIFICIO)
  If TASTOPREMUTO$=Cdown$ Then Add STANZA,1,0 To NUMEROS(EDIFICIO)
 Until TASTOPREMUTO$=Chr$(27)
End Proc
Procedure MOSTRALUOGO
 Cls 
 If M0DIFICA=False
  Proc TIC[MESSAGGIO3$,0] : Print 
 End If 
 Print "Luogo";LUOGO;":"
 Print "Nome>";NOMEL$(LUOGO)
 Print "Regione di appartenenza>";NOMER$(REGIONEL(LUOGO))
 Print "Tipo di luogo>";TIPOL$(TIPOL(LUOGO))
 DREZIONE=DREZIONEL(0,LUOGO)
 Print "Direzione Nord     >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONEL(1,LUOGO)
 Print "Direzione NordEst  >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONEL(2,LUOGO)
 Print "Direzione Est      >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONEL(3,LUOGO)
 Print "Direzione SudEst   >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONEL(4,LUOGO)
 Print "Direzione Sud      >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONEL(5,LUOGO)
 Print "Direzione SudOvest >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONEL(6,LUOGO)
 Print "Direzione Ovest    >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONEL(7,LUOGO)
 Print "Direzione NordOvest>";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONEL(8,LUOGO)
 Print "Direzione Sopra    >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONEL(9,LUOGO)
 Print "Direzione Sotto    >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 SOLDINELLUOGO=SOLDIL(LUOGO)
 If SOLDINELLUOGO>0
  Print Str$(SOLDINELLUOGO)-" ";" ";
  If SOLDINELLUOGO=1
   Print "soldo"
  Else 
   Print "soldi"
  End If 
 End If 
End Proc
Procedure MOSTRAMESSAGGIO[MESSAGGIO4$,MESSAGGIO5$]
 Cls 
 Proc TIC[MESSAGGIO4$,0] : Print : POSIZIONE=1
 Repeat 
  SPAZIO=Instr(MESSAGGIO5$," ",POSIZIONE)
  If SPAZIO>0
   If X Curs+SPAZIO-POSIZIONE>79
    Print : X=0
    Proc FONDOSCHERMOGIOCO
   End If 
   Print Mid$(MESSAGGIO5$,POSIZIONE,SPAZIO-POSIZIONE+1);
   POSIZIONE=SPAZIO+1
  Else 
   Print Mid$(MESSAGGIO5$,POSIZIONE,Len(MESSAGGIO5$)-POSIZIONE+1)
  End If 
 Until SPAZIO=0
 If X Curs>0 or Y Curs>0
  Proc TIC["Premi un tasto...",ULTIMALINEA] : Wait Key 
 End If 
End Proc
Procedure MOSTRAOGGETTO
 Cls 
 If M0DIFICA=False
  Proc TIC[MESSAGGIO3$,0] : Print 
 End If 
 Print "Oggetto";OGGETTO;":"
 Print "Nome>";
 If Btst(1,TIPOO(OGGETTO))=True
  Print NOMESRO$(CATEGORIAO(OGGETTO))
 Else 
  Print NOMESCO$(CATEGORIAO(OGGETTO))
 End If 
 Print "Posizione>";
 If POSIZIONEO(OGGETTO)<0
  SOGGETTO= Not POSIZIONEO(OGGETTO)
  If Btst(0,TIPOO(OGGETTO))=True
   Print "posseduto dal personaggio";SOGGETTO;
   Print " nome>";NOMEP$(SOGGETTO)
  Else 
   Print "contenuto nell'oggetto";SOGGETTO;
   Print " nome>";
   If Btst(1,TIPOO(SOGGETTO))=True
    Print NOMESRO$(CATEGORIAO(SOGGETTO))
   Else 
    Print NOMESCO$(CATEGORIAO(SOGGETTO))
   End If 
  End If 
 Else 
  Print "luogo";POSIZIONEO(OGGETTO);" nome>";NOMEL$(POSIZIONEO(OGGETTO))
 End If 
 If Btst(1,TIPOO(OGGETTO))=True
  PESOOGGETTO=PESORESTOCO(CATEGORIAO(OGGETTO))
 Else 
  PESOOGGETTO=PESOCO(CATEGORIAO(OGGETTO))
 End If 
 Print "Peso>";Str$(PESOOGGETTO)-" ";" ";
 If PESOOGGETTO=1
  Print "grammo"
 Else 
  Print "grammi"
 End If 
 If Btst(3,TIPOO(OGGETTO))=True
  Print "Nascosto"
 End If 
 If Btst(1,TIPOO(OGGETTO))=True
  Print "Resto"
 End If 
 If Btst(2,TIPOO(OGGETTO))=True
  Print "Indossato dal personaggio";SOGGETTO;" nome>";NOMEP$(SOGGETTO)
 End If 
End Proc
Procedure MOSTRAOGGETTOPERINSERIMENTO[P]
 Repeat 
  Cls 
  Print "Nome del personaggio";P;">";NOMEP$(P)
  Print At(0,ULTIMALINEA-1);"Oggetto";CATEGORIA;">";NOMESCO$(CATEGORIA)
  Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" scegli l'oggetto Spazio conferma",ULTIMALINEA]
  Repeat 
   TASTOPREMUTO$=Inkey$
  Until TASTOPREMUTO$<>""
  If TASTOPREMUTO$=Cup$ Then Add CATEGORIA,-1,0 To NUMEROCO
  If TASTOPREMUTO$=Cdown$ Then Add CATEGORIA,1,0 To NUMEROCO
 Until TASTOPREMUTO$=" "
End Proc[CATEGORIA]
Procedure MOSTRAPERSONAGGIO
 Cls 
 If M0DIFICA=False
  Proc TIC[MESSAGGIO3$,0] : Print 
 End If 
 Print "Personaggio";PERSONAGGIO;
 If PERSONAGGIO=0
  Print " (personaggio del giocatore):"
 Else 
  Print ":"
 End If 
 Print "Nome>";NOMEP$(PERSONAGGIO)
 Print "Posizione>";
 If POSIZIONEP(PERSONAGGIO)<0
  SOGGETTO=-1-POSIZIONEP(PERSONAGGIO)
  If Btst(0,TIPOP(PERSONAGGIO))=True
   Print "trasportato dal personaggio";SOGGETTO;
   Print " nome>";NOMEP$(SOGGETTO)
  Else 
   Print "contenuto nell'oggetto";SOGGETTO;" nome>";
   If Btst(1,TIPOO(SOGGETTO))=True
    Print NOMESRO$(CATEGORIAO(SOGGETTO))
   Else 
    Print NOMESCO$(CATEGORIAO(SOGGETTO))
   End If 
  End If 
 Else 
  If TEMP0DIATTRAVERSAMENTOP(PERSONAGGIO)>0
   Print "In cammino dal luogo";POSIZIONEP(PERSONAGGIO);" nome>";NOMEL$(POSIZIONEP(PERSONAGGIO))
   Print " al luogo";LUOGODIDESTINAZIONEP(PERSONAGGIO);" nome>";NOMEL$(LUOGODIDESTINAZIONEP(PERSONAGGIO))
  Else 
   E=POSIZIONEP(PERSONAGGIO)/$10000
   If E>0
    Print "Edificio";E-1;" nome>";NOMEE$(E-1)
    S=POSIZIONEP(PERSONAGGIO) mod $10000
    Print "Stanza";S;" nome>";NOMES$(S,E-1)
   Else 
    Print "luogo";POSIZIONEP(PERSONAGGIO);" nome>";NOMEL$(POSIZIONEP(PERSONAGGIO))
   End If 
  End If 
 End If 
 Print "Costituzione>";Str$(C0STITUZIONEP(PERSONAGGIO))-" ";" ";
 If C0STITUZIONEP(PERSONAGGIO)=1 Then Print "punto" Else Print "punti"
 Print "Destrezza>";Str$(DESTREZZAP(PERSONAGGIO))-" ";" ";
 If DESTREZZAP(PERSONAGGIO)=1 Then Print "punto" Else Print "punti"
 Print "Forza>";Str$(F0RZAP(PERSONAGGIO))-" ";" ";
 If F0RZAP(PERSONAGGIO)=1 Then Print "punto" Else Print "punti"
 PESODELPERSONAGGIO=PESOP(PERSONAGGIO)+PESONETTOP(PERSONAGGIO)/1000
 Print "Peso>";Str$(PESODELPERSONAGGIO)-" ";" ";
 If PESODELPERSONAGGIO=1 Then Print "chilo" Else Print "chili"
 Print "Peso netto>";
 If PESONETTOP(PERSONAGGIO)>999
  PESOOEPDELP0=PESONETTOP(PERSONAGGIO)/1000
  Print Str$(PESOOEPDELP0)-" ";" ";
  If PESOOEPDELP0=1
   Print "chilo";
  Else 
   Print "chili";
  End If 
  PESOOEPDELP0=PESONETTOP(PERSONAGGIO) mod 1000
  If PESOOEPDELP0>0
   Print " e";PESOOEPDELP0;" ";
   If PESOOEPDELP0=1
    Print "grammo"
   Else 
    Print "grammi"
   End If 
  Else 
   Print 
  End If 
 Else 
  PESOOEPDELP0=PESONETTOP(PERSONAGGIO)
  Print Str$(PESOOEPDELP0)-" ";" ";
  If PESOOEPDELP0=1
   Print "grammo"
  Else 
   Print "grammi"
  End If 
 End If 
 Print "Resistenza>";Str$(RESISTENZAP(PERSONAGGIO))-" ";" ";
 If RESISTENZAP(PERSONAGGIO)=1 Then Print "punto" Else Print "punti"
 Print "Sesso>";
 If Btst(1,TIPOP(PERSONAGGIO))=True Then Print "Femminile" Else Print "Maschile"
 If PERSONAGGIO>0
  Print "Condizione>";
  If Btst(3,TIPOP(PERSONAGGIO))=True
   Print "Nemic";
  Else 
   Print "Amic";
  End If 
  If Btst(1,TIPOP(PERSONAGGIO))=True
   Print "a"
  Else 
   Print "o"
  End If 
 End If 
 Print "Soldi>";Str$(SOLDIP(PERSONAGGIO))-" ";" ";
 If SOLDIP(PERSONAGGIO)=1 Then Print "soldo" Else Print "soldi"
 If PERSONAGGIO>0
  Print "Inizio sonno>";
  _ORE=INIZIOSONNOP(PERSONAGGIO)/60 mod 24
  Print Using "#";_ORE/10; Using "#";_ORE mod 10;
  M1NUTI=INIZIOSONNOP(PERSONAGGIO) mod 60
  Print Using ":#";M1NUTI/10; Using "#";M1NUTI mod 10
  Print "Durata sonno>";Str$(SONNOP(PERSONAGGIO))-" ";" ";
  If SONNOP(PERSONAGGIO)=1
   Print "minuto"
  Else 
   Print "minuti"
  End If 
  For A=0 To 7
   AZIONE=AZIONEP(A,PERSONAGGIO)
   PARA=PARAAAZIONEP(A,PERSONAGGIO)
   PARB=PARABAZIONEP(A,PERSONAGGIO)
   PARC=PARACAZIONEP(A,PERSONAGGIO)
   Cline : Print : Cline : Cmove ,-1
   Print "azione";A+1;">";
   Proc MOSTRAAZIONEDEGLIALTRIP[AZIONE,PARA,PARB,PARC]
   Proc FONDOSCHERMOEDITOR
  Next A
 End If 
 If Btst(2,TIPOP(PERSONAGGIO))=True
  Print "Sta dormendo"
 End If 
End Proc
Procedure MOSTRAREGIONE
 Cls 
 If M0DIFICA=False
  Proc TIC[MESSAGGIO3$,0] : Print 
 End If 
 Print "Regione";REGIONE;":"
 Print "Nome>";NOMER$(REGIONE)
End Proc
Procedure MOSTRASTANZA
 Cls 
 If M0DIFICA=False
  Proc TIC[MESSAGGIO3$,0] : Print 
 End If 
 Print "Edificio";EDIFICIO;":"
 Print "Stanza";STANZA;":"
 Print "Nome>";NOMES$(STANZA,EDIFICIO)
 DREZIONE=DREZIONES(0,STANZA,EDIFICIO)
 Print "Direzione Nord     >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONES(1,STANZA,EDIFICIO)
 Print "Direzione NordEst  >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONES(2,STANZA,EDIFICIO)
 Print "Direzione Est      >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONES(3,STANZA,EDIFICIO)
 Print "Direzione SudEst   >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONES(4,STANZA,EDIFICIO)
 Print "Direzione Sud      >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONES(5,STANZA,EDIFICIO)
 Print "Direzione SudOvest >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONES(6,STANZA,EDIFICIO)
 Print "Direzione Ovest    >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONES(7,STANZA,EDIFICIO)
 Print "Direzione NordOvest>";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONES(8,STANZA,EDIFICIO)
 Print "Direzione Sopra    >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 DREZIONE=DREZIONES(9,STANZA,EDIFICIO)
 Print "Direzione Sotto    >";
 E=DREZIONE/$10000
 If E>0
  S=DREZIONE mod $10000
  Print "edificio";E;" stanza";S
 Else 
  DREZIONE=DREZIONE mod $10000
  If DREZIONE<$FFFF
   Print "luogo";DREZIONE;" nome>";NOMEL$(DREZIONE)
  Else 
   Print "nessun luogo"
  End If 
 End If 
 SOLDINELLASTANZA=SOLDIS(STANZA,EDIFICIO)
 If SOLDINELLASTANZA>0
  Print Str$(SOLDINELLASTANZA)-" ";" ";
  If SOLDINELLASTANZA=1
   Print "soldo"
  Else 
   Print "soldi"
  End If 
 End If 
End Proc
Procedure MUOVITI
 If F0RZAP(0)+PESOP(0)/10>=PESONETTOP(0)/1000
  EDIFICIODOVESITROVAILPERSONAGGIO0=POSIZIONEP(0)/$10000
  If TEMP0DIATTRAVERSAMENTOP(0)=0 or EDIFICIODOVESITROVAILPERSONAGGIO0>0
   Locate 0,ULTIMALINEA : Input "Dove vuoi andare ?>";DREZIONE$; : Curs Off 
   DREZIONE$=Lower$(DREZIONE$)
   If DREZIONE$<>""
    For A=0 To 9
     If DREZIONE$=Lower$(DREZIONEL$(A)) or DREZIONE$=Lower$(DREZIONE$(A))
      If EDIFICIODOVESITROVAILPERSONAGGIO0>0
       S=POSIZIONEP(0) mod $10000
       If DREZIONES(A,S,EDIFICIODOVESITROVAILPERSONAGGIO0) mod $10000<$FFFF
        E=DREZIONES(A,S,EDIFICIODOVESITROVAILPERSONAGGIO0)/$10000
        Exit 
       Else 
        DREZIONE$=Lower$(DREZIONE$(A))
       End If 
      Else 
       If DREZIONEL(A,POSIZIONEP(0)) mod $10000<$FFFF
        E=DREZIONEL(A,POSIZIONEP(0))/$10000
        Exit 
       Else 
        DREZIONE$=Lower$(DREZIONE$(A))
       End If 
      End If 
     End If 
    Next A
    If A<10
     If E>0
      If EDIFICIODOVESITROVAILPERSONAGGIO0>0
       POSIZIONEP(0)=DREZIONES(A,S,EDIFICIODOVESITROVAILPERSONAGGIO0)
      Else 
       POSIZIONEP(0)=DREZIONEL(A,POSIZIONEP(0))
      End If 
     Else 
      If EDIFICIODOVESITROVAILPERSONAGGIO0>0
       POSIZIONEP(0)=DREZIONES(A,S,EDIFICIODOVESITROVAILPERSONAGGIO0)
      Else 
       LUOGODIDESTINAZIONEP(0)=DREZIONEL(A,POSIZIONEP(0))
       CAMMINOP(0)=PARATIPOL(TIPOL(POSIZIONEP(0)))+PARATIPOL(TIPOL(LUOGODIDESTINAZIONEP(0)))
       If CAMMINOP(0)=0
        POSIZIONEP(0)=LUOGODIDESTINAZIONEP(0)
        DREZIONEPRESAP(0)=-1
        DREZIONEOPPOSTAAQUELLAPRESAP(0)=-1
       Else 
        TEMP0DIATTRAVERSAMENTOP(0)=CAMMINOP(0)
        DREZIONEPRESAP(0)=A
        If DREZIONEPRESAP(0)=9
         DREZIONEOPPOSTAAQUELLAPRESAP(0)=8
        Else If DREZIONEPRESAP(0)=8
         DREZIONEOPPOSTAAQUELLAPRESAP(0)=9
        Else If DREZIONEPRESAP(0)<8 and DREZIONEPRESAP(0)>3
         DREZIONEOPPOSTAAQUELLAPRESAP(0)=DREZIONEPRESAP(0)-4
        Else 
         DREZIONEOPPOSTAAQUELLAPRESAP(0)=DREZIONEPRESAP(0)+4
        End If 
       End If 
      End If 
     End If 
     COMPIUTAAZIONE=1
     Print At(0,ULTIMALINEA);"Hai deciso di andare ";
     If A>7
      Print Lower$(DREZIONE$(A));
     Else 
      Print "a ";Lower$(DREZIONE$(A));
     End If 
    Else 
     A=False
     For B=0 To 9
      If DREZIONE$=Lower$(DREZIONEL$(B)) or DREZIONE$=Lower$(DREZIONE$(B))
       A=True
      End If 
     Next B
     If A=True
      Print At(0,ULTIMALINEA);"Non puoi andare ";
      If DREZIONE$="sopra" or DREZIONE$="sotto"
       Print DREZIONE$;
      Else 
       Print "a ";DREZIONE$;
      End If 
      Print " ";
      If _MUSICA=False
       Bell 1
      End If 
     Else 
      Print At(0,ULTIMALINEA);"Non so cosa sia ";DREZIONE$;"   ";
      If _MUSICA=False
       Bell 1
      End If 
     End If 
    End If 
    Proc _ASPETTA
   End If 
  Else 
   Print At(0,ULTIMALINEA);"Vuoi andare avanti (a) o tornare indietro (i) ?";
   SCELTA$=Input$(1) : SCELTA$=Lower$(SCELTA$)
   If SCELTA$="a"
    Dec TEMP0DIATTRAVERSAMENTOP(0)
    If TEMP0DIATTRAVERSAMENTOP(0)=0
     POSIZIONEP(0)=LUOGODIDESTINAZIONEP(0)
     DREZIONEPRESAP(0)=-1
     Locate 0,ULTIMALINEA : Cline : Print "Sei arrivato a ";NOMEL$(POSIZIONEP(0));
    Else 
     Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di andare avanti";
    End If 
    COMPIUTAAZIONE=1 : Proc _ASPETTA
   Else If SCELTA$="i"
    Inc TEMP0DIATTRAVERSAMENTOP(0)
    If TEMP0DIATTRAVERSAMENTOP(0)=PARATIPOL(TIPOL(POSIZIONEP(0)))+PARATIPOL(TIPOL(LUOGODIDESTINAZIONEP(0)))+1
     Locate 0,ULTIMALINEA : Cline : Print "Sei tornato a ";NOMEL$(POSIZIONEP(0));
     TEMP0DIATTRAVERSAMENTOP(0)=0
    Else 
     Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di tornare indietro";
    End If 
    COMPIUTAAZIONE=1 : Proc _ASPETTA
   End If 
  End If 
 Else 
  Print At(0,ULTIMALINEA);"Sei troppo pesante, non puoi muoverti";
  If _MUSICA=False
   Bell 1
  End If 
  Proc _ASPETTA
 End If 
End Proc
Procedure MUOVITIP[AZIONE,P]
 If PERSONAGGIOVISIBILEP(P)=True Then PERSONAGGIOVISIBILE=True
 If Btst(2,TIPOP(0))=False Then PERSONAGGIO0SVEGLIO=True
 If F0RZAP(P)+PESOP(P)/10>=PESONETTOP(P)/1000
  EDIFICIODOVESITROVAILPERSONAGGIOP=POSIZIONEP(P)/$10000
  If TEMP0DIATTRAVERSAMENTOP(P)=0 or EDIFICIODOVESITROVAILPERSONAGGIOP>0
   Do 
    DREZIONE=Rnd(9)
    If EDIFICIODOVESITROVAILPERSONAGGIOP>0
     S=POSIZIONEP(P) mod $10000
     E=DREZIONES(DREZIONE,S,EDIFICIODOVESITROVAILPERSONAGGIOP)/$10000
     Exit If DREZIONES(DREZIONE,S,EDIFICIODOVESITROVAILPERSONAGGIOP) mod $10000<$FFFF
    Else 
     E=DREZIONEL(DREZIONE,POSIZIONEP(P))/$10000
     Exit If DREZIONEL(DREZIONE,POSIZIONEP(P)) mod $10000<$FFFF
    End If 
   Loop 
   If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
    Print NOMEP$(P);" sta andando ";
    If DREZIONE>7
     Print Lower$(DREZIONE$(DREZIONE))
    Else 
     Print "a ";Lower$(DREZIONE$(DREZIONE))
    End If 
    Proc FONDOSCHERMOGIOCO
   End If 
   If E>0
    If EDIFICIODOVESITROVAILPERSONAGGIOP>0
     POSIZIONEP(P)=DREZIONES(DREZIONE,S,EDIFICIODOVESITROVAILPERSONAGGIOP)
    Else 
     POSIZIONEP(P)=DREZIONEL(DREZIONE,POSIZIONEP(P))
    End If 
    Proc PERSONAGGIOVISIBILE[P]
    If PERSONAGGIOVISIBILE=False and PERSONAGGIOVISIBILEP(P)=True and PERSONAGGIO0SVEGLIO=True
     Print NOMEP$(P);" è arrivato"
    End If 
   Else 
    If EDIFICIODOVESITROVAILPERSONAGGIOP>0
     POSIZIONEP(P)=DREZIONES(DREZIONE,S,EDIFICIODOVESITROVAILPERSONAGGIOP)
    Else 
     LUOGODIDESTINAZIONEP(P)=DREZIONEL(DREZIONE,POSIZIONEP(P))
     CAMMINOP(P)=PARATIPOL(TIPOL(POSIZIONEP(P)))+PARATIPOL(TIPOL(LUOGODIDESTINAZIONEP(P)))
     If CAMMINOP(P)=0
      POSIZIONEP(P)=LUOGODIDESTINAZIONEP(P)
      DREZIONEPRESAP(P)=-1
      DREZIONEOPPOSTAAQUELLAPRESAP(P)=-1
     Else 
      TEMP0DIATTRAVERSAMENTOP(P)=CAMMINOP(P)
      DREZIONEPRESAP(P)=DREZIONE
      If DREZIONEPRESAP(P)=9
       DREZIONEOPPOSTAAQUELLAPRESAP(P)=8
      Else If DREZIONEPRESAP(P)=8
       DREZIONEOPPOSTAAQUELLAPRESAP(P)=9
      Else If DREZIONEPRESAP(P)<8 and DREZIONEPRESAP(P)>3
       DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(P)-4
      Else 
       DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(P)+4
      End If 
     End If 
    End If 
    Proc PERSONAGGIOVISIBILE[P]
    If PERSONAGGIOVISIBILE=False and PERSONAGGIOVISIBILEP(P)=True and PERSONAGGIO0SVEGLIO=True
     Print NOMEP$(P);" è arrivato"
    End If 
   End If 
  Else 
   'Fare DREZIONE=Rnd(1) per far muovere avanti o indietro i personaggi 
   DREZIONE=1
   If DREZIONE=1
    Dec TEMP0DIATTRAVERSAMENTOP(P)
    If TEMP0DIATTRAVERSAMENTOP(P)=0
     POSIZIONEP(P)=LUOGODIDESTINAZIONEP(P)
     DREZIONEPRESAP(P)=-1
     If PERSONAGGIO0SVEGLIO=True
      If PERSONAGGIOVISIBILE=True
       Print NOMEP$(P);" sta andando avanti"
       Proc FONDOSCHERMOGIOCO
      Else 
       Proc PERSONAGGIOVISIBILE[P]
       If PERSONAGGIOVISIBILEP(P)=True
        Print NOMEP$(P);" è arrivato"
       End If 
       Proc FONDOSCHERMOGIOCO
      End If 
     End If 
    Else 
     If PERSONAGGIO0SVEGLIO=True
      If PERSONAGGIOVISIBILE=True
       Print NOMEP$(P);" sta andando avanti"
       Proc FONDOSCHERMOGIOCO
      Else 
       Proc PERSONAGGIOVISIBILE[P]
       If PERSONAGGIOVISIBILEP(P)=True
        Print NOMEP$(P);" è arrivato"
       End If 
       Proc FONDOSCHERMOGIOCO
      End If 
     End If 
    End If 
   Else 
    Inc TEMP0DIATTRAVERSAMENTOP(P)
    If TEMP0DIATTRAVERSAMENTOP(P)=CAMMINOP(P)+1
     TEMP0DIATTRAVERSAMENTOP(0)=0
     DREZIONEPRESAP(P)=-1
     If PERSONAGGIO0SVEGLIO=True
      If PERSONAGGIOVISIBILE=True
       Print NOMEP$(P);" sta tornando indietro"
       Proc FONDOSCHERMOGIOCO
      Else 
       Proc PERSONAGGIOVISIBILE[P]
       If PERSONAGGIOVISIBILEP(P)=True
        Print NOMEP$(P);" è arrivato"
       End If 
       Proc FONDOSCHERMOGIOCO
      End If 
     End If 
    Else 
     If PERSONAGGIO0SVEGLIO=True
      If PERSONAGGIOVISIBILE=True
       Print NOMEP$(P);" sta tornando indietro"
       Proc FONDOSCHERMOGIOCO
      Else 
       Proc PERSONAGGIOVISIBILE[P]
       If PERSONAGGIOVISIBILEP(P)=True
        Print NOMEP$(P);" è arrivato"
       End If 
       Proc FONDOSCHERMOGIOCO
      End If 
     End If 
    End If 
   End If 
  End If 
 Else 
  If PERSONAGGIOVISIBILE=True
   Print NOMEP$(P);" è troppo pesante, non può muoversi"
   Proc FONDOSCHERMOGIOCO
  End If 
 End If 
End Proc
Procedure NEMICI[P]
 DIFESA=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
   If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
    DIFESA=CATEGORIAO(A) : VLOREDIFESA=PARATIPOCO(DIFESA)
    Exit 
   End If 
  End If 
 Next A
 OGGETTOOFFENSIVO=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and Btst(6,TIPOCO(CATEGORIAO(A)))=True
   VLORE1OFFENSIVITA=PARATIPOCO(CATEGORIAO(A))
   If VLORE1OFFENSIVITA>VLORE0OFFENSIVITA
    OGGETTOOFFENSIVO=CATEGORIAO(A) : VLORE0OFFENSIVITA=VLORE1OFFENSIVITA
   End If 
  End If 
 Next A
 NEMICI=Min(10,Rnd(TEMP0TRASCORSO/1440)+1)
 NOMENEMICI=Rnd(27)
 If P=0 Then Cls 
 Gosub NEMICI
 Gosub SCELTASUINEMICI
 Inc DESTREZZAP(P)
 Pop Proc
 COMBATTIMENTOCONINEMICI:
 NUMEROCOMBATTIMENTO=1
 Repeat 
  If P=0
   Cls 
   Proc TIC["********** Combattimento numero"+Str$(NUMEROCOMBATTIMENTO)+" **********",0]
   Print 
  End If 
  Gosub TURNODEINEMICI
  If OGGETTOOFFENSIVO>-1
   OFFENSIVITA=PARATIPOCO(OGGETTOOFFENSIVO)*5
  End If 
  Add OFFENSIVITA,DESTREZZAP(P)
  Add OFFENSIVITA,F0RZAP(P)
  OFFENSIVITA=OFFENSIVITA/100
  Proc LIMITI[OFFENSIVITA,1,NEMICI] : OFFENSIVITA=Param
  If P=0
   Print "Hai ucciso";OFFENSIVITA;" ";
   If OFFENSIVITA=1
    Print NOMESN$(NOMENEMICI);
   Else 
    Print NOMEPN$(NOMENEMICI);
   End If 
   Print " ";
   If OGGETTOOFFENSIVO>-1
    Print "usando 1 ";NOMESCO$(OGGETTOOFFENSIVO);
   Else 
    Print "a mani nude";
   End If 
   Print "."
   Gosub MOSTRALARESISTENZADELPERSONAGGIOP
   Add NEMICI,-OFFENSIVITA
   If NEMICI=0
    Proc TIC["Premi un tasto",ULTIMALINEA] : Wait Key 
   Else 
    Gosub SCELTADOPOILCOMBATTIMENTO
    Inc NUMEROCOMBATTIMENTO
   End If 
  Else 
   If PERSONAGGIOVISIBILEP(P)=True
    Print NOMEP$(P);" ha ucciso";OFFENSIVITA;" ";
    If OFFENSIVITA=1
     Print NOMESN$(NOMENEMICI);
    Else 
     Print NOMEPN$(NOMENEMICI);
    End If 
    Print " ";
    If OGGETTOOFFENSIVO>-1
     Print "usando 1 ";NOMESCO$(OGGETTOOFFENSIVO);
    Else 
     Print "a mani nude";
    End If 
    Print "."
    Proc FONDOSCHERMOGIOCO
   End If 
   Gosub MOSTRALARESISTENZADELPERSONAGGIOP
   Add NEMICI,-OFFENSIVITA
   If NEMICI>0
    Gosub SCELTADOPOILCOMBATTIMENTO
    Inc NUMEROCOMBATTIMENTO
   End If 
  End If 
 Until NEMICI=0
 Return 
 NEMICI:
 If P=0
  If INEMICITISVEGLIANO=True
   If NEMICI=1
    Print "C'è";NEMICI;" ";NOMESN$(NOMENEMICI);" che ti ha";
   Else 
    Print "Ci sono";NEMICI;" ";NOMEPN$(NOMENEMICI);" che ti hanno";
   End If 
   Print " svegliato."
  Else 
   If NEMICI=1
    Print "C'è";NEMICI;" ";NOMESN$(NOMENEMICI);" che ti ostacola";
   Else 
    Print "Ci sono";NEMICI;" ";NOMEPN$(NOMENEMICI);" che ti ostacolano";
   End If 
   Print " il cammino."
  End If 
 Else 
  If PERSONAGGIOVISIBILEP(P)=True
   If INEMICISVEGLIANOPERSONAGGIOP=True
    If NEMICI=1
     Print "C'è";NEMICI;" ";NOMESN$(NOMENEMICI);" che ha svegliato ";NOMEP$(P)
    Else 
     Print "Ci sono";NEMICI;" ";NOMEPN$(NOMENEMICI);" che hanno svegliato ";NOMEP$(P)
    End If 
   Else 
    If NEMICI=1
     Print "C'è";NEMICI;" ";NOMESN$(NOMENEMICI);" che ostacola il cammino a ";NOMEP$(P)
    Else 
     Print "Ci sono";NEMICI;" ";NOMEPN$(NOMENEMICI);" ostacolano il cammino a ";NOMEP$(P)
    End If 
   End If 
   Proc FONDOSCHERMOGIOCO
  End If 
 End If 
 Return 
 MOSTRALARESISTENZADELPERSONAGGIOP:
 If P=0
  RESISTENZAP(0)=Max(RESISTENZAP(0),0)
  Print "La tua resistenza è a";RESISTENZAP(0);" punt";
  If RESISTENZAP(0)=1
   Print "o"
  Else 
   Print "i"
  End If 
 Else 
  If PERSONAGGIOVISIBILEP(P)=True
   Print "La resistenza di ";NOMEP$(P);" è a";RESISTENZAP(0);" punt";
   If RESISTENZAP(0)=1
    Print "o"
   Else 
    Print "i"
   End If 
   Proc FONDOSCHERMOGIOCO
  End If 
 End If 
 Return 
 SCELTASUINEMICI:
 If RESISTENZAP(P)=0 Then Pop 
 If P=0
  Repeat 
   Proc TIC["Vuoi combattere (c) o vuoi fuggire (f) ?",ULTIMALINEA]
   SCELTA$=Input$(1)
  Until SCELTA$="c" or SCELTA$="f"
  If SCELTA$="c"
   Gosub COMBATTIMENTOCONINEMICI
  Else 
   Gosub TENTALAFUGADAINEMICI
  End If 
  If COMBATTIMENTOCONINEMICI=True
   Gosub COMBATTIMENTOCONINEMICI
  End If 
 Else 
  SCELTA=Rnd(1)
  If SCELTA=1
   Gosub COMBATTIMENTOCONINEMICI
  Else 
   Gosub TENTALAFUGADAINEMICI
  End If 
 End If 
 Return 
 SCELTADOPOILCOMBATTIMENTO:
 If RESISTENZAP(P)=0 Then Pop 
 If P=0
  Repeat 
   Proc TIC["Vuoi combattere (c) o vuoi fuggire (f) ?",ULTIMALINEA]
   SCELTA$=Input$(1)
  Until SCELTA$="c" or SCELTA$="f"
  If SCELTA$="f"
   Gosub TENTALAFUGADAINEMICI
  End If 
 Else 
  SCELTA=Rnd(1)
  If SCELTA=1
   Gosub TENTALAFUGADAINEMICI
  End If 
 End If 
 Return 
 TENTALAFUGADAINEMICI:
 DESTREZZA=Rnd(99)+1
 If P=0
  If DESTREZZA<=DESTREZZAP(0)
   Cls 
   Print "La tua destrezza non è stata sufficiente per evitare lo scontro!"
   Gosub TURNODEINEMICI
   Gosub MOSTRALARESISTENZADELPERSONAGGIOP
   Proc TIC["Premi un tasto",ULTIMALINEA] : Wait Key 
   COMBATTIMENTOCONINEMICI=True
  Else 
   Cls 
   Print "Grazie alla tua destrezza hai evitato lo scontro."
   Proc TIC["Premi un tasto",ULTIMALINEA] : Wait Key 
   Pop Proc
  End If 
 Else 
  If PERSONAGGIOVISIBILEP(P)=True
   If DESTREZZA<=DESTREZZAP(P)
    Print "La destrezza di ";NOMEP$(P);" non è stata sufficiente per evitare lo scontro!"
    Gosub TURNODEINEMICI
    Gosub MOSTRALARESISTENZADELPERSONAGGIOP
    COMBATTIMENTOCONINEMICI=True
   Else 
    Print "Grazie alla sua destrezza ";NOMEP$(P);" ha evitato lo scontro."
    Pop Proc
   End If 
   Proc FONDOSCHERMOGIOCO
  End If 
 End If 
 Return 
 TURNODEINEMICI:
 If P=0
  For A=1 To NEMICI
   NEMICO$=NOMESN$(NOMENEMICI)
   Left$(NEMICO$,1)=Upper$(Left$(NEMICO$,1))
   Print NEMICO$;A;
   DESTREZZA=Rnd(99)+1
   If DESTREZZA<=DESTREZZAP(0)
    Print " ha cercato di colpirti, ma tu hai";
    M0DODESTREZZA=Rnd(1)
    If M0DODESTREZZA=1
     Print " schivato";
    Else 
     Print " parato";
    End If 
    Print " il colpo."
   Else 
    If DIFESA>-1
     DIFESAVALIDA=Rnd(1)
     If DIFESAVALIDA=1
      Print " ti ha colpito, ma 1 ";NOMESCO$(DIFESA);" ti ha difes";
      If Btst(1,TIPOP(0))=True
       Print "a";
      Else 
       Print "o";
      End If 
      Print "."
     Else 
      Print " ti ha colpito e ti ha fatto una ferita!"
      FERITA=-(Rnd(2)+1)
      Add RESISTENZAP(0),FERITA
     End If 
    Else 
     Print " ti ha colpito e ti ha fatto una ferita!"
     FERITA=-(Rnd(2)+1)
     Add RESISTENZAP(0),FERITA
    End If 
   End If 
  Next A
 Else 
  For A=1 To NEMICI
   NEMICO$=NOMESN$(NOMENEMICI)
   Left$(NEMICO$,1)=Upper$(Left$(NEMICO$,1))
   If PERSONAGGIOVISIBILEP(P)=True
    Print NEMICO$;A;
   End If 
   DESTREZZA=Rnd(99)+1
   If DESTREZZA<=DESTREZZAP(P)
    If PERSONAGGIOVISIBILEP(P)=True
     Print " ha cercato di colpire ";NOMEP$(P);", ma ";
     If Btst(1,TIPOP(0))=True
      Print "lei";
     Else 
      Print "lui";
     End If 
     Print " ha ";
     M0DODESTREZZA=Rnd(1)
     If M0DODESTREZZA=1
      Print "schivato";
     Else 
      Print "parato";
     End If 
     Print " il colpo."
    End If 
   Else 
    If DIFESA>-1
     DIFESAVALIDA=Rnd(1)
     If DIFESAVALIDA=1
      If PERSONAGGIOVISIBILEP(P)=True
       Print " ha colpito ";NOMEP$(P);", ma 1 ";NOMESCO$(DIFESA);" l'ha difes";
       If Btst(1,TIPOP(0))=True
        Print "a";
       Else 
        Print "o";
       End If 
       Print "."
      End If 
     Else 
      If PERSONAGGIOVISIBILEP(P)=True
       Print " ha colpito ";NOMEP$(P);" e ";
       If Btst(1,TIPOP(0))=True
        Print "le";
       Else 
        Print "gli";
       End If 
       Print " ha fatto una ferita!"
      End If 
      FERITA=-(Rnd(2)+1)
      Add RESISTENZAP(0),FERITA
     End If 
    Else 
     If PERSONAGGIOVISIBILEP(P)=True
      Print " ha colpito ";NOMEP$(P);" e ";
      If Btst(1,TIPOP(0))=True
       Print "le";
      Else 
       Print "gli";
      End If 
      Print " ha fatto una ferita!"
     End If 
     FERITA=-(Rnd(2)+1)
     Add RESISTENZAP(0),FERITA
    End If 
   End If 
   Proc FONDOSCHERMOGIOCO
  Next A
 End If 
 Return 
End Proc
Procedure OGGETTI[M0DO]
 For A=0 To NUMEROCO
  OGGETTINELLUOGO(A)=0
  RESTINELLUOGO(A)=0
 Next A
 For A=0 To NUMEROO
  If POSIZIONEO(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(0)=0 and Btst(3,TIPOO(A))=False
   If Btst(1,TIPOO(A))=True
    Inc RESTINELLUOGO(CATEGORIAO(A))
   Else 
    Inc OGGETTINELLUOGO(CATEGORIAO(A))
   End If 
  End If 
 Next A
 If M0DO=True
  For A=0 To NUMEROCO
   If OGGETTINELLUOGO(A)>0
    OGGETTIVISIBILI=True
   End If 
   If RESTINELLUOGO(A)>0
    OGGETTIVISIBILI=True
   End If 
  Next A
  SOLDINELLUOGO=SOLDIL(POSIZIONEP(0))
  If SOLDINELLUOGO>0
   OGGETTIVISIBILI=True
  End If 
  If OGGETTIVISIBILI=True
   Print "Oggetti visibili>"
   Proc FONDOSCHERMOGIOCO
   For A=0 To NUMEROCO
    If OGGETTINELLUOGO(A)>0
     Print Str$(OGGETTINELLUOGO(A))-" ";" ";
     If OGGETTINELLUOGO(A)=1
      Print NOMESCO$(A)
     Else 
      Print NOMEPCO$(A)
     End If 
     Proc FONDOSCHERMOGIOCO
    End If 
    If RESTINELLUOGO(A)>0
     Print Str$(RESTINELLUOGO(A))-" ";" ";
     If RESTINELLUOGO(A)=1
      Print NOMESRO$(A)
     Else 
      Print NOMEPRO$(A)
     End If 
     Proc FONDOSCHERMOGIOCO
    End If 
   Next A
   If SOLDINELLUOGO>0
    Print Str$(SOLDINELLUOGO)-" ";" ";
    If SOLDINELLUOGO=1
     Print "soldo"
    Else 
     Print "soldi"
    End If 
    Proc FONDOSCHERMOGIOCO
   End If 
  Else 
   Print "Nessun oggetto visibile"
  End If 
 End If 
End Proc
Procedure OGGETTOOPERSONAGGIOSUCUIUSARE[O]
 For A=0 To NUMEROCO
  If OGGETTINELLUOGO(A)>0
   Inc CATEGORIEOGGETTI
  End If 
  If RESTINELLUOGO(A)>0
   Inc CATEGORIEOGGETTI
  End If 
 Next A
 For A=0 To NUMEROP
  If POSIZIONEP(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(P)=DREZIONEPRESAP(0)
   Inc PERSONAGGI
  End If 
 Next A
 If CATEGORIEOGGETTI>0 and PERSONAGGI>0
  Print At(0,ULTIMALINEA);"Vuoi usare su un oggetto o su un personaggio (o/p) ?>";
  OGGETTOOPERSONAGGIO$=Input$(1)
  OGGETTOOPERSONAGGIO$=Lower$(OGGETTOOPERSONAGGIO$)
  If OGGETTOOPERSONAGGIO$="o"
   Proc USASUUNOGGETTO[O]
  Else If OGGETTOOPERSONAGGIO$="p"
   Proc USASUUNPERSONAGGIO[O]
  End If 
 Else If CATEGORIEOGGETTI>0 and PERSONAGGI=0
  Proc USASUUNOGGETTO[O]
 Else If CATEGORIEOGGETTI=0 and PERSONAGGI>0
  Proc USASUUNPERSONAGGIO[O]
 Else 
  Print At(0,ULTIMALINEA);"Non ci sono oggetti o personaggi su cui usare 1 ";
  If Btst(1,TIPOO(O))=True
   Print NOMESRO$(CATEGORIAO(O));
  Else 
   Print NOMESCO$(CATEGORIAO(O));
  End If 
  If _MUSICA=False
   Bell 1
  End If 
  Proc _ASPETTA
 End If 
End Proc
Procedure _ORDINALUOGHI[NUMEROLUOGHIMAPPA,LARGHEZZAMAPPALUOGHI,LUOGODIPARTENZA,LIMITI]
 Dim D(7)
 D(0)=LARGHEZZAMAPPALUOGHI
 D(1)=LARGHEZZAMAPPALUOGHI+1
 D(2)=1
 D(3)=-LARGHEZZAMAPPALUOGHI+1
 D(4)=-LARGHEZZAMAPPALUOGHI
 D(5)=-LARGHEZZAMAPPALUOGHI-1
 D(6)=-1
 D(7)=LARGHEZZAMAPPALUOGHI-1
 For A=LUOGODIPARTENZA To LUOGODIPARTENZA+NUMEROLUOGHIMAPPA
  E=DREZIONEL(0,A)/$10000
  DREZIONEL(0,A)=D(0)+A+E*$10000
  E=DREZIONEL(1,A)/$10000
  DREZIONEL(1,A)=D(1)+A+E*$10000
  E=DREZIONEL(2,A)/$10000
  DREZIONEL(2,A)=D(2)+A+E*$10000
  E=DREZIONEL(3,A)/$10000
  DREZIONEL(3,A)=D(3)+A+E*$10000
  E=DREZIONEL(4,A)/$10000
  DREZIONEL(4,A)=D(4)+A+E*$10000
  E=DREZIONEL(5,A)/$10000
  DREZIONEL(5,A)=D(5)+A+E*$10000
  E=DREZIONEL(6,A)/$10000
  DREZIONEL(6,A)=D(6)+A+E*$10000
  E=DREZIONEL(7,A)/$10000
  DREZIONEL(7,A)=D(7)+A+E*$10000
  E=DREZIONEL(8,A)/$10000
  DREZIONEL(8,A)=$FFFF+E*$10000
  E=DREZIONEL(9,A)/$10000
  DREZIONEL(9,A)=$FFFF+E*$10000
 Next A
 If LIMITI=True
  For A=LUOGODIPARTENZA To LUOGODIPARTENZA+NUMEROLUOGHIMAPPA
   If A=LUOGODIPARTENZA
    E=DREZIONEL(0,A)/$10000
    DREZIONEL(0,A)=D(0)+LUOGODIPARTENZA+E*$10000
    E=DREZIONEL(1,A)/$10000
    DREZIONEL(1,0)=D(1)+LUOGODIPARTENZA+E*$10000
    E=DREZIONEL(2,A)/$10000
    DREZIONEL(2,0)=D(2)+LUOGODIPARTENZA+E*$10000
    E=DREZIONEL(3,A)/$10000
    DREZIONEL(3,A)=$FFFF+E*$10000
    E=DREZIONEL(4,A)/$10000
    DREZIONEL(4,A)=$FFFF+E*$10000
    E=DREZIONEL(5,A)/$10000
    DREZIONEL(5,A)=$FFFF+E*$10000
    E=DREZIONEL(6,A)/$10000
    DREZIONEL(6,A)=$FFFF+E*$10000
    E=DREZIONEL(7,A)/$10000
    DREZIONEL(7,A)=$FFFF+E*$10000
   End If 
   If A>LUOGODIPARTENZA and A<LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI
    If A=LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI-1
     E=DREZIONEL(0,A)/$10000
     DREZIONEL(0,A)=D(0)+A+E*$10000
     E=DREZIONEL(1,A)/$10000
     DREZIONEL(1,A)=$FFFF+E*$10000
     E=DREZIONEL(2,A)/$10000
     DREZIONEL(2,A)=$FFFF+E*$10000
     E=DREZIONEL(3,A)/$10000
     DREZIONEL(3,A)=$FFFF+E*$10000
     E=DREZIONEL(4,A)/$10000
     DREZIONEL(4,A)=$FFFF+E*$10000
     E=DREZIONEL(5,A)/$10000
     DREZIONEL(5,A)=$FFFF+E*$10000
     E=DREZIONEL(6,A)/$10000
     DREZIONEL(6,A)=D(6)+A+E*$10000
     E=DREZIONEL(7,A)/$10000
     DREZIONEL(7,A)=D(7)+A+E*$10000
    Else 
     E=DREZIONEL(0,A)/$10000
     DREZIONEL(0,A)=D(0)+A+E*$10000
     E=DREZIONEL(1,A)/$10000
     DREZIONEL(1,A)=D(1)+A+E*$10000
     E=DREZIONEL(2,A)/$10000
     DREZIONEL(2,A)=D(2)+A+E*$10000
     E=DREZIONEL(3,A)/$10000
     DREZIONEL(3,A)=$FFFF+E*$10000
     E=DREZIONEL(4,A)/$10000
     DREZIONEL(4,A)=$FFFF+E*$10000
     E=DREZIONEL(5,A)/$10000
     DREZIONEL(5,A)=$FFFF+E*$10000
     E=DREZIONEL(6,A)/$10000
     DREZIONEL(6,A)=D(6)+A+E*$10000
     E=DREZIONEL(7,A)/$10000
     DREZIONEL(7,A)=D(7)+A+E*$10000
    End If 
   End If 
   For B=LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI To LUOGODIPARTENZA+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI Step LARGHEZZAMAPPALUOGHI
    If A=B
     E=DREZIONEL(0,A)/$10000
     DREZIONEL(0,A)=D(0)+A+E*$10000
     E=DREZIONEL(1,A)/$10000
     DREZIONEL(1,A)=D(1)+A+E*$10000
     E=DREZIONEL(2,A)/$10000
     DREZIONEL(2,A)=D(2)+A+E*$10000
     E=DREZIONEL(3,A)/$10000
     DREZIONEL(3,A)=D(3)+A+E*$10000
     E=DREZIONEL(4,A)/$10000
     DREZIONEL(4,A)=D(4)+A+E*$10000
     E=DREZIONEL(5,A)/$10000
     DREZIONEL(5,A)=$FFFF+E*$10000
     E=DREZIONEL(6,A)/$10000
     DREZIONEL(6,A)=$FFFF+E*$10000
     E=DREZIONEL(7,A)/$10000
     DREZIONEL(7,A)=$FFFF+E*$10000
    End If 
    If A=B+LARGHEZZAMAPPALUOGHI-1
     E=DREZIONEL(0,A)/$10000
     DREZIONEL(0,A)=D(0)+A+E*$10000
     E=DREZIONEL(1,A)/$10000
     DREZIONEL(1,A)=$FFFF+E*$10000
     E=DREZIONEL(2,A)/$10000
     DREZIONEL(2,A)=$FFFF+E*$10000
     E=DREZIONEL(3,A)/$10000
     DREZIONEL(3,A)=$FFFF+E*$10000
     E=DREZIONEL(4,A)/$10000
     DREZIONEL(4,A)=D(4)+A+E*$10000
     E=DREZIONEL(5,A)/$10000
     DREZIONEL(5,A)=D(5)+A+E*$10000
     E=DREZIONEL(6,A)/$10000
     DREZIONEL(6,A)=D(6)+A+E*$10000
     E=DREZIONEL(7,A)/$10000
     DREZIONEL(7,A)=D(7)+A+E*$10000
    End If 
   Next B
   If A=LUOGODIPARTENZA+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI+1
    E=DREZIONEL(0,A)/$10000
    DREZIONEL(0,A)=$FFFF+E*$10000
    E=DREZIONEL(1,A)/$10000
    DREZIONEL(1,A)=$FFFF+E*$10000
    E=DREZIONEL(2,A)/$10000
    DREZIONEL(2,A)=D(2)+A+E*$10000
    E=DREZIONEL(3,A)/$10000
    DREZIONEL(3,A)=D(3)+A+E*$10000
    E=DREZIONEL(4,A)/$10000
    DREZIONEL(4,A)=D(4)+A+E*$10000
    E=DREZIONEL(5,A)/$10000
    DREZIONEL(5,A)=$FFFF+E*$10000
    E=DREZIONEL(6,A)/$10000
    DREZIONEL(6,A)=$FFFF+E*$10000
    E=DREZIONEL(7,A)/$10000
    DREZIONEL(7,A)=$FFFF+E*$10000
   End If 
   If A>LUOGODIPARTENZA+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI+1 and A<LUOGODIPARTENZA+NUMEROLUOGHIMAPPA
    E=DREZIONEL(0,A)/$10000
    DREZIONEL(0,A)=$FFFF+E*$10000
    E=DREZIONEL(1,A)/$10000
    DREZIONEL(1,A)=$FFFF+E*$10000
    E=DREZIONEL(2,A)/$10000
    DREZIONEL(2,A)=D(2)+A+E*$10000
    E=DREZIONEL(3,A)/$10000
    DREZIONEL(3,A)=D(3)+A+E*$10000
    E=DREZIONEL(4,A)/$10000
    DREZIONEL(4,A)=D(4)+A+E*$10000
    E=DREZIONEL(5,A)/$10000
    DREZIONEL(5,A)=D(5)+A+E*$10000
    E=DREZIONEL(6,A)/$10000
    DREZIONEL(6,A)=D(6)+A+E*$10000
    E=DREZIONEL(7,A)/$10000
    DREZIONEL(7,A)=$FFFF+E*$10000
   End If 
   If A=LUOGODIPARTENZA+NUMEROLUOGHIMAPPA
    E=DREZIONEL(0,A)/$10000
    DREZIONEL(0,A)=$FFFF+E*$10000
    E=DREZIONEL(1,A)/$10000
    DREZIONEL(1,A)=$FFFF+E*$10000
    E=DREZIONEL(2,A)/$10000
    DREZIONEL(2,A)=$FFFF+E*$10000
    E=DREZIONEL(3,A)/$10000
    DREZIONEL(3,A)=$FFFF+E*$10000
    E=DREZIONEL(4,A)/$10000
    DREZIONEL(4,A)=D(4)+A+E*$10000
    E=DREZIONEL(5,A)/$10000
    DREZIONEL(5,A)=D(5)+A+E*$10000
    E=DREZIONEL(6,A)/$10000
    DREZIONEL(6,A)=D(6)+A+E*$10000
    E=DREZIONEL(7,A)/$10000
    DREZIONEL(7,A)=$FFFF+E*$10000
   End If 
  Next A
 Else 
  For A=LUOGODIPARTENZA To LUOGODIPARTENZA+NUMEROLUOGHIMAPPA
   If A=LUOGODIPARTENZA
    E=DREZIONEL(0,A)/$10000
    DREZIONEL(0,A)=D(0)+LUOGODIPARTENZA+E*$10000
    E=DREZIONEL(1,A)/$10000
    DREZIONEL(1,0)=D(1)+LUOGODIPARTENZA+E*$10000
    E=DREZIONEL(2,A)/$10000
    DREZIONEL(2,0)=D(2)+LUOGODIPARTENZA+E*$10000
    E=DREZIONEL(3,A)/$10000
    DREZIONEL(3,A)=LUOGODIPARTENZA+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI+2+E*$10000
    E=DREZIONEL(4,A)/$10000
    DREZIONEL(4,A)=LUOGODIPARTENZA+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI+1+E*$10000
    E=DREZIONEL(5,A)/$10000
    DREZIONEL(5,A)=LUOGODIPARTENZA+NUMEROLUOGHIMAPPA+E*$10000
    E=DREZIONEL(6,A)/$10000
    DREZIONEL(6,A)=LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI-1+E*$10000
    E=DREZIONEL(7,A)/$10000
    DREZIONEL(7,A)=LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI*2-1+E*$10000
   End If 
   If A>LUOGODIPARTENZA and A<LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI
    If A=LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI-1
     E=DREZIONEL(0,A)/$10000
     DREZIONEL(0,A)=D(0)+A+E*$10000
     E=DREZIONEL(1,A)/$10000
     DREZIONEL(1,A)=LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI+E*$10000
     E=DREZIONEL(2,A)/$10000
     DREZIONEL(2,A)=LUOGODIPARTENZA+E*$10000
     E=DREZIONEL(3,A)/$10000
     DREZIONEL(3,A)=LUOGODIPARTENZA+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI+1+E*$10000
     E=DREZIONEL(4,A)/$10000
     DREZIONEL(4,A)=LUOGODIPARTENZA+NUMEROLUOGHIMAPPA+E*$10000
     E=DREZIONEL(5,A)/$10000
     DREZIONEL(5,A)=LUOGODIPARTENZA+NUMEROLUOGHIMAPPA-1+E*$10000
     E=DREZIONEL(6,A)/$10000
     DREZIONEL(6,A)=D(6)+A+E*$10000
     E=DREZIONEL(7,A)/$10000
     DREZIONEL(7,A)=D(7)+A+E*$10000
    Else 
     E=DREZIONEL(0,A)/$10000
     DREZIONEL(0,A)=D(0)+A+E*$10000
     E=DREZIONEL(1,A)/$10000
     DREZIONEL(1,A)=D(1)+A+E*$10000
     E=DREZIONEL(2,A)/$10000
     DREZIONEL(2,A)=D(2)+A+E*$10000
     E=DREZIONEL(3,A)/$10000
     DREZIONEL(3,A)=A+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI+2+E*$10000
     E=DREZIONEL(4,A)/$10000
     DREZIONEL(4,A)=A+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI+1+E*$10000
     E=DREZIONEL(5,A)/$10000
     DREZIONEL(5,A)=A+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI+E*$10000
     E=DREZIONEL(6,A)/$10000
     DREZIONEL(6,A)=D(6)+A+E*$10000
     E=DREZIONEL(7,A)/$10000
     DREZIONEL(7,A)=D(7)+A+E*$10000
    End If 
   End If 
   For B=LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI To LUOGODIPARTENZA+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI Step LARGHEZZAMAPPALUOGHI
    If A=B
     E=DREZIONEL(0,A)/$10000
     DREZIONEL(0,A)=D(0)+A+E*$10000
     E=DREZIONEL(1,A)/$10000
     DREZIONEL(1,A)=D(1)+A+E*$10000
     E=DREZIONEL(2,A)/$10000
     DREZIONEL(2,A)=D(2)+A+E*$10000
     E=DREZIONEL(3,A)/$10000
     DREZIONEL(3,A)=D(3)+A+E*$10000
     E=DREZIONEL(4,A)/$10000
     DREZIONEL(4,A)=D(4)+A+E*$10000
     E=DREZIONEL(5,A)/$10000
     DREZIONEL(5,A)=A-1+E*$10000
     E=DREZIONEL(6,A)/$10000
     DREZIONEL(6,A)=A+LARGHEZZAMAPPALUOGHI-1+E*$10000
     E=DREZIONEL(7,A)/$10000
     DREZIONEL(7,A)=A+LARGHEZZAMAPPALUOGHI*2-1+E*$10000
    End If 
    If A=B+LARGHEZZAMAPPALUOGHI-1
     E=DREZIONEL(0,A)/$10000
     DREZIONEL(0,A)=D(0)+A+E*$10000
     E=DREZIONEL(1,A)/$10000
     DREZIONEL(1,A)=A+1+E*$10000
     E=DREZIONEL(2,A)/$10000
     DREZIONEL(2,A)=A-LARGHEZZAMAPPALUOGHI+1+E*$10000
     E=DREZIONEL(3,A)/$10000
     DREZIONEL(3,A)=A-LARGHEZZAMAPPALUOGHI*2+1+E*$10000
     E=DREZIONEL(4,A)/$10000
     DREZIONEL(4,A)=D(4)+A+E*$10000
     E=DREZIONEL(5,A)/$10000
     DREZIONEL(5,A)=D(5)+A+E*$10000
     E=DREZIONEL(6,A)/$10000
     DREZIONEL(6,A)=D(6)+A+E*$10000
     E=DREZIONEL(7,A)/$10000
     DREZIONEL(7,A)=D(7)+A+E*$10000
    End If 
   Next B
   If A=LUOGODIPARTENZA+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI+1
    E=DREZIONEL(0,A)/$10000
    DREZIONEL(0,A)=LUOGODIPARTENZA+E*$10000
    E=DREZIONEL(1,A)/$10000
    DREZIONEL(1,A)=LUOGODIPARTENZA+1+E*$10000
    E=DREZIONEL(2,A)/$10000
    DREZIONEL(2,A)=D(2)+A+E*$10000
    E=DREZIONEL(3,A)/$10000
    DREZIONEL(3,A)=D(3)+A+E*$10000
    E=DREZIONEL(4,A)/$10000
    DREZIONEL(4,A)=D(4)+A+E*$10000
    E=DREZIONEL(5,A)/$10000
    DREZIONEL(5,A)=A-1+E*$10000
    E=DREZIONEL(6,A)/$10000
    DREZIONEL(6,A)=LUOGODIPARTENZA+NUMEROLUOGHIMAPPA+E*$10000
    E=DREZIONEL(7,A)/$10000
    DREZIONEL(7,A)=LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI-1+E*$10000
   End If 
   If A>LUOGODIPARTENZA+NUMEROLUOGHIMAPPA-LARGHEZZAMAPPALUOGHI+1 and A<LUOGODIPARTENZA+NUMEROLUOGHIMAPPA
    E=DREZIONEL(0,A)/$10000
    DREZIONEL(0,A)=A-NUMEROLUOGHIMAPPA+LARGHEZZAMAPPALUOGHI-1+E*$10000
    E=DREZIONEL(1,A)/$10000
    DREZIONEL(1,A)=A-NUMEROLUOGHIMAPPA+LARGHEZZAMAPPALUOGHI+E*$10000
    E=DREZIONEL(2,A)/$10000
    DREZIONEL(2,A)=D(2)+A+E*$10000
    E=DREZIONEL(3,A)/$10000
    DREZIONEL(3,A)=D(3)+A+E*$10000
    E=DREZIONEL(4,A)/$10000
    DREZIONEL(4,A)=D(4)+A+E*$10000
    E=DREZIONEL(5,A)/$10000
    DREZIONEL(5,A)=D(5)+A+E*$10000
    E=DREZIONEL(6,A)/$10000
    DREZIONEL(6,A)=D(6)+A+E*$10000
    E=DREZIONEL(7,A)/$10000
    DREZIONEL(7,A)=A-NUMEROLUOGHIMAPPA+LARGHEZZAMAPPALUOGHI-2+E*$10000
   End If 
   If A=LUOGODIPARTENZA+NUMEROLUOGHIMAPPA
    E=DREZIONEL(0,A)/$10000
    DREZIONEL(0,A)=LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI-1+E*$10000
    E=DREZIONEL(1,A)/$10000
    DREZIONEL(1,A)=LUOGODIPARTENZA+E*$10000
    E=DREZIONEL(2,A)/$10000
    DREZIONEL(2,A)=A-LARGHEZZAMAPPALUOGHI+1+E*$10000
    E=DREZIONEL(3,A)/$10000
    DREZIONEL(3,A)=A-LARGHEZZAMAPPALUOGHI*2+1+E*$10000
    E=DREZIONEL(4,A)/$10000
    DREZIONEL(4,A)=D(4)+A+E*$10000
    E=DREZIONEL(5,A)/$10000
    DREZIONEL(5,A)=D(5)+A+E*$10000
    E=DREZIONEL(6,A)/$10000
    DREZIONEL(6,A)=D(6)+A+E*$10000
    E=DREZIONEL(7,A)/$10000
    DREZIONEL(7,A)=LUOGODIPARTENZA+LARGHEZZAMAPPALUOGHI-2+E*$10000
   End If 
  Next A
 End If 
End Proc
Procedure _ORDINASTANZE[E,NUMEROSTANZEMAPPA,LARGHEZZAMAPPASTANZE,STANZADIPARTENZA]
 Dim D(7)
 D(0)=LARGHEZZAMAPPASTANZE
 D(1)=LARGHEZZAMAPPASTANZE+1
 D(2)=1
 D(3)=-LARGHEZZAMAPPASTANZE+1
 D(4)=-LARGHEZZAMAPPASTANZE
 D(5)=-LARGHEZZAMAPPASTANZE-1
 D(6)=-1
 D(7)=LARGHEZZAMAPPASTANZE-1
 For A=STANZADIPARTENZA To STANZADIPARTENZA+NUMEROSTANZEMAPPA
  DREZIONES(0,A,E)=D(0)+A+E*$10000
  DREZIONES(1,A,E)=D(1)+A+E*$10000
  DREZIONES(2,A,E)=D(2)+A+E*$10000
  DREZIONES(3,A,E)=D(3)+A+E*$10000
  DREZIONES(4,A,E)=D(4)+A+E*$10000
  DREZIONES(5,A,E)=D(5)+A+E*$10000
  DREZIONES(6,A,E)=D(6)+A+E*$10000
  DREZIONES(7,A,E)=D(7)+A+E*$10000
  DREZIONES(8,A,E)=$FFFF+E*$10000
  DREZIONES(9,A,E)=$FFFF+E*$10000
 Next A
 For A=STANZADIPARTENZA To STANZADIPARTENZA+NUMEROSTANZEMAPPA
  If A=STANZADIPARTENZA
   DREZIONES(0,A,E)=D(0)+STANZADIPARTENZA+E*$10000
   DREZIONES(1,A,E)=D(1)+STANZADIPARTENZA+E*$10000
   DREZIONES(2,A,E)=D(2)+STANZADIPARTENZA+E*$10000
   DREZIONES(3,A,E)=$FFFF+E*$10000
   DREZIONES(4,A,E)=$FFFF+E*$10000
   DREZIONES(5,A,E)=$FFFF+E*$10000
   DREZIONES(6,A,E)=$FFFF+E*$10000
   DREZIONES(7,A,E)=$FFFF+E*$10000
  End If 
  If A>STANZADIPARTENZA and A<STANZADIPARTENZA+LARGHEZZAMAPPASTANZE
   If A=STANZADIPARTENZA+LARGHEZZAMAPPASTANZE-1
    DREZIONES(0,A,E)=D(0)+A+E*$10000
    DREZIONES(1,A,E)=$FFFF+E*$10000
    DREZIONES(2,A,E)=$FFFF+E*$10000
    DREZIONES(3,A,E)=$FFFF+E*$10000
    DREZIONES(4,A,E)=$FFFF+E*$10000
    DREZIONES(5,A,E)=$FFFF+E*$10000
    DREZIONES(6,A,E)=D(6)+A+E*$10000
    DREZIONES(7,A,E)=D(7)+A+E*$10000
   Else 
    DREZIONES(0,A,E)=D(0)+A+E*$10000
    DREZIONES(1,A,E)=D(1)+A+E*$10000
    DREZIONES(2,A,E)=D(2)+A+E*$10000
    DREZIONES(3,A,E)=$FFFF+E*$10000
    DREZIONES(4,A,E)=$FFFF+E*$10000
    DREZIONES(5,A,E)=$FFFF+E*$10000
    DREZIONES(6,A,E)=D(6)+A+E*$10000
    DREZIONES(7,A,E)=D(7)+A+E*$10000
   End If 
  End If 
  For B=STANZADIPARTENZA+LARGHEZZAMAPPASTANZE To STANZADIPARTENZA+NUMEROSTANZEMAPPA-LARGHEZZAMAPPASTANZE Step LARGHEZZAMAPPASTANZE
   If A=B
    DREZIONES(0,A,E)=D(0)+A+E*$10000
    DREZIONES(1,A,E)=D(1)+A+E*$10000
    DREZIONES(2,A,E)=D(2)+A+E*$10000
    DREZIONES(3,A,E)=D(3)+A+E*$10000
    DREZIONES(4,A,E)=D(4)+A+E*$10000
    DREZIONES(5,A,E)=$FFFF+E*$10000
    DREZIONES(6,A,E)=$FFFF+E*$10000
    DREZIONES(7,A,E)=$FFFF+E*$10000
   End If 
   If A=B+LARGHEZZAMAPPASTANZE-1
    DREZIONES(0,A,E)=D(0)+A+E*$10000
    DREZIONES(1,A,E)=$FFFF+E*$10000
    DREZIONES(2,A,E)=$FFFF+E*$10000
    DREZIONES(3,A,E)=$FFFF+E*$10000
    DREZIONES(4,A,E)=D(4)+A+E*$10000
    DREZIONES(5,A,E)=D(5)+A+E*$10000
    DREZIONES(6,A,E)=D(6)+A+E*$10000
    DREZIONES(7,A,E)=D(7)+A+E*$10000
   End If 
  Next B
  If A=STANZADIPARTENZA+NUMEROSTANZEMAPPA-LARGHEZZAMAPPASTANZE+1
   DREZIONES(0,A,E)=$FFFF+E*$10000
   DREZIONES(1,A,E)=$FFFF+E*$10000
   DREZIONES(2,A,E)=D(2)+A+E*$10000
   DREZIONES(3,A,E)=D(3)+A+E*$10000
   DREZIONES(4,A,E)=D(4)+A+E*$10000
   DREZIONES(5,A,E)=$FFFF+E*$10000
   DREZIONES(6,A,E)=$FFFF+E*$10000
   DREZIONES(7,A,E)=$FFFF+E*$10000
  End If 
  If A>STANZADIPARTENZA+NUMEROSTANZEMAPPA-LARGHEZZAMAPPASTANZE+1 and A<STANZADIPARTENZA+NUMEROSTANZEMAPPA
   DREZIONES(0,A,E)=$FFFF+E*$10000
   DREZIONES(1,A,E)=$FFFF+E*$10000
   DREZIONES(2,A,E)=D(2)+A+E*$10000
   DREZIONES(3,A,E)=D(3)+A+E*$10000
   DREZIONES(4,A,E)=D(4)+A+E*$10000
   DREZIONES(5,A,E)=D(5)+A+E*$10000
   DREZIONES(6,A,E)=D(6)+A+E*$10000
   DREZIONES(7,A,E)=$FFFF+E*$10000
  End If 
  If A=STANZADIPARTENZA+NUMEROSTANZEMAPPA
   DREZIONES(0,A,E)=$FFFF+E*$10000
   DREZIONES(1,A,E)=$FFFF+E*$10000
   DREZIONES(2,A,E)=$FFFF+E*$10000
   DREZIONES(3,A,E)=$FFFF+E*$10000
   DREZIONES(4,A,E)=D(4)+A+E*$10000
   DREZIONES(5,A,E)=D(5)+A+E*$10000
   DREZIONES(6,A,E)=D(6)+A+E*$10000
   DREZIONES(7,A,E)=$FFFF+E*$10000
  End If 
 Next A
End Proc
Procedure PERSONAGGI
 For A=1 To NUMEROP
  Proc PERSONAGGIOVISIBILE[A]
  If PERSONAGGIOVISIBILEP(A)=True Then PERSONAGGIVISIBILI=True
 Next A
 If PERSONAGGIVISIBILI=True
  Print "Personaggi visibili>"
  Proc FONDOSCHERMOGIOCO
  For A=1 To NUMEROP
   If PERSONAGGIOVISIBILEP(A)=True
    If RESISTENZAP(A)=0
     Print "Il cadavere di ";NOMEP$(A);
     If Btst(1,TIPOP(A))=True
      Print "@"
     Else 
      Print 
     End If 
    Else 
     Print NOMEP$(A);
     If Btst(1,TIPOP(A))=True
      Print "@";
     End If 
     If Btst(2,TIPOP(A))=True
      Print " dormiente"
     Else 
      Print 
     End If 
    End If 
   End If 
   Proc FONDOSCHERMOGIOCO
  Next A
 Else 
  Print "Nessun personaggio visibile"
 End If 
End Proc
Procedure PERSONAGGIORICEVENTE[TIPO$,NUMERO]
 For A=1 To NUMEROP
  If PERSONAGGIOVISIBILEP(A)=True Then Inc PERSONAGGIPRESENTI
 Next A
 If PERSONAGGIPRESENTI>1
  Locate 0,ULTIMALINEA : Input "A chi vuoi dare ?>";PERSONAGGIO$;
  Curs Off 
  If PERSONAGGIO$<>""
   For A=1 To NUMEROP
    If Lower$(PERSONAGGIO$)=Lower$(NOMEP$(A))
     If TIPO$="O"
      POSIZIONEO(NUMERO)=-1-A
      If Btst(1,TIPOO(NUMERO))=True
       Dec RESTODELPERSONAGGIO0(CATEGORIAO(NUMERO))
       Add PESONETTOP(0),-PESORESTOCO(CATEGORIAO(NUMERO))
       Add PESONETTOP(A),PESORESTOCO(CATEGORIAO(NUMERO))
      Else 
       Dec OGGETTODELPERSONAGGIO0(CATEGORIAO(NUMERO))
       Add PESONETTOP(0),-PESOCO(CATEGORIAO(NUMERO))
       Add PESONETTOP(A),PESOCO(CATEGORIAO(NUMERO))
       Inc OGGETTODATOOLASCIATO(CATEGORIAO(NUMERO))
      End If 
      If Btst(1,TIPOCO(CATEGORIAO(NUMERO)))=True
       For B=0 To NUMEROO
        If POSIZIONEO(B)=-1-NUMERO and Btst(0,TIPOO(B))=False
         If Btst(1,TIPOO(B))=True
          Add PESONETTOP(0),-PESORESTOCO(CATEGORIAO(B))
          Add PESONETTOP(A),PESORESTOCO(CATEGORIAO(B))
         Else 
          Add PESONETTOP(0),-PESOCO(CATEGORIAO(B))
          Add PESONETTOP(A),PESOCO(CATEGORIAO(B))
         End If 
        End If 
       Next B
       For B=1 To NUMEROP
        If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
         Add PESONETTOP(0),-PESOP(B)*1000
         Add PESONETTOP(0),-PESONETTOP(B)
         Add PESONETTOP(A),PESOP(B)*1000
         Add PESONETTOP(A),PESONETTOP(B)
        End If 
       Next B
      End If 
      COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
      Print "Hai deciso di dare 1 ";
      If Btst(1,TIPOO(NUMERO))=True
       Print NOMESRO$(CATEGORIAO(NUMERO));
      Else 
       Print NOMESCO$(CATEGORIAO(NUMERO));
      End If 
     Else If TIPO$="P"
      POSIZIONEP(NUMERO)=-1-A
      Add PESONETTOP(0),-PESOP(NUMERO)*1000
      Add PESONETTOP(0),-PESONETTOP(NUMERO)
      Add PESONETTOP(A),PESOP(NUMERO)*1000
      Add PESONETTOP(A),PESONETTOP(NUMERO)
      COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
      Print "Hai deciso di dare ";NOMEP$(NUMERO);
     Else If TIPO$="S"
      Add SOLDIP(A),NUMERO
      Add SOLDIRICEVUTIP(A),NUMERO
      Add PESONETTOP(0),-NUMERO*PESOS
      Add PESONETTOP(A),NUMERO*PESOS
      COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
      Print "Hai deciso di dare";NUMERO;
      If NUMERO=1
       Print " soldo";
      Else 
       Print " soldi";
      End If 
     End If 
     Print " a ";NOMEP$(A);
     Proc _ASPETTA
     Exit 
    End If 
   Next A
   If A=NUMEROP+1
    Locate 0,ULTIMALINEA : Cline : Print "Non c'è nessun ";PERSONAGGIO$;
    If _MUSICA=False
     Bell 1
    End If 
    Proc _ASPETTA
   End If 
  End If 
 Else 
  For A=1 To NUMEROP
   If POSIZIONEP(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(A)=DREZIONEPRESAP(0)
    If TIPO$="O"
     POSIZIONEO(NUMERO)=-1-A
     If Btst(1,TIPOO(NUMERO))=True
      Dec RESTODELPERSONAGGIO0(CATEGORIAO(NUMERO))
      Add PESONETTOP(0),-PESORESTOCO(CATEGORIAO(NUMERO))
      Add PESONETTOP(A),PESORESTOCO(CATEGORIAO(NUMERO))
     Else 
      Dec OGGETTODELPERSONAGGIO0(CATEGORIAO(NUMERO))
      Add PESONETTOP(0),-PESOCO(CATEGORIAO(NUMERO))
      Add PESONETTOP(A),PESOCO(CATEGORIAO(NUMERO))
      Inc OGGETTODATOOLASCIATO(CATEGORIAO(NUMERO))
     End If 
     If Btst(1,TIPOCO(CATEGORIAO(NUMERO)))=True
      For B=0 To NUMEROO
       If POSIZIONEO(B)=-1-NUMERO and Btst(0,TIPOO(B))=False
        If Btst(1,TIPOO(B))=True
         Add PESONETTOP(A),-PESORESTOCO(CATEGORIAO(B))
        Else 
         Add PESONETTOP(A),-PESOCO(CATEGORIAO(B))
        End If 
       End If 
      Next B
      For B=1 To NUMEROP
       If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
        Add PESONETTOP(A),-PESOP(B)*1000
        Add PESONETTOP(A),-PESONETTOP(B)
       End If 
      Next B
     End If 
     COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
     Print "Hai deciso di dare 1 ";
     If Btst(1,TIPOO(NUMERO))=True
      Print NOMESRO$(CATEGORIAO(NUMERO));
     Else 
      Print NOMESCO$(CATEGORIAO(NUMERO));
     End If 
    Else If TIPO$="P"
     POSIZIONEP(NUMERO)=-1-A
     Add PESONETTOP(0),-PESOP(NUMERO)*1000
     Add PESONETTOP(0),-PESONETTOP(NUMERO)
     Add PESONETTOP(A),PESOP(NUMERO)*1000
     Add PESONETTOP(A),PESONETTOP(NUMERO)
     COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
     Print "Hai deciso di dare ";NOMEP$(NUMERO);
    Else If TIPO$="S"
     Add SOLDIP(A),NUMERO
     Add SOLDIRICEVUTIP(A),NUMERO
     Add PESONETTOP(0),-NUMERO*PESOS
     Add PESONETTOP(A),NUMERO*PESOS
     COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
     Print "Hai deciso di dare";NUMERO;
     If NUMERO=1
      Print " soldo";
     Else 
      Print " soldi";
     End If 
    End If 
    Print " a ";NOMEP$(A);
    Proc _ASPETTA
   End If 
  Next A
 End If 
End Proc
Procedure PERSONAGGIOVISIBILE[P]
 If POSIZIONEP(P)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(P)=DREZIONEPRESAP(0)
  PERSONAGGIOVISIBILEP(P)=True
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(0) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(0)
  PERSONAGGIOVISIBILEP(P)=True
 Else 
  PERSONAGGIOVISIBILEP(P)=False
 End If 
End Proc
Procedure PRENDI
 If TEMP0DIATTRAVERSAMENTOP(0)>0
  For A=1 To NUMEROP
   If PERSONAGGIOVISIBILEP(A)=True
    Inc PERSONAGGI
   End If 
  Next A
  If PERSONAGGI>0
   Proc PRENDIUNPERSONAGGIO
  Else 
   Print At(0,ULTIMALINEA);"Non ci sono personaggi da prendere";
   If _MUSICA=False
    Bell 1
   End If 
   Proc _ASPETTA
   Pop Proc
  End If 
 Else 
  For A=1 To NUMEROP
   If POSIZIONEP(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(A)=DREZIONEPRESAP(0)
    Inc PERSONAGGI
   End If 
  Next A
 End If 
 For A=0 To NUMEROCO
  If OGGETTINELLUOGO(A)>0 and Btst(7,TIPOCO(A))=False Then Inc CATEGORIEOGGETTI
  If RESTINELLUOGO(A)>0 and Btst(7,TIPOCO(A))=False Then Inc CATEGORIEOGGETTI
 Next A
 If SOLDIL(POSIZIONEP(0))>0
  SOLDI=True
 End If 
 If CATEGORIEOGGETTI>0 and PERSONAGGI>0 and SOLDI=True
  Print At(0,ULTIMALINEA);"Vuoi prendere un oggetto,un personaggio o dei soldi (o/p/s) ?>";
  OGGETTOPERSONAGGIOOSOLDI$=Input$(1)
  OGGETTOPERSONAGGIOOSOLDI$=Lower$(OGGETTOPERSONAGGIOOSOLDI$)
  If OGGETTOPERSONAGGIOOSOLDI$="o"
   Proc PRENDIUNOGGETTO
  Else If OGGETTOPERSONAGGIOOSOLDI$="p"
   Proc PRENDIUNPERSONAGGIO
  Else If OGGETTOPERSONAGGIOOSOLDI$="s"
   Proc PRENDIDEISOLDI
  End If 
 Else If CATEGORIEOGGETTI>0 and PERSONAGGI=0 and SOLDI=True
  Print At(0,ULTIMALINEA);"Vuoi prendere un oggetto o dei soldi (o/s) ?>";
  OGGETTOOSOLDI$=Input$(1)
  OGGETTOOSOLDI$=Lower$(OGGETTOOSOLDI$)
  If OGGETTOOSOLDI$="o"
   Proc PRENDIUNOGGETTO
  Else If OGGETTOOSOLDI$="s"
   Proc PRENDIDEISOLDI
  End If 
 Else If CATEGORIEOGGETTI=0 and PERSONAGGI>0 and SOLDI=True
  Print At(0,ULTIMALINEA);"Vuoi prendere un personaggio o dei soldi (p/s) ?>";
  PERSONAGGIOOSOLDI$=Input$(1)
  PERSONAGGIOOSOLDI$=Lower$(PERSONAGGIOOSOLDI$)
  If PERSONAGGIOOSOLDI$="p"
   Proc PRENDIUNPERSONAGGIO
  Else If PERSONAGGIOOSOLDI$="s"
   Proc PRENDIDEISOLDI
  End If 
 Else If CATEGORIEOGGETTI=0 and PERSONAGGI=0 and SOLDI=True
  Proc PRENDIDEISOLDI
 Else If CATEGORIEOGGETTI>0 and PERSONAGGI>0 and SOLDI=False
  Print At(0,ULTIMALINEA);"Vuoi prendere un oggetto od un personaggio (o/p) ?>";
  OGGETTOOPERSONAGGIO$=Input$(1)
  OGGETTOOPERSONAGGIO$=Lower$(OGGETTOOPERSONAGGIO$)
  If OGGETTOOPERSONAGGIO$="o"
   Proc PRENDIUNOGGETTO
  Else If OGGETTOOPERSONAGGIO$="p"
   Proc PRENDIUNPERSONAGGIO
  End If 
 Else If CATEGORIEOGGETTI>0 and PERSONAGGI=0 and SOLDI=False
  Proc PRENDIUNOGGETTO
 Else If CATEGORIEOGGETTI=0 and PERSONAGGI>0 and SOLDI=False
  Proc PRENDIUNPERSONAGGIO
 Else 
  Print At(0,ULTIMALINEA);"Non ci sono oggetti,personaggi o soldi da prendere";
  If _MUSICA=False
   Bell 1
  End If 
  Proc _ASPETTA
 End If 
End Proc
Procedure PRENDIAO[AZIONE,P]
 If TEMP0DIATTRAVERSAMENTOP(P)>0 Then Pop Proc
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=POSIZIONEP(P) and Btst(7,TIPOCO(CATEGORIAO(A)))=False
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=POSIZIONEP(P) and Btst(7,TIPOCO(CATEGORIAO(A)))=False
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 POSIZIONEO(A)=-1-P : Bset 0,TIPOO(A)
 If Btst(1,TIPOO(A))=True
  Add PESONETTOP(P),PESORESTOCO(CATEGORIAO(A))
 Else 
  Add PESONETTOP(P),PESOCO(CATEGORIAO(A))
 End If 
 If Btst(1,TIPOCO(CATEGORIAO(A)))=True
  For B=0 To NUMEROO
   If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
    If Btst(1,TIPOO(B))=True
     Add PESONETTOP(P),PESORESTOCO(CATEGORIAO(B))
    Else 
     Add PESONETTOP(P),PESOCO(CATEGORIAO(B))
    End If 
   End If 
  Next B
  For B=1 To NUMEROP
   If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
    Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(B)*1000
    Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(B)
   End If 
  Next B
 End If 
 If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
  Print NOMEP$(P);" prende 1 ";
  If Btst(1,TIPOO(A))=True
   Print NOMESRO$(CATEGORIAO(A))
  Else 
   Print NOMESCO$(CATEGORIAO(A))
  End If 
 End If 
 Dec PARAAAZIONEP(AZIONE,P)
 If PARAAAZIONEP(AZIONE,P)=0
  FINEA(AZIONE,P)=True
 End If 
End Proc
Procedure PRENDIAOB[AZIONE,P]
 If TEMP0DIATTRAVERSAMENTOP(P)>0 Then Pop Proc
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=POSIZIONEP(P) and Btst(7,TIPOCO(CATEGORIAO(A)))=False and CATEGORIAO(A)=PARABAZIONEP(AZIONE,P)
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=POSIZIONEP(P) and Btst(7,TIPOCO(CATEGORIAO(A)))=False and CATEGORIAO(A)=PARABAZIONEP(AZIONE,P)
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 POSIZIONEO(A)=-1-P : Bset 0,TIPOO(A)
 If Btst(1,TIPOO(A))=True
  Add PESONETTOP(P),PESORESTOCO(CATEGORIAO(A))
 Else 
  Add PESONETTOP(P),PESOCO(CATEGORIAO(A))
 End If 
 If Btst(1,TIPOCO(CATEGORIAO(A)))=True
  For B=0 To NUMEROO
   If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
    If Btst(1,TIPOO(B))=True
     Add PESONETTOP(P),PESORESTOCO(CATEGORIAO(B))
    Else 
     Add PESONETTOP(P),PESOCO(CATEGORIAO(B))
    End If 
   End If 
  Next B
  For B=1 To NUMEROP
   If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
    Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(B)*1000
    Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(B)
   End If 
  Next B
 End If 
 If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
  Print NOMEP$(P);" prende 1 ";
  If Btst(1,TIPOO(A))=True
   Print NOMESRO$(CATEGORIAO(A))
  Else 
   Print NOMESCO$(CATEGORIAO(A))
  End If 
 End If 
 Dec PARAAAZIONEP(AZIONE,P)
 If PARAAAZIONEP(AZIONE,P)=0
  FINEA(AZIONE,P)=True
 End If 
End Proc
Procedure PRENDIAOTB[AZIONE,P]
 If TEMP0DIATTRAVERSAMENTOP(P)>0 Then Pop Proc
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=POSIZIONEP(P) and Btst(7,TIPOCO(CATEGORIAO(A)))=False and TIPOCO(CATEGORIAO(A))=PARABAZIONEP(AZIONE,P)
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=POSIZIONEP(P) and Btst(7,TIPOCO(CATEGORIAO(A)))=False and TIPOCO(CATEGORIAO(A))=PARABAZIONEP(AZIONE,P)
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 POSIZIONEO(A)=-1-P : Bset 0,TIPOO(A)
 If Btst(1,TIPOO(A))=True
  Add PESONETTOP(P),PESORESTOCO(CATEGORIAO(A))
 Else 
  Add PESONETTOP(P),PESOCO(CATEGORIAO(A))
 End If 
 If Btst(1,TIPOCO(CATEGORIAO(A)))=True
  For B=0 To NUMEROO
   If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
    If Btst(1,TIPOO(B))=True
     Add PESONETTOP(P),PESORESTOCO(CATEGORIAO(B))
    Else 
     Add PESONETTOP(P),PESOCO(CATEGORIAO(B))
    End If 
   End If 
  Next B
  For B=1 To NUMEROP
   If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
    Add PESONETTOP(PERSONAGGIOTROVATO),PESOP(B)*1000
    Add PESONETTOP(PERSONAGGIOTROVATO),PESONETTOP(B)
   End If 
  Next B
 End If 
 If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
  Print NOMEP$(P);" prende 1 ";
  If Btst(1,TIPOO(A))=True
   Print NOMESRO$(CATEGORIAO(A))
  Else 
   Print NOMESCO$(CATEGORIAO(A))
  End If 
 End If 
 Dec PARAAAZIONEP(AZIONE,P)
 If PARAAAZIONEP(AZIONE,P)=0
  FINEA(AZIONE,P)=True
 End If 
End Proc
Procedure PRENDIAP[AZIONE,P]
 For A=1 To NUMEROP
  If POSIZIONEP(A)=POSIZIONEP(P) and TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(P) and DREZIONEPRESAP(A)=DREZIONEPRESAP(P)
   POSIZIONEP(A)=-1-P : Bset 0,TIPOP(A)
   Add PESONETTOP(P),PESOP(A)*1000
   Add PESONETTOP(P),PESONETTOP(A)
   If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
    Print NOMEP$(P);" prende ";NOMEP$(A)
   End If 
   Dec PARABAZIONEP(AZIONE,P)
   If PARABAZIONEP(AZIONE,P)=0
    FINEA(AZIONE,P)=True
   End If 
   Exit 
  End If 
 Next A
End Proc
Procedure PRENDIDEISOLDI
 Locate 0,ULTIMALINEA : Input "Quanti soldi vuoi prendere (0-"+Str$(SOLDIL(POSIZIONEP(0)))-" "+") ?>";SOLDI$;
 Curs Off 
 If SOLDI$<>""
  SOLDI=Val(SOLDI$)
  Proc LIMITI[SOLDI,0,SOLDIL(POSIZIONEP(0))] : SOLDI=Param
  If SOLDI>0
   Add SOLDIP(0),SOLDI
   Add SOLDIL(POSIZIONEP(0)),-SOLDI
   Add PESONETTOP(0),SOLDI*PESOS
   COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
   Print "Hai deciso di prendere";SOLDI;
   If SOLDI=1
    Print " soldo";
   Else 
    Print " soldi";
   End If 
   Proc _ASPETTA
  End If 
 End If 
End Proc
Procedure PRENDIPA[AZIONE,P]
 A=PARAAAZIONEP(AZIONE,P)
 If POSIZIONEP(A)=POSIZIONEP(P)
  POSIZIONEP(A)=-1-P : Bset 0,TIPOP(A)
  Add PESONETTOP(P),PESOP(A)*1000
  Add PESONETTOP(P),PESONETTOP(A)
  If PERSONAGGIOVISIBILEP(P)=True and Btst(2,TIPOP(0))=False
   Print NOMEP$(P);" prende ";NOMEP$(A)
  End If 
  FINEA(AZIONE,P)=True
 End If 
End Proc
Procedure PRENDIUNOGGETTO
 For A=0 To NUMEROCO
  If OGGETTINELLUOGO(A)>0 and Btst(7,TIPOCO(A))=False Then Inc CATEGORIEOGGETTI
  If RESTINELLUOGO(A)>0 and Btst(7,TIPOCO(A))=False Then Inc CATEGORIEOGGETTI
 Next A
 If CATEGORIEOGGETTI>0
  If CATEGORIEOGGETTI>1
   Locate 0,ULTIMALINEA : Input "Quale oggetto vuoi prendere ?>";OGGETTO$;
   Curs Off 
   If OGGETTO$<>""
    For A=0 To NUMEROO
     If POSIZIONEO(A)=POSIZIONEP(0)
      If Lower$(OGGETTO$)=Lower$(NOMESCO$(CATEGORIAO(A))) and Btst(1,TIPOO(A))=False
       If Btst(7,TIPOCO(CATEGORIAO(A)))=True
        Print At(0,ULTIMALINEA);"Non puoi prendere 1 ";NOMESCO$(CATEGORIAO(A));", è residente";
        If _MUSICA=False
         Bell 1
        End If 
       Else 
        POSIZIONEO(A)=-1 : Bset 0,TIPOO(A)
        Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(A))
        Add PESONETTOP(0),PESOCO(CATEGORIAO(A))
        If Btst(1,TIPOCO(CATEGORIAO(A)))=True
         For B=0 To NUMEROO
          If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
           If Btst(1,TIPOO(B))=True
            Add PESONETTOP(0),PESORESTOCO(CATEGORIAO(B))
           Else 
            Add PESONETTOP(0),PESOCO(CATEGORIAO(B))
           End If 
          End If 
         Next B
         For B=1 To NUMEROP
          If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
           Add PESONETTOP(0),PESOP(B)*1000
           Add PESONETTOP(0),PESONETTOP(B)
          End If 
         Next B
        End If 
        COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
        Print "Hai deciso di prendere 1 ";NOMESCO$(CATEGORIAO(A));
       End If 
       Proc _ASPETTA : Exit 
      Else If Lower$(OGGETTO$)=Lower$(NOMESRO$(CATEGORIAO(A))) and Btst(1,TIPOO(A))=True
       If Btst(7,TIPOCO(CATEGORIAO(A)))=True
        Print At(0,ULTIMALINEA);"Non puoi prendere 1 ";NOMESRO$(CATEGORIAO(A));", è residente";
        If _MUSICA=False
         Bell 1
        End If 
       Else 
        POSIZIONEO(A)=-1 : Bset 0,TIPOO(A)
        Inc RESTODELPERSONAGGIO0(CATEGORIAO(A))
        Add PESONETTOP(0),PESORESTOCO(CATEGORIAO(A))
        If Btst(1,TIPOCO(CATEGORIAO(A)))=True
         For B=0 To NUMEROO
          If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
           If Btst(1,TIPOO(B))=True
            Add PESONETTOP(0),PESORESTOCO(CATEGORIAO(B))
           Else 
            Add PESONETTOP(0),PESOCO(CATEGORIAO(B))
           End If 
          End If 
         Next B
         For B=1 To NUMEROP
          If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
           Add PESONETTOP(0),PESOP(B)*1000
           Add PESONETTOP(0),PESONETTOP(B)
          End If 
         Next B
        End If 
        COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
        Print "Hai deciso di prendere 1 ";NOMESRO$(CATEGORIAO(A));
       End If 
       Proc _ASPETTA : Exit 
      End If 
     End If 
    Next A
    If A=NUMEROO+1
     Locate 0,ULTIMALINEA : Cline : Print "Non c'è nessun ";OGGETTO$;
     If _MUSICA=False
      Bell 1
     End If 
     Proc _ASPETTA
    End If 
   End If 
  Else 
   For A=0 To NUMEROO
    If POSIZIONEO(A)=POSIZIONEP(0) and Btst(7,TIPOCO(CATEGORIAO(A)))=False
     POSIZIONEO(A)=-1 : Bset 0,TIPOO(A)
     If Btst(1,TIPOO(A))=True
      Inc RESTODELPERSONAGGIO0(CATEGORIAO(A))
     Else 
      Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(A))
     End If 
     Add PESONETTOP(0),PESOCO(CATEGORIAO(A))
     If Btst(1,TIPOCO(CATEGORIAO(A)))=True
      For B=0 To NUMEROO
       If POSIZIONEO(B)=-1-A and Btst(0,TIPOO(B))=False
        If Btst(1,TIPOO(B))=True
         Add PESONETTOP(0),PESORESTOCO(CATEGORIAO(B))
        Else 
         Add PESONETTOP(0),PESOCO(CATEGORIAO(B))
        End If 
       End If 
      Next B
      For B=1 To NUMEROP
       If POSIZIONEP(B)=-1-A and Btst(0,TIPOP(B))=False
        Add PESONETTOP(0),PESOP(B)*1000
        Add PESONETTOP(0),PESONETTOP(B)
       End If 
      Next B
     End If 
     COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
     Print "Hai deciso di prendere 1 ";
     If Btst(1,TIPOO(A))=True
      Print NOMESRO$(CATEGORIAO(A));
     Else 
      Print NOMESCO$(CATEGORIAO(A));
     End If 
     Proc _ASPETTA : Exit 
    End If 
   Next A
  End If 
 End If 
End Proc
Procedure PRENDIUNPERSONAGGIO
 For A=1 To NUMEROP
  If PERSONAGGIOVISIBILEP(A)=True Then Inc PERSONAGGI
 Next A
 If PERSONAGGI>0
  If PERSONAGGI>1
   Locate 0,ULTIMALINEA : Input "Quale personaggio vuoi prendere ?>";PERSONAGGIO$;
   Curs Off 
   If PERSONAGGIO$<>""
    For A=1 To NUMEROP
     If Lower$(PERSONAGGIO$)=Lower$(NOMEP$(A)) and POSIZIONEP(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(A)=DREZIONEPRESAP(0)
      POSIZIONEP(A)=-1 : Bset 0,TIPOP(A)
      Add PESONETTOP(0),PESOP(A)*1000
      Add PESONETTOP(0),PESONETTOP(A)
      COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
      Print "Hai deciso di prendere ";NOMEP$(A);
      Proc _ASPETTA : Exit 
     End If 
    Next A
    If A=NUMEROP+1
     Locate 0,ULTIMALINEA : Cline : Print "Non c'è nessun ";PERSONAGGIO$;
     If _MUSICA=False
      Bell 1
     End If 
     Proc _ASPETTA
    End If 
   End If 
  Else 
   For A=1 To NUMEROP
    If POSIZIONEP(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(A)=DREZIONEPRESAP(0)
     POSIZIONEP(A)=-1 : Bset 0,TIPOP(A)
     Add PESONETTOP(0),PESOP(A)*1000
     Add PESONETTOP(0),PESONETTOP(A)
     COMPIUTAAZIONE=1 : Locate 0,ULTIMALINEA : Cline 
     Print "Hai deciso di prendere ";NOMEP$(A);
     Proc _ASPETTA : Exit 
    End If 
   Next A
  End If 
 End If 
End Proc
Procedure SALVAUNFILE
 Show On : Cls 
 FILE$=Fsel$("*.Adv",NOMEFILE$,"Salva un file","di Adventures Conceiver")
 If Len(FILE$)>0
  If Upper$(Right$(FILE$,4))<>".ADV"
   FILE$=FILE$+".Adv"
  End If 
  Proc TIC["Sto salvando il file",ULTIMALINEA-1]
  Proc TIC[FILE$,ULTIMALINEA]
  Bsave FILE$,Start(BANCO) To Start(BANCO)+Length(BANCO) : Proc _ASPETTA
 End If 
 Erase BANCO
 Hide On 
End Proc
Procedure SCOPODELGIOCO[NUOVOSCOPODELGIOCO]
 SCOPODELGIOCO=AZIONEP(7,0)
 PARA=PARAAAZIONEP(7,0)
 PARB=PARABAZIONEP(7,0)
 PARC=PARACAZIONEP(7,0)
 Cls 
 If NUOVOSCOPODELGIOCO=True
  If M0DIFICA=False
   Proc TIC[MESSAGGIO3$,0] : Print 
  End If 
  Print "Scopo del gioco>";
  If SCOPODELGIOCO=0
   Print "nessuno"
  Else If SCOPODELGIOCO=1
   Print "Dai a ";NOMEP$(PARA);PARB;" ";
   If PARB=1
    Print NOMESCO$(PARC)
   Else 
    Print NOMEPCO$(PARC)
   End If 
  Else If SCOPODELGIOCO=2
   Print "Dai a ";NOMEP$(PARA);PARB;" oggett";
   If PARB=1
    Print "o ";
   Else 
    Print "i ";
   End If 
   Proc MOSTRACATEGORIAPERAZIONE[PARC]
  Else If SCOPODELGIOCO=3
   Print "Dai a ";NOMEP$(PARA);PARB;" sold";
   If PARB=1
    Print "o"
   Else 
    Print "i"
   End If 
  Else If SCOPODELGIOCO=4
   Print "Guadagna";PARA;" sold";
   If PARA=1
    Print "o"
   Else 
    Print "i"
   End If 
  Else If SCOPODELGIOCO=5
   Print "Lascia nel luogo";PARA;" di nome>";NOMEL$(PARA);PARB;" ";
   If PARB=1
    Print NOMESCO$(PARC)
   Else 
    Print NOMEPCO$(PARC)
   End If 
  Else If SCOPODELGIOCO=6
   Print "Lascia nel luogo";PARA;" di nome>";NOMEL$(PARA);PARB;" oggett";
   If PARB=1
    Print "o ";
   Else 
    Print "i ";
   End If 
   Proc MOSTRACATEGORIAPERAZIONE[PARC]
  Else If SCOPODELGIOCO=7
   Print "Lascia nel luogo";PARA;" di nome>";NOMEL$(PARA);PARB;" sold";
   If PARB=1
    Print "o"
   Else 
    Print "i"
   End If 
  Else If SCOPODELGIOCO=8
   Print "Prendi";PARA;" ";
   If PARA=1
    Print NOMESCO$(PARB)
   Else 
    Print NOMEPCO$(PARB)
   End If 
  Else If SCOPODELGIOCO=9
   Print "Prendi";PARA;" oggett";
   If PARA=1
    Print "o ";
   Else 
    Print "i ";
   End If 
   Proc MOSTRACATEGORIAPERAZIONE[PARB]
  Else If SCOPODELGIOCO=10
   Print "Trova il personaggio";PARA;" di nome>";NOMEP$(PARA)
  Else If SCOPODELGIOCO=11
   Print "Uccidi il personaggio";PARA;" di nome>";NOMEP$(PARA)
  Else If SCOPODELGIOCO=12
   Print "Usa 1 ";NOMESCO$(PARA);" su 1 ";NOMESCO$(PARB)
  Else If SCOPODELGIOCO=13
   Print "Usa 1 ";NOMESCO$(PARA);" su 1 oggetto ";
   Proc MOSTRACATEGORIAPERAZIONE[PARB]
  Else If SCOPODELGIOCO=14
   Print "Usa 1 ";NOMESCO$(PARA);" su ";NOMEP$(PARB)
  Else If SCOPODELGIOCO=15
   Print "Usa 1 oggetto ";
   Proc MOSTRACATEGORIAPERAZIONE[PARA]
   Print Space$(17);"su 1 ";NOMESCO$(PARB)
  Else If SCOPODELGIOCO=16
   Print "Usa 1 oggetto ";
   Proc MOSTRACATEGORIAPERAZIONE[PARA]
   Print Space$(17);"su 1 oggetto ";
   Proc MOSTRACATEGORIAPERAZIONE[PARB]
  Else If SCOPODELGIOCO=17
   Print "Usa 1 oggetto ";
   Proc MOSTRACATEGORIAPERAZIONE[PARA]
   Print Space$(17);"su ";NOMEP$(PARB)
  Else If SCOPODELGIOCO=18
   Print "Vai nel luogo";PARA;" di nome>";NOMEL$(PARA)
  End If 
 Else 
  If NUOVOSCOPODELGIOCO=1
   'Dai al personaggio PARA PARB oggetti PARC 
   Locate 0,ULTIMALINEA : Input "A quale personaggio vuoi dare (1-"+Str$(NUMEROP)-" "+") ?>";PERSONAGGIOACUIDARE$
   If PERSONAGGIOACUIDARE$<>""
    PERSONAGGIOACUIDARE=Val(PERSONAGGIOACUIDARE$)
    Proc LIMITI[PERSONAGGIOACUIDARE,1,NUMEROP] : PARA=Param
    Locate 0,ULTIMALINEA : Input "Quanti oggetti vuoi dare (1-65535) ?>";NUMEROOGGETTIDADARE$
    If NUMEROOGGETTIDADARE$<>""
     NUMEROOGGETTIDADARE=Val(NUMEROOGGETTIDADARE$)
     Proc LIMITI[NUMEROOGGETTIDADARE,1,65535] : PARB=Param
     MOSTRAOGGETTOPERINSERIMENTO[0] : PARC=Param
    End If 
   End If 
  Else If NUOVOSCOPODELGIOCO=2
   'Dai al personaggio PARA PARB oggetti di tipo PARC 
   Locate 0,ULTIMALINEA : Input "A quale personaggio vuoi dare (1-"+Str$(NUMEROP)-" "+") ?>";PERSONAGGIOACUIDARE$
   If PERSONAGGIOACUIDARE$<>""
    PERSONAGGIOACUIDARE=Val(PERSONAGGIOACUIDARE$)
    Proc LIMITI[PERSONAGGIOACUIDARE,1,NUMEROP] : PARA=Param
    Locate 0,ULTIMALINEA : Input "Quanti oggetti vuoi dare (1-65535) ?>";NUMEROOGGETTIDADARE$
    If NUMEROOGGETTIDADARE$<>""
     NUMEROOGGETTIDADARE=Val(NUMEROOGGETTIDADARE$)
     Proc LIMITI[NUMEROOGGETTIDADARE,1,65535] : PARB=Param
     MOSTRACATEGORIAPERINSERIMENTO[0] : PARC=Param
    End If 
   End If 
  Else If NUOVOSCOPODELGIOCO=3
   'Dai al personaggio PARA PARB soldi
   Locate 0,ULTIMALINEA : Input "A quale personaggio vuoi dare (1-"+Str$(NUMEROP)-" "+") ?>";PERSONAGGIOACUIDARE$
   If PERSONAGGIOACUIDARE$<>""
    PERSONAGGIOACUIDARE=Val(PERSONAGGIOACUIDARE$)
    Proc LIMITI[PERSONAGGIOACUIDARE,1,NUMEROP] : PARA=Param
    Locate 0,ULTIMALINEA : Input "Quanti soldi gli devi dare (1-65535) ?>";SOLDIDADARE$
    If SOLDIDADARE$<>""
     SOLDIDADARE=Val(SOLDIDADARE$)
     Proc LIMITI[SOLDIDADARE,1,65535] : PARB=Param
    End If 
   End If 
  Else If NUOVOSCOPODELGIOCO=4
   'Guadagna PARA soldi 
   Locate 0,ULTIMALINEA : Input "Quanti soldi devi guadagnare (1-65535) ?>";SOLDIDAGUADAGNARE$
   If SOLDIDAGUADAGNARE$<>""
    SOLDIDAGUADAGNARE=Val(SOLDIDAGUADAGNARE$)
    Proc LIMITI[SOLDIDAGUADAGNARE,1,65535] : PARA=Param
   End If 
  Else If NUOVOSCOPODELGIOCO=5
   'Lascia nel luogo PARA PARB oggetti PARC 
   Locate 0,ULTIMALINEA : Input "In quale luogo vuoi lasciare (0-"+Str$(NUMEROL)-" "+") ?>";LUOGOINCUILASCIARE$
   If LUOGOINCUILASCIARE$<>""
    LUOGOINCUILASCIARE=Val(LUOGOINCUILASCIARE$)
    Proc LIMITI[LUOGOINCUILASCIARE,0,NUMEROL] : PARA=Param
    Locate 0,ULTIMALINEA : Input "Quanti oggetti vuoi lasciare (1-65535) ?>";NUMEROOGGETTIDALASCIARE$
    If NUMEROOGGETTIDALASCIARE$<>""
     NUMEROOGGETTIDALASCIARE=Val(NUMEROOGGETTIDALASCIARE$)
     Proc LIMITI[NUMEROOGGETTIDALASCIARE,1,65535] : PARB=Param
     MOSTRAOGGETTOPERINSERIMENTO[0] : PARC=Param
    End If 
   End If 
  Else If NUOVOSCOPODELGIOCO=6
   'Lascia nel luogo PARA PARB oggetti di tipo PARC 
   Locate 0,ULTIMALINEA : Input "In quale luogo vuoi lasciare (0-"+Str$(NUMEROL)-" "+") ?>";LUOGOINCUILASCIARE$
   If LUOGOINCUILASCIARE$<>""
    LUOGOINCUILASCIARE=Val(LUOGOINCUILASCIARE$)
    Proc LIMITI[LUOGOINCUILASCIARE,0,NUMEROL] : PARA=Param
    Locate 0,ULTIMALINEA : Input "Quanti oggetti vuoi dare (1-65535) ?>";NUMEROOGGETTIDADARE$
    If NUMEROOGGETTIDADARE$<>""
     NUMEROOGGETTIDADARE=Val(NUMEROOGGETTIDADARE$)
     Proc LIMITI[NUMEROOGGETTIDADARE,1,65535] : PARB=Param
     MOSTRACATEGORIAPERINSERIMENTO[0] : PARC=Param
    End If 
   End If 
  Else If NUOVOSCOPODELGIOCO=7
   'Lascia nel luogo PARA PARB soldi
   Locate 0,ULTIMALINEA : Input "In quale luogo vuoi lasciare (0-"+Str$(NUMEROL)-" "+") ?>";LUOGOINCUILASCIARE$
   If LUOGOINCUILASCIARE$<>""
    LUOGOINCUILASCIARE=Val(LUOGOINCUILASCIARE$)
    Proc LIMITI[LUOGOINCUILASCIARE,0,NUMEROL] : PARA=Param
    Locate 0,ULTIMALINEA : Input "Quanti soldi ci devi lasciare (1-65535) ?>";SOLDIDALASCIARE$
    If SOLDIDALASCIARE$<>""
     SOLDIDALASCIARE=Val(SOLDIDALASCIARE$)
     Proc LIMITI[SOLDIDALASCIARE,1,65535] : PARB=Param
    End If 
   End If 
  Else If NUOVOSCOPODELGIOCO=8
   'Prendi PARA oggetti PARB
   Locate 0,ULTIMALINEA : Input "Quanti oggetti vuoi prendere (1-65535) ?>";NUMEROOGGETTIDAPRENDERE$
   If NUMEROOGGETTIDAPRENDERE$<>""
    NUMEROOGGETTIDAPRENDERE=Val(NUMEROOGGETTIDAPRENDERE$)
    Proc LIMITI[NUMEROOGGETTIDAPRENDERE,1,65535] : PARA=Param
    MOSTRAOGGETTOPERINSERIMENTO[0] : PARB=Param
   End If 
  Else If NUOVOSCOPODELGIOCO=9
   'Prendi PARA oggetti di tipo PARB
   Locate 0,ULTIMALINEA : Input "Quanti oggetti vuoi prendere (1-65535) ?>";NUMEROOGGETTIDAPRENDERE$
   If NUMEROOGGETTIDAPRENDERE$<>""
    NUMEROOGGETTIDAPRENDERE=Val(NUMEROOGGETTIDAPRENDERE$)
    Proc LIMITI[NUMEROOGGETTIDAPRENDERE,1,65535] : PARA=Param
    MOSTRACATEGORIAPERINSERIMENTO[0] : PARB=Param
   End If 
  Else If NUOVOSCOPODELGIOCO=10
   'Trova il personaggio PARA 
   Locate 0,ULTIMALINEA : Input "Quale personaggio vuoi trovare (1-"+Str$(NUMEROP)-" "+") ?>";PERSONAGGIODATROVARE$
   If PERSONAGGIODATROVARE$<>""
    PERSONAGGIODATROVARE=Val(PERSONAGGIODATROVARE$)
    Proc LIMITI[PERSONAGGIODATROVARE,1,NUMEROP] : PARA=Param
   End If 
  Else If NUOVOSCOPODELGIOCO=11
   'Uccidi il personaggio PARA  
   Locate 0,ULTIMALINEA : Input "Quale personaggio vuoi uccidere (1-"+Str$(NUMEROP)-" "+") ?>";PERSONAGGIODAUCCIDERE$
   If PERSONAGGIODAUCCIDERE$<>""
    PERSONAGGIODAUCCIDERE=Val(PERSONAGGIODAUCCIDERE$)
    Proc LIMITI[PERSONAGGIODAUCCIDERE,1,NUMEROP] : PARA=Param
   End If 
  Else If NUOVOSCOPODELGIOCO=12
   'Usa un'oggetto PARA su un'oggetto PARB
   MOSTRAOGGETTOPERINSERIMENTO[0] : PARA=Param
   MOSTRAOGGETTOPERINSERIMENTO[0] : PARB=Param
  Else If NUOVOSCOPODELGIOCO=13
   'Usa un'oggetto PARA su un'oggetto di tipo PARB
   MOSTRAOGGETTOPERINSERIMENTO[0] : PARA=Param
   MOSTRACATEGORIAPERINSERIMENTO[0] : PARB=Param
  Else If NUOVOSCOPODELGIOCO=14
   'Usa un'oggetto PARA sul personaggio PARB
   MOSTRAOGGETTOPERINSERIMENTO[0] : PARA=Param
   Locate 0,ULTIMALINEA : Input "Su quale personaggio vuoi usare (1-"+Str$(NUMEROP)-" "+") ?>";PERSONAGGIOSUCUIUSARE$
   If PERSONAGGIOSUCUIUSARE$<>""
    PERSONAGGIOSUCUIUSARE=Val(PERSONAGGIOSUCUIUSARE$)
    Proc LIMITI[PERSONAGGIOSUCUIUSARE,1,NUMEROP] : PARB=Param
   End If 
  Else If NUOVOSCOPODELGIOCO=15
   'Usa un'oggetto di tipo PARA su un'oggetto PARB
   MOSTRACATEGORIAPERINSERIMENTO[0] : PARA=Param
   MOSTRAOGGETTOPERINSERIMENTO[0] : PARB=Param
  Else If NUOVOSCOPODELGIOCO=16
   'Usa un'oggetto di tipo PARA su un'oggetto di tipo PARB
   MOSTRACATEGORIAPERINSERIMENTO[0] : PARA=Param
   MOSTRACATEGORIAPERINSERIMENTO[0] : PARB=Param
  Else If NUOVOSCOPODELGIOCO=17
   'Usa 1 oggetto di tipo PARA sul personaggio PARB 
   MOSTRACATEGORIAPERINSERIMENTO[0] : PARA=Param
   Locate 0,ULTIMALINEA : Input "Su quale personaggio vuoi usare (1-"+Str$(NUMEROP)-" "+") ?>";PERSONAGGIOSUCUIUSARE$
   If PERSONAGGIOSUCUIUSARE$<>""
    PERSONAGGIOSUCUIUSARE=Val(PERSONAGGIOSUCUIUSARE$)
    Proc LIMITI[PERSONAGGIOSUCUIUSARE,1,NUMEROP] : PARB=Param
   End If 
  Else If NUOVOSCOPODELGIOCO=18
   'Vai nel luogo PARA
   Locate 0,ULTIMALINEA : Input "In quale luogo vuoi andare (0-"+Str$(NUMEROL)-" "+") ?>";LUOGOINCUIANDARE$
   If LUOGOINCUIANDARE$<>""
    LUOGOINCUIANDARE=Val(LUOGOINCUIANDARE$)
    Proc LIMITI[LUOGOINCUIANDARE,0,NUMEROL] : PARA=Param
   End If 
  End If 
  AZIONEP(7,0)=NUOVOSCOPODELGIOCO
  PARAAAZIONEP(7,0)=PARA
  PARABAZIONEP(7,0)=PARB
  PARACAZIONEP(7,0)=PARC
 End If 
 Curs Off 
End Proc
Procedure SEGUI[AZIONE,P]
End Proc
Procedure SEGUIPA[AZIONE,P]
End Proc
Procedure SETTASCHERMO
 Hide On 
 If Ntsc Then LUNGHEZZASCHERMO=200 Else LUNGHEZZASCHERMO=256
 ULTIMALINEA=LUNGHEZZASCHERMO/8-1
 Screen Open 0,640,LUNGHEZZASCHERMO,2,Hires : Curs Off : Flash Off 
 Palette $60,$CCC : Pen 1 : Paper 0 : Ink 1,0
 Set Curs 170,85,170,85,170,85,170,85
 Wait Vbl : Limit Mouse 
End Proc
Procedure SUONAUNMODULO[M0DO]
 If M0DO=True
  Show On 
  NOMEMODULO$=Fsel$("**","","Carica un modulo sonoro xTracker da ascoltare")
  If NOMEMODULO$<>""
   Track Loop Of : Track Stop 
   Track Load NOMEMODULO$,BANCOMODULO
   Track Play BANCOMODULO : Track Loop On 
  End If 
  Hide On 
 Else 
  M0DULO=Rnd(92)+1
  If M0DULO=93
   NOMEMODULOPP$="Lavoro:Musica/Moduli/Beacand.mod.pp"
  Else If M0DULO=92
   NOMEMODULOPP$="Lavoro:Musica/Moduli/ANewJob.mod.pp"
  Else 
   NOMEMODULOPP$="LAvoro:Musica/Moduli/mod."+Str$(M0DULO)-" "+".pp"
  End If 
  If NOMEMODULOPP$<>""
   Ppload NOMEMODULOPP$,BANCOMODULO
   Bsave "RAM:ModuloXTracker",Start(BANCOMODULO) To Start(BANCOMODULO)+Length(BANCOMODULO)-1
   Track Load "RAM:ModuloXTracker",BANCOMODULO
   Track Loop Of : Track Stop 
   Track Play BANCOMODULO : Track Loop On 
  End If 
 End If 
End Proc[NOMEMODULO$]
Procedure TEMP0
 Print "Tempo trascorso>";
 If M0DOVISUALIZZAZIONETEMPO=True
  GIORNI=TEMP0TRASCORSO/1440 : Print Str$(GIORNI)-" ";
  If GIORNI=1
  Print " giorno"; Else Print " giorni";
  End If 
  _ORE=TEMP0TRASCORSO/60 mod 24 : Print _ORE;
  If _ORE=1
  Print " ora"; Else Print " ore";
  End If 
  M1NUTI=TEMP0TRASCORSO mod 60 : Print M1NUTI;
  If M1NUTI=1
  Print " minuto" Else Print " minuti"
  End If 
 Else 
  GIORNI=TEMP0TRASCORSO/1440 : Print "Giorni";GIORNI;
  _ORE=TEMP0TRASCORSO/60 mod 24
  Print Using " #";_ORE/10; Using "#";_ORE mod 10;
  M1NUTI=TEMP0TRASCORSO mod 60
  Print Using ":#";M1NUTI/10; Using "#";M1NUTI mod 10
 End If 
End Proc
Procedure TIC[TESTO$,LINEA]
 '-> Testo Invertito e Centrato by Stefano Regattin 
 'i> 23 maggio 1996 
 'm> 25 maggio 1996 
 '--------------------------------------------------------------------------- 
 'LINEA contiene il numero di linea dove si posizionerà il testo; se vale -1
 ' (True) il testo sarà posizionato alla linea dove si trova il cursore; in 
 ' questo caso sarà necessario un comando Print per spostare il cursore 
 '----------------------------------------------------------------------
 If LINEA=True Then L=Y Curs Else L=LINEA
 Locate 0,L : Inverse On : Cline : Centre TESTO$ : Inverse Off 
End Proc
Procedure TIPODILUOGO
 Print "Tipo di luogo>";TIPOL$(TIPOL(POSIZIONEP(0)))
End Proc
Procedure TIPODILUOGODIDESTINAZIONE
 Print "Tipo di luogo di destinazione>";TIPOL$(TIPOL(LUOGODIDESTINAZIONEP(0)))
End Proc
Procedure USA
 For A=0 To NUMEROCO
  If OGGETTODELPERSONAGGIO0(A)>0 Then Inc CATEGORIEOGGETTI
  If RESTODELPERSONAGGIO0(A)>0 Then Inc CATEGORIEOGGETTI
 Next A
 If CATEGORIEOGGETTI>0
  If CATEGORIEOGGETTI>1
   Locate 0,ULTIMALINEA : Input "Quale oggetto vuoi usare ?>";OGGETTO$;
   Curs Off 
   If OGGETTO$<>""
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
      If Lower$(OGGETTO$)=Lower$(NOMESCO$(CATEGORIAO(A))) and Btst(1,TIPOO(A))=False
       Proc OGGETTOOPERSONAGGIOSUCUIUSARE[A] : Exit 
      Else If Lower$(OGGETTO$)=Lower$(NOMESRO$(CATEGORIAO(A))) and Btst(1,TIPOO(A))=True
       Proc OGGETTOOPERSONAGGIOSUCUIUSARE[A] : Exit 
      End If 
     End If 
    Next A
    If A=NUMEROO+1
     Locate 0,ULTIMALINEA : Cline : Print "Non hai nessun ";OGGETTO$;
     If _MUSICA=False
      Bell 1
     End If 
     Proc _ASPETTA
    End If 
   End If 
  Else 
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
     Proc OGGETTOOPERSONAGGIOSUCUIUSARE[A] : Exit 
    End If 
   Next A
  End If 
 Else 
  Print At(0,ULTIMALINEA);"Non hai oggetti da usare";
  If _MUSICA=False
   Bell 1
  End If 
  Proc _ASPETTA
 End If 
End Proc
Procedure USASUOGGETTO[O,Q]
 COMPIUTAAZIONE=1
 If TIPOCO(CATEGORIAO(O))=%100000
  Locate 0,ULTIMALINEA
  If Btst(1,TIPOO(O))=True
   Print "Non puoi ammaliare 1 ";
   If Btst(1,TIPOO(Q))=True
    Print NOMESRO$(CATEGORIAO(Q));
   Else 
    Print NOMESCO$(CATEGORIAO(Q));
   End If 
   Print " con 1 ";NOMESRO$(CATEGORIAO(O))
  Else 
   Print "Hai deciso di ammaliare 1 ";
   If Btst(1,TIPOO(Q))=True
    Print NOMESRO$(CATEGORIAO(Q));
   Else 
    Print NOMESCO$(CATEGORIAO(Q));
   End If 
   Print " con 1 ";
   If Btst(1,TIPOO(O))=True
    Print NOMESRO$(CATEGORIAO(O));
   Else 
    Print NOMESCO$(CATEGORIAO(O));
   End If 
   MAGIA=PARATIPOCO(CATEGORIAO(O))/$10000
   PARMAGIA=PARATIPOCO(CATEGORIAO(O)) mod $10000
   If MAGIA=0
    'Cambia la categoria dell'oggetto, cioé lo trasforma in un'altro oggetto 
    CATEGORIAO(Q)=PARMAGIA
   Else If MAGIA=1
    'Fa diventare l'oggetto il resto dell'oggetto e viceversa
    Bchg 1,TIPOO(Q)
   Else If MAGIA=2
    'Fa diventare l'oggetto il resto di un oggetto e crea un nuovo oggetto della 
    ' categoria indicata dal parametro PARMAGIA
    Bclr 1,TIPOO(Q)
    Inc NUMEROO
    CATEGORIAO(NUMEROO)=PARMAGIA
    POSIZIONEO(NUMEROO)=POSIZIONEO(Q)
   End If 
  End If 
 Else 
  Locate 0,ULTIMALINEA : Cline : Print "Hai deciso di usare 1 ";
  If Btst(1,TIPOO(O))=True
   Print NOMESRO$(CATEGORIAO(O));
  Else 
   Print NOMESCO$(CATEGORIAO(O));
  End If 
  Print " su 1 ";
  If Btst(1,TIPOO(Q))=True
   Print NOMESRO$(CATEGORIAO(Q));
  Else 
   Print NOMESCO$(CATEGORIAO(Q));
  End If 
 End If 
 OGGETTOUSANTE=O
 OGGETTOUSATO=Q
 Proc _ASPETTA
End Proc
Procedure USASUOGGETTOP[O,P,Q]
 If POSIZIONEP(P)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(P)=DREZIONEPRESAP(0) and Btst(2,TIPOP(0))=False
  Print NOMEP$(P);" sta usando 1 ";
  If Btst(1,TIPOO(O))=True
   Print NOMESRO$(CATEGORIAO(O));
  Else 
   Print NOMESCO$(CATEGORIAO(O));
  End If 
  Print " su 1 ";
  If Btst(1,TIPOO(Q))=True
   Print NOMESRO$(CATEGORIAO(Q))
  Else 
   Print NOMESCO$(CATEGORIAO(Q))
  End If 
 End If 
End Proc
Procedure USASUPERSONAGGIO[O,P]
 Locate 0,ULTIMALINEA : Cline 
 If P=0
  If TIPOCO(CATEGORIAO(O))=%1
   If Btst(1,TIPOO(O))=True
    Print "Non puoi mangiarti 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di mangiarti 1";
    Inc RESTODELPERSONAGGIO0(CATEGORIAO(O))
    Dec OGGETTODELPERSONAGGIO0(CATEGORIAO(O))
    Bset 1,TIPOO(O)
    Add RESISTENZAP(0),PARATIPOCO(CATEGORIAO(O))
    RESISTENZAP(0)=Min(RESISTENZAP(0),C0STITUZIONEP(0))
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%100
   If Btst(1,TIPOO(O))=True
    Print "Non puoi difenderti con 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di difenderti con 1";
    Bset 2,TIPOO(O)
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%1000
   If Btst(1,TIPOO(O))=True
    Print "Non puoi leggerti 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di leggerti 1"; : PERSONAGGIO0DEVELEGGERE=True
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%10001
   If Btst(1,TIPOO(O))=True
    Print "Non puoi berti 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di berti 1";
    Inc RESTODELPERSONAGGIO0(CATEGORIAO(O))
    Dec OGGETTODELPERSONAGGIO0(CATEGORIAO(O))
    Bset 1,TIPOO(O)
    Add RESISTENZAP(0),PARATIPOCO(CATEGORIAO(O))
    RESISTENZAP(0)=Min(RESISTENZAP(0),C0STITUZIONEP(0))
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%100000
   If Btst(1,TIPOO(O))=True
    Print "Non puoi ammaliarti con 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di ammaliarti con 1";
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%1000000
   If Btst(1,TIPOO(O))=True
    Print "Non puoi colpirti con 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di colpirti con 1";
    RESISTENZA=RESISTENZAP(0)
    Add RESISTENZAP(0),-PARATIPOCO(CATEGORIAO(O))
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
      If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
       Add RESISTENZAP(0),PARATIPOCO(CATEGORIAO(A))
      End If 
     End If 
    Next A
    Proc LIMITI[RESISTENZAP(0),0,RESISTENZA] : RESISTENZAP(0)=Param
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%101000000
   If Btst(1,TIPOO(O))=True
    Print "Non puoi colpirti con 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di colpirti con 1";
    RESISTENZA=RESISTENZAP(0)
    Add RESISTENZAP(0),-PARATIPOCO(CATEGORIAO(O))
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
      If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
       Add RESISTENZAP(0),PARATIPOCO(CATEGORIAO(A))
      End If 
     End If 
    Next A
    Proc LIMITI[RESISTENZAP(0),0,RESISTENZA] : RESISTENZAP(0)=Param
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%10001000000
   If Btst(1,TIPOO(O))=True
    Print "Non puoi colpirti con 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARATIPOCO(CATEGORIAO(O)) and Btst(1,TIPOO(A))=False
      OGGETTIVINCOLANTIPOSSEDUTI=True
     End If 
    Next A
    If OGGETTIVINCOLANTIPOSSEDUTI=True
     COMPIUTAAZIONE=1
     Print "Hai deciso di colpirti con 1 ";NOMESCO$(PARATIPOCO(CATEGORIAO(O)));" usando 1";
     RESISTENZA=RESISTENZAP(0)
     For A=0 To NUMEROO
      If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARATIPOCO(CATEGORIAO(O))
       V=A
      End If 
     Next A
     Add RESISTENZAP(0),-PARATIPOCO(CATEGORIAO(V))*25
     For A=0 To NUMEROO
      If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True
       If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
        Add RESISTENZAP(0),PARATIPOCO(CATEGORIAO(A))
       End If 
      End If 
     Next A
     Proc LIMITI[RESISTENZAP(0),0,RESISTENZA] : RESISTENZAP(0)=Param
    Else 
     Print "Non hai 1 ";NOMESCO$(PARATIPOCO(CATEGORIAO(O)));" da usare con 1";
     If _MUSICA=False
      Bell 1
     End If 
    End If 
   End If 
  End If 
 Else 
  If TIPOCO(CATEGORIAO(O))=%1
   If Btst(1,TIPOO(O))=True
    Print "Non puoi far mangiare a ";NOMEP$(P);" 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di far mangiare a ";NOMEP$(P);" 1";
    Dec OGGETTODELPERSONAGGIO0(CATEGORIAO(O))
    Add PESONETTOP(0),-PESOCO(CATEGORIAO(O))
    POSIZIONEO(O)=-1-P : Bset 0,TIPOO(O)
    Add PESONETTOP(P),PESOCO(CATEGORIAO(O))
    Inc OGGETTODATOOLASCIATO(CATEGORIAO(O))
    Bset 1,TIPOO(O)
    Add RESISTENZAP(P),PARATIPOCO(CATEGORIAO(O))
    RESISTENZAP(P)=Min(RESISTENZAP(P),C0STITUZIONEP(P))
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%100
   If Btst(1,TIPOO(O))=True
    Print "Non puoi difendere ";NOMEP$(P);" con 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di difendere ";NOMEP$(P);" con 1";
    Dec OGGETTODELPERSONAGGIO0(CATEGORIAO(O))
    Add PESONETTOP(0),-PESOCO(CATEGORIAO(O))
    POSIZIONEO(O)=-1-P : Bset 0,TIPOO(O)
    Add PESONETTOP(P),PESOCO(CATEGORIAO(O))
    Inc OGGETTODATOOLASCIATO(CATEGORIAO(O))
    Bset 2,TIPOO(O)
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%1000
   If Btst(1,TIPOO(O))=True
    Print "Non puoi far leggere a ";NOMEP$(P);" 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di far leggere a ";NOMEP$(P);" 1";
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%10001
   If Btst(1,TIPOO(O))=True
    Print "Non puoi far bere a ";NOMEP$(P);" 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di far bere a ";NOMEP$(P);" 1";
    Dec OGGETTODELPERSONAGGIO0(CATEGORIAO(O))
    Add PESONETTOP(0),-PESOCO(CATEGORIAO(O))
    POSIZIONEO(O)=-1-P : Bset 0,TIPOO(O)
    Add PESONETTOP(P),PESOCO(CATEGORIAO(O))
    Inc OGGETTODATOOLASCIATO(CATEGORIAO(O))
    Bset 1,TIPOO(O)
    Add RESISTENZAP(P),PARATIPOCO(CATEGORIAO(O))
    RESISTENZAP(P)=Min(RESISTENZAP(P),C0STITUZIONEP(P))
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%100000
   If Btst(1,TIPOO(O))=True
    Print "Non puoi ammaliare ";NOMEP$(P);" con 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di ammaliare ";NOMEP$(P);" con 1";
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%1000000
   If Btst(1,TIPOO(O))=True
    Print "Non puoi colpire ";NOMEP$(P);" con 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di colpire ";NOMEP$(P);" con 1";
    RESISTENZA=RESISTENZAP(P)
    Add RESISTENZAP(P),-PARATIPOCO(CATEGORIAO(O))
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
      If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
       Add RESISTENZAP(P),PARATIPOCO(CATEGORIAO(A))
      End If 
     End If 
    Next A
    Proc LIMITI[RESISTENZAP(P),0,RESISTENZA] : RESISTENZAP(P)=Param
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%101000000
   If Btst(1,TIPOO(O))=True
    Print "Non puoi colpire ";NOMEP$(P);" con 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    COMPIUTAAZIONE=1
    Print "Hai deciso di colpire ";NOMEP$(P);" con 1";
    RESISTENZA=RESISTENZAP(P)
    Add RESISTENZAP(P),-PARATIPOCO(CATEGORIAO(O))
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
      If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
       Add RESISTENZAP(P),PARATIPOCO(CATEGORIAO(A))
      End If 
     End If 
    Next A
    Proc LIMITI[RESISTENZAP(P),0,RESISTENZA] : RESISTENZAP(P)=Param
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%10001000000
   If Btst(1,TIPOO(O))=True
    Print "Non puoi colpire ";NOMEP$(P);" con 1"; : RESTO=True
    If _MUSICA=False
     Bell 1
    End If 
   Else 
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARATIPOCO(CATEGORIAO(O)) and Btst(1,TIPOO(A))=False
      OGGETTIVINCOLANTIPOSSEDUTI=True
     End If 
    Next A
    If OGGETTIVINCOLANTIPOSSEDUTI=True
     COMPIUTAAZIONE=1
     Print "Hai deciso di colpire ";NOMEP$(P);" con 1 ";NOMESCO$(PARATIPOCO(CATEGORIAO(O)));" usando 1";
     RESISTENZA=RESISTENZAP(0)
     For A=0 To NUMEROO
      If POSIZIONEO(A)=-1 and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARATIPOCO(CATEGORIAO(O))
       V=A
      End If 
     Next A
     Add RESISTENZAP(P),-PARATIPOCO(CATEGORIAO(V))*25
     If Btst(8,TIPOCO(CATEGORIAO(V)))=True
      POSIZIONEO(V)= Not P : Bset 0,TIPOO(V)
      Dec OGGETTODELPERSONAGGIO0(CATEGORIAO(V))
      Add PESONETTOP(P),PESOCO(CATEGORIAO(V))
      Inc OGGETTODATOOLASCIATO(CATEGORIAO(V))
     End If 
     For A=0 To NUMEROO
      If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
       If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
        Add RESISTENZAP(P),PARATIPOCO(CATEGORIAO(A))
       End If 
      End If 
     Next A
     Proc LIMITI[RESISTENZAP(P),0,RESISTENZA] : RESISTENZAP(P)=Param
    Else 
     Print "Non hai 1 ";NOMESCO$(PARATIPOCO(CATEGORIAO(O)));" da usare con 1";
     If _MUSICA=False
      Bell 1
     End If 
    End If 
   End If 
  End If 
 End If 
 Print " ";
 If RESTO=True
  Print NOMESRO$(CATEGORIAO(O));
 Else 
  Print NOMESCO$(CATEGORIAO(O));
 End If 
 OGGETTOUSANTE=O
 PERSONAGGIOSUCUIPERSONAGGIO0HAUSATO=P
 If P>0 and RESISTENZAP(P)=0 Then Proc MORTE[P]
 Proc _ASPETTA
 If PERSONAGGIO0DEVELEGGERE=True
  Proc MOSTRAMESSAGGIO["Lettura di 1 "+NOMESCO$(CATEGORIAO(O)),TESTOO$(TESTOO(O))]
  PERSONAGGIO0DEVELEGGERE=False
 End If 
End Proc
Procedure USASUPERSONAGGIOP[O,P,Q]
 If P=Q Then Pop Proc
 If Btst(1,TIPOO(O))=False
  If Btst(2,TIPOP(0))=False
   PERSONAGGIO0SVEGLIO=True
  End If 
  If POSIZIONEP(P)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(P)=DREZIONEPRESAP(0)
   PERSONAGGIOVISIBILE=True
  Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(0) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(0)
   PERSONAGGIOVISIBILE=True
  Else If POSIZIONEP(P)=-1-Q and Btst(0,TIPOP(P))=True
   If POSIZIONEP(P)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(P)=DREZIONEPRESAP(0)
    PERSONAGGIOVISIBILE=True
   Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(0) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(0)
    PERSONAGGIOVISIBILE=True
   End If 
  End If 
  If TIPOCO(CATEGORIAO(O))=%1
   If Q>0
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="sta facendo mangiare a "+NOMEP$(Q)+" 1"
    End If 
   Else 
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="ti sta facendo mangiare 1"
    End If 
    Inc RESTODELPERSONAGGIO0(CATEGORIAO(O))
   End If 
   Add PESONETTOP(P),-PESOCO(CATEGORIAO(O))
   POSIZIONEO(O)=-1-Q : Bset 0,TIPOO(O)
   Add PESONETTOP(Q),PESOCO(CATEGORIAO(O))
   Bset 1,TIPOO(O)
   Add RESISTENZAP(Q),PARATIPOCO(CATEGORIAO(O))
   RESISTENZAP(Q)=Min(RESISTENZAP(Q),C0STITUZIONEP(Q))
  Else If TIPOCO(CATEGORIAO(O))=%100
   If Q>0
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="sta difendendo "+NOMEP$(Q)+" con 1"
    End If 
   Else 
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="ti sta difendendo con 1"
    End If 
    Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(O))
   End If 
   Add PESONETTOP(P),-PESOCO(CATEGORIAO(O))
   POSIZIONEO(O)=-1-Q : Bset 0,TIPOO(O)
   Add PESONETTOP(Q),PESOCO(CATEGORIAO(O))
   Bset 2,TIPOO(O)
  Else If TIPOCO(CATEGORIAO(O))=%1000
   If Q>0
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="sta facendo leggere a "+NOMEP$(Q)+" 1"
    End If 
   Else 
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="ti sta facendo leggere 1" : PERSONAGGIO0DEVELEGGERE=True
    End If 
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%10001
   If Q>0
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="sta facendo bere a "+NOMEP$(Q)+" 1"
    End If 
   Else 
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="ti sta facendo bere 1"
    End If 
    Inc RESTODELPERSONAGGIO0(CATEGORIAO(O))
   End If 
   Add PESONETTOP(P),-PESOCO(CATEGORIAO(O))
   POSIZIONEO(O)=-1-Q : Bset 0,TIPOO(O)
   Add PESONETTOP(Q),PESOCO(CATEGORIAO(O))
   Bset 1,TIPOO(O)
   Add RESISTENZAP(Q),PARATIPOCO(CATEGORIAO(O))
   RESISTENZAP(Q)=Min(RESISTENZAP(Q),C0STITUZIONEP(Q))
  Else If TIPOCO(CATEGORIAO(O))=%100000
   If Q>0
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="sta ammaliando "+NOMEP$(Q)+" con 1"
    End If 
   Else 
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="ti sta ammaliando con 1"
    End If 
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%1000000
   If Q>0
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="sta colpendo "+NOMEP$(Q)+" con 1"
    End If 
   Else 
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="ti sta colpendo con 1"
    End If 
   End If 
   RESISTENZA=RESISTENZAP(Q)
   Add RESISTENZAP(Q),-PARATIPOCO(CATEGORIAO(O))
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-Q and Btst(0,TIPOO(A))=True
     If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
      Add RESISTENZAP(Q),PARATIPOCO(CATEGORIAO(A))
     End If 
    End If 
   Next A
   Proc LIMITI[RESISTENZAP(Q),0,RESISTENZA] : RESISTENZAP(Q)=Param
  Else If TIPOCO(CATEGORIAO(O))=%101000000
   If Q>0
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="sta colpendo "+NOMEP$(Q)+" con 1"
    End If 
   Else 
    If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
     AZIONE$="ti sta colpendo con 1"
    End If 
   End If 
   RESISTENZA=RESISTENZAP(Q)
   Add RESISTENZAP(Q),-PARATIPOCO(CATEGORIAO(O))
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-Q and Btst(0,TIPOO(A))=True
     If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
      Add RESISTENZAP(Q),PARATIPOCO(CATEGORIAO(A))
     End If 
    End If 
   Next A
   Proc LIMITI[RESISTENZAP(Q),0,RESISTENZA] : RESISTENZAP(Q)=Param
  Else If TIPOCO(CATEGORIAO(O))=%10001000000
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARATIPOCO(CATEGORIAO(O)) and Btst(1,TIPOO(A))=False
     OGGETTIVINCOLANTIPOSSEDUTI=True
    End If 
   Next A
   If OGGETTIVINCOLANTIPOSSEDUTI=True
    If Q>0
     If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
      AZIONE$="sta colpendo "+NOMEP$(Q)+" con 1 "+NOMESCO$(PARATIPOCO(CATEGORIAO(O)))+" usando 1"
     End If 
    Else 
     If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True
      AZIONE$="ti sta colpendo con 1 "+NOMESCO$(PARATIPOCO(CATEGORIAO(O)))+" usando 1"
     End If 
    End If 
    RESISTENZA=RESISTENZAP(Q)
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARATIPOCO(CATEGORIAO(O))
      V=A
     End If 
    Next A
    Add RESISTENZAP(Q),-PARATIPOCO(CATEGORIAO(V))*25
    If Btst(8,TIPOCO(CATEGORIAO(V)))=True
     If Q=0
      Inc OGGETTODELPERSONAGGIO0(CATEGORIAO(V))
     End If 
     POSIZIONEO(V)=-1-Q : Bset 0,TIPOO(V)
     Add PESONETTOP(Q),PESOCO(CATEGORIAO(V))
    End If 
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1-Q and Btst(0,TIPOO(A))=True
      If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
       Add RESISTENZAP(Q),PARATIPOCO(CATEGORIAO(A))
      End If 
     End If 
    Next A
    Proc LIMITI[RESISTENZAP(Q),0,RESISTENZA] : RESISTENZAP(Q)=Param
   End If 
  End If 
  If PERSONAGGIOVISIBILE=True and PERSONAGGIO0SVEGLIO=True and AZIONE$<>""
   Print NOMEP$(P);" ";AZIONE$;" ";NOMESCO$(CATEGORIAO(O))
  End If 
  If Q>0 and RESISTENZAP(Q)=0
   If PERSONAGGIOVISIBILE=True
    Proc MORTE[Q]
   End If 
  End If 
  If PERSONAGGIO0DEVELEGGERE=True
   Proc MOSTRAMESSAGGIO["Lettura di 1 "+NOMESCO$(CATEGORIAO(O)),TESTOO$(TESTOO(O))]
   PERSONAGGIO0DEVELEGGERE=False
  End If 
 End If 
End Proc
Procedure USASUUNOGGETTO[O]
 For A=0 To NUMEROCO
  If OGGETTINELLUOGO(A)>0
   Inc CATEGORIEOGGETTI
  End If 
  If RESTINELLUOGO(A)>0
   Inc CATEGORIEOGGETTI
  End If 
 Next A
 If CATEGORIEOGGETTI>0
  If CATEGORIEOGGETTI>1
   Locate 0,ULTIMALINEA : Input "Su quale oggetto vuoi usare ?>";OGGETTO$;
   Curs Off 
   If OGGETTO$<>""
    For A=0 To NUMEROO
     If POSIZIONEO(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(0)=0 and Btst(3,TIPOO(A))=False
      If Lower$(OGGETTO$)=Lower$(NOMESCO$(CATEGORIAO(A)))
       Proc USASUOGGETTO[O,A] : Exit 
      Else If Lower$(OGGETTO$)=Lower$(NOMESRO$(CATEGORIAO(A)))
       Proc USASUOGGETTO[O,A] : Exit 
      End If 
     End If 
    Next A
    If A=NUMEROO+1
     Locate 0,ULTIMALINEA : Cline : Print "Non c'è nessun ";OGGETTO$;
     If _MUSICA=False
      Bell 1
     End If 
     Proc _ASPETTA
    End If 
   End If 
  Else 
   For A=0 To NUMEROO
    If POSIZIONEO(A)=POSIZIONEP(0) and Btst(3,TIPOO(A))=False
     Proc USASUOGGETTO[O,A] : Exit 
    End If 
   Next A
  End If 
 End If 
End Proc
Procedure USASUUNPERSONAGGIO[O]
 For A=0 To NUMEROP
  If POSIZIONEP(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(A)=DREZIONEPRESAP(0)
   Inc PERSONAGGI
  Else If LUOGODIDESTINAZIONEP(A)=POSIZIONEP(0) and CAMMINOP(A)-TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEOPPOSTAAQUELLAPRESAP(A)=DREZIONEPRESAP(0)
   Inc PERSONAGGI
  End If 
 Next A
 If PERSONAGGI>1
  Locate 0,ULTIMALINEA : Input "Su quale personaggio vuoi usare ?>";PERSONAGGIO$;
  Curs Off 
  If PERSONAGGIO$<>""
   PERSONAGGIO$=Lower$(PERSONAGGIO$)
   If PERSONAGGIO$="me"
    USASUPERSONAGGIO[O,0]
   Else 
    For A=1 To NUMEROP
     If PERSONAGGIO$=Lower$(NOMEP$(A))
      If POSIZIONEP(A)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(A)=DREZIONEPRESAP(0)
       USASUPERSONAGGIO[O,A] : Exit 
      Else If LUOGODIDESTINAZIONEP(A)=POSIZIONEP(0) and CAMMINOP(A)-TEMP0DIATTRAVERSAMENTOP(A)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEOPPOSTAAQUELLAPRESAP(A)=DREZIONEPRESAP(0)
       USASUPERSONAGGIO[O,A] : Exit 
      End If 
     End If 
    Next A
    If A=NUMEROP+1
     Locate 0,ULTIMALINEA : Cline : Print "Non c'è nessun ";PERSONAGGIO$;
     If _MUSICA=False
      Bell 1
     End If 
     Proc _ASPETTA
    End If 
   End If 
  End If 
 Else 
  USASUPERSONAGGIO[O,0]
 End If 
End Proc
Procedure USATI[O,P]
 If Btst(1,TIPOO(O))=False
  If Btst(2,TIPOP(0))=False
   If POSIZIONEP(P)=POSIZIONEP(0) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEPRESAP(P)=DREZIONEPRESAP(0)
    PERSONAGGIOVISIBILE=True
   Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(0) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(0) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(0)
    PERSONAGGIOVISIBILE=True
   Else If POSIZIONEP(P)=-1 and Btst(0,TIPOP(P))=True
    PERSONAGGIOVISIBILE=True
   End If 
  End If 
  If PERSONAGGIOVISIBILE=True
   Print NOMEP$(P);" ";
  End If 
  If TIPOCO(CATEGORIAO(O))=%1
   If PERSONAGGIOVISIBILE=True
    Print "si sta mangiando 1";
   End If 
   Bset 1,TIPOO(O)
   If RESISTENZAP(P)<C0STITUZIONEP(P)
    Inc RESISTENZAP(P)
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%100
   If PERSONAGGIOVISIBILE=True
    Print "si sta difendendo con 1";
   End If 
   Bset 2,TIPOO(O)
  Else If TIPOCO(CATEGORIAO(O))=%1000
   If PERSONAGGIOVISIBILE=True
    Print "si sta leggendo 1";
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%10001
   If PERSONAGGIOVISIBILE=True
    Print "si sta bevendo 1";
   End If 
   Bset 1,TIPOO(O)
   If RESISTENZAP(P)<C0STITUZIONEP(P)
    Inc RESISTENZAP(P)
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%100000
   If PERSONAGGIOVISIBILE=True
    Print "si sta ammaliando con 1";
   End If 
  Else If TIPOCO(CATEGORIAO(O))=%1000000
   If PERSONAGGIOVISIBILE=True
    Print "si colpisce con 1";
   End If 
   RESISTENZA=RESISTENZAP(P)
   Add RESISTENZAP(P),-PARATIPOCO(CATEGORIAO(O))
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
     If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=False
      Add RESISTENZAP(P),PARATIPOCO(CATEGORIAO(A))
     End If 
    End If 
   Next A
   Proc LIMITI[RESISTENZAP(P),0,RESISTENZA] : RESISTENZAP(P)=Param
  Else If TIPOCO(CATEGORIAO(O))=%101000000
   If PERSONAGGIOVISIBILE=True
    Print "si colpisce con 1";
   End If 
   RESISTENZA=RESISTENZAP(P)
   Add RESISTENZAP(P),-PARATIPOCO(CATEGORIAO(O))
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
     If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
      Add RESISTENZAP(P),PARATIPOCO(CATEGORIAO(A))
     End If 
    End If 
   Next A
   Proc LIMITI[RESISTENZAP(P),0,RESISTENZA] : RESISTENZAP(P)=Param
  Else If TIPOCO(CATEGORIAO(O))=%10001000000
   For A=0 To NUMEROO
    If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARATIPOCO(CATEGORIAO(O)) and Btst(1,TIPOO(A))=False
     OGGETTIVINCOLANTIPOSSEDUTI=True
    End If 
   Next A
   If OGGETTIVINCOLANTIPOSSEDUTI=True
    If PERSONAGGIOVISIBILE=True
     Print "si colpisce con 1 ";NOMESCO$(PARATIPOCO(CATEGORIAO(O)));" usando 1";
    End If 
    RESISTENZA=RESISTENZAP(0)
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARATIPOCO(CATEGORIAO(O))
      V=A
     End If 
    Next A
    Add RESISTENZAP(P),-PARATIPOCO(CATEGORIAO(V))*25
    For A=0 To NUMEROO
     If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
      If Btst(2,TIPOCO(CATEGORIAO(A)))=True and Btst(2,TIPOO(A))=True
       Add RESISTENZAP(P),PARATIPOCO(CATEGORIAO(A))
      End If 
     End If 
    Next A
    Proc LIMITI[RESISTENZAP(P),0,RESISTENZA] : RESISTENZAP(P)=Param
   End If 
  End If 
  If PERSONAGGIOVISIBILE=True
   Print " ";NOMESCO$(CATEGORIAO(O))
  End If 
  If P>0 and RESISTENZAP(P)=0
   If PERSONAGGIOVISIBILE=True
    Proc MORTE[P]
   End If 
  End If 
 End If 
End Proc
Procedure USATIUNO[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 Proc USATI[A,P]
End Proc
Procedure USATIUNOA[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARAAAZIONEP(AZIONE,P)
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARAAAZIONEP(AZIONE,P)
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 Proc USATI[A,P]
End Proc
Procedure USATIUNOTA[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(A))=PARAAAZIONEP(AZIONE,P)
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(A))=PARAAAZIONEP(AZIONE,P)
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 Proc USATI[A,P]
End Proc
Procedure USAUNOSUAO[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 For B=0 To NUMEROO
  If POSIZIONEO(B)=POSIZIONEP(P)
   USASUOGGETTOP[A,P,B]
   Dec PARAAAZIONEP(AZIONE,P)
   If PARAAAZIONEP(AZIONE,P)=0
    FINEA(AZIONE,P)=True
   End If 
   Exit 
  End If 
 Next B
End Proc
Procedure USAUNOSUAOB[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(B)=PARABAZIONEP(AZIONE,P)
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(B)=PARABAZIONEP(AZIONE,P)
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 For B=0 To NUMEROO
  If POSIZIONEO(B)=POSIZIONEP(P) and CATEGORIAO(B)=PARABAZIONEP(AZIONE,P)
   USASUOGGETTOP[A,P,B]
   Dec PARAAAZIONEP(AZIONE,P)
   If PARAAAZIONEP(AZIONE,P)=0
    FINEA(AZIONE,P)=True
   End If 
   Exit 
  End If 
 Next B
End Proc
Procedure USAUNOSUAOTB[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(B))=PARABAZIONEP(AZIONE,P)
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(B))=PARABAZIONEP(AZIONE,P)
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 For B=0 To NUMEROO
  If POSIZIONEO(B)=POSIZIONEP(P) and TIPOCO(CATEGORIAO(B))=PARABAZIONEP(AZIONE,P)
   USASUOGGETTOP[A,P,B]
   Dec PARAAAZIONEP(AZIONE,P)
   If PARAAAZIONEP(AZIONE,P)=0
    FINEA(AZIONE,P)=True
   End If 
   Exit 
  End If 
 Next B
End Proc
Procedure USAUNOSUAP[AZIONE,P]
 A=Rnd(NUMEROP) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
    USASUPERSONAGGIOP[A,P,PERSONAGGIOTROVATO]
    Dec PARAAAZIONEP(AZIONE,P)
    If PARAAAZIONEP(AZIONE,P)=0
     FINEA(AZIONE,P)=True
    End If 
    Exit 
   End If 
  Next A
 End If 
End Proc
Procedure USAUNOSUPA[AZIONE,P]
 A=PARAAAZIONEP(AZIONE,P)
 For B=0 To NUMEROO
  If POSIZIONEO(B)=-1-P and Btst(0,TIPOO(B))=True
   If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
    Proc USASUPERSONAGGIOP[B,P,A]
    Exit 
   Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
    Proc USASUPERSONAGGIOP[B,P,A]
    Exit 
   Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
    Proc USASUPERSONAGGIOP[B,P,A]
    Exit 
   End If 
  End If 
 Next B
End Proc
Procedure USAUNOASUBO[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 For B=0 To NUMEROO
  If POSIZIONEO(B)=POSIZIONEP(P)
   USASUOGGETTOP[A,P,B]
   Dec PARABAZIONEP(AZIONE,P)
   If PARABAZIONEP(AZIONE,P)=0
    FINEA(AZIONE,P)=True
   End If 
   Exit 
  End If 
 Next B
End Proc
Procedure USAUNOASUBOC[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARAAAZIONEP(AZIONE,P)
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARAAAZIONEP(AZIONE,P)
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 For B=0 To NUMEROO
  If POSIZIONEO(B)=POSIZIONEP(P) and CATEGORIAO(B)=PARACAZIONEP(AZIONE,P)
   USASUOGGETTOP[A,P,B]
   Dec PARABAZIONEP(AZIONE,P)
   If PARABAZIONEP(AZIONE,P)=0
    FINEA(AZIONE,P)=True
   End If 
   Exit 
  End If 
 Next B
End Proc
Procedure USAUNOASUBOTC[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARAAAZIONEP(AZIONE,P)
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARAAAZIONEP(AZIONE,P)
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 For B=0 To NUMEROO
  If POSIZIONEO(B)=POSIZIONEP(P) and TIPOCO(CATEGORIAO(B))=PARACAZIONEP(AZIONE,P)
   USASUOGGETTOP[A,P,B]
   Dec PARABAZIONEP(AZIONE,P)
   If PARABAZIONEP(AZIONE,P)=0
    FINEA(AZIONE,P)=True
   End If 
   Exit 
  End If 
 Next B
End Proc
Procedure USAUNOASUBP[AZIONE,P]
 A=Rnd(NUMEROP) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(A)=PARAAAZIONEP(AZIONE,P)
    USASUPERSONAGGIOP[A,P,B]
    Dec PARABAZIONEP(AZIONE,P)
    If PARABAZIONEP(AZIONE,P)=0
     FINEA(AZIONE,P)=True
    End If 
    Exit 
   End If 
  Next A
 End If 
End Proc
Procedure USAUNOASUPB[AZIONE,P]
 A=PARABAZIONEP(AZIONE,P)
 For B=0 To NUMEROO
  If POSIZIONEO(B)=-1-P and Btst(0,TIPOO(B))=True and CATEGORIAO(B)=PARAAAZIONEP(AZIONE,P)
   If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
    Proc USASUPERSONAGGIOP[B,P,A]
    Exit 
   Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
    Proc USASUPERSONAGGIOP[B,P,A]
    Exit 
   Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
    Proc USASUPERSONAGGIOP[B,P,A]
    Exit 
   End If 
  End If 
 Next B
End Proc
Procedure USAUNOTASUBO[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 For B=0 To NUMEROO
  If POSIZIONEO(B)=POSIZIONEP(P)
   USASUOGGETTOP[A,P,B]
   Dec PARABAZIONEP(AZIONE,P)
   If PARABAZIONEP(AZIONE,P)=0
    FINEA(AZIONE,P)=True
   End If 
   Exit 
  End If 
 Next B
End Proc
Procedure USAUNOTASUBOC[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(B)=PARACAZIONEP(AZIONE,P)
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and CATEGORIAO(B)=PARACAZIONEP(AZIONE,P)
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 For B=0 To NUMEROO
  If POSIZIONEO(B)=POSIZIONEP(P) and CATEGORIAO(B)=PARACAZIONEP(AZIONE,P)
   USASUOGGETTOP[A,P,B]
   Dec PARABAZIONEP(AZIONE,P)
   If PARABAZIONEP(AZIONE,P)=0
    FINEA(AZIONE,P)=True
   End If 
   Exit 
  End If 
 Next B
End Proc
Procedure USAUNOTASUBOTC[AZIONE,P]
 NUMEROOGGETTODELPERSONAGGIOP=-1
 For A=0 To NUMEROO
  If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
   Inc NUMEROOGGETTODELPERSONAGGIOP
   B=A
  End If 
 Next A
 If NUMEROOGGETTODELPERSONAGGIOP=-1
  Pop Proc
 End If 
 If NUMEROOGGETTODELPERSONAGGIOP=0
  A=B
 Else 
  Dim OGGETTODELPERSONAGGIOP(NUMEROOGGETTODELPERSONAGGIOP)
  B=0
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True
    OGGETTODELPERSONAGGIOP(B)=A
    Inc B
   End If 
  Next A
  A=OGGETTODELPERSONAGGIOP(Rnd(NUMEROOGGETTODELPERSONAGGIOP))
 End If 
 For B=0 To NUMEROO
  If POSIZIONEO(B)=POSIZIONEP(P) and TIPOCO(CATEGORIAO(B))=PARACAZIONEP(AZIONE,P)
   USASUOGGETTOP[A,P,B]
   Dec PARABAZIONEP(AZIONE,P)
   If PARABAZIONEP(AZIONE,P)=0
    FINEA(AZIONE,P)=True
   End If 
   Exit 
  End If 
 Next B
End Proc
Procedure USAUNOTASUBP[AZIONE,P]
 A=Rnd(NUMEROP) : PERSONAGGIOTROVATO=-1
 If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
  PERSONAGGIOTROVATO=A
 Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
  PERSONAGGIOTROVATO=A
 Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
  PERSONAGGIOTROVATO=A
 End If 
 If PERSONAGGIOTROVATO>-1
  For A=0 To NUMEROO
   If POSIZIONEO(A)=-1-P and Btst(0,TIPOO(A))=True and TIPOCO(CATEGORIAO(A))=PARAAAZIONEP(AZIONE,P)
    USASUPERSONAGGIOP[A,P,B]
    Dec PARABAZIONEP(AZIONE,P)
    If PARABAZIONEP(AZIONE,P)=0
     FINEA(AZIONE,P)=True
    End If 
    Exit 
   End If 
  Next A
 End If 
End Proc
Procedure USAUNOTASUPB[AZIONE,P]
 A=PARABAZIONEP(AZIONE,P)
 For B=0 To NUMEROO
  If POSIZIONEO(B)=-1-P and Btst(0,TIPOO(B))=True and TIPOCO(CATEGORIAO(B))=PARAAAZIONEP(AZIONE,P)
   If POSIZIONEP(P)=POSIZIONEP(A) and TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEPRESAP(P)=DREZIONEPRESAP(A) and Btst(0,TIPOP(P))=Btst(0,TIPOP(A))
    Proc USASUPERSONAGGIOP[B,P,A]
    Exit 
   Else If LUOGODIDESTINAZIONEP(P)=POSIZIONEP(A) and CAMMINOP(P)-TEMP0DIATTRAVERSAMENTOP(P)=TEMP0DIATTRAVERSAMENTOP(A) and DREZIONEOPPOSTAAQUELLAPRESAP(P)=DREZIONEPRESAP(A)
    Proc USASUPERSONAGGIOP[B,P,A]
    Exit 
   Else If POSIZIONEP(P)=-1-A and Btst(0,TIPOP(P))=True
    Proc USASUPERSONAGGIOP[B,P,A]
    Exit 
   End If 
  End If 
 Next B
End Proc
