home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fatal Distractions!
/
fataldistractions.bin
/
chap01
/
adventur
/
wizard.for
< prev
next >
Wrap
Text File
|
1990-11-23
|
1KB
|
61 lines
LOGICAL FUNCTION WIZARD(DUMMY)
C ASK IF HE'S A WIZARD. IF HE SAYS YES, MAKE HIM PROVE IT. RETURN TRUE IF HE
C REALLY IS A WIZARD.
IMPLICIT INTEGER*4 (A-Z)
LOGICAL YESM,WIZ
DIMENSION HNAME(4),VAL(4)
COMMON /WIZCOM/WKDAY,WKEND,HOLID,HBEGIN,HEND,HNAME,
1 SHORT,MAGIC,MAGNM,LATNCY,SAVED,SAVET,SETUP,WIZ
WIZARD=YESM(16,0,7)
IF(.NOT.WIZARD) RETURN
C HE SAYS HE IS. FIRST STEP: DOES HE KNOW ANYTHING MAGICAL?
CALL MSPEAK(17)
CALL GETIN(WORD,X,Y,Z)
IF(WORD.NE.MAGIC) GOTO 99
C
C HE DOES. GIVE HIM A RANDOM CHALLENGE AND CHECK HIS REPLY.
C
CALL DATIME(D,T)
T=T*2+1
WORD='@@@@'
DO 15 Y=1,4
X=79+MOD(D,4)
D=D/4
DO 12 Z=1,X
12 T=MOD(T*1027,1048576)
VAL(Y)=(T*26)/1048576+1
15 WORD=WORD+SHIFT(VAL(Y),32-8*Y)
IF(YESM(18,0,0)) GOTO 99
WRITE(*,18) WORD
18 FORMAT(/1X,A4)
CALL GETIN(WORD,X,Y,Z)
CALL DATIME(D,T)
T=(T/60)*40+(T/10)*10
D=MAGNM
DO 19 Y=1,4
Z=MOD(Y,4)+1
X=MOD(IABS(VAL(Y)-VAL(Z))*MOD(D,10)+MOD(T,10),26)+1
T=T/10
D=D/10
19 WORD=WORD-SHIFT(X,32-8*Y)
IF(WORD.NE.'@@@@') GOTO 99
C BY GEORGE, HE REALLY *IS* A WIZARD!
100 CALL MSPEAK(19)
WIZ=.TRUE.
RETURN
C AHA! AN IMPOSTOR!
99 CALL MSPEAK(20)
WIZARD=.FALSE.
RETURN
END