home *** CD-ROM | disk | FTP | other *** search
/ Fatal Distractions! / fataldistractions.bin / chap01 / adventur / wizard.for < prev    next >
Text File  |  1990-11-23  |  1KB  |  61 lines

  1.       LOGICAL FUNCTION WIZARD(DUMMY)
  2.       
  3. C  ASK IF HE'S A WIZARD.  IF HE SAYS YES, MAKE HIM PROVE IT.  RETURN TRUE IF HE
  4. C  REALLY IS A WIZARD.
  5.  
  6.       IMPLICIT INTEGER*4 (A-Z)
  7.       LOGICAL YESM,WIZ
  8.       DIMENSION HNAME(4),VAL(4)
  9.       COMMON /WIZCOM/WKDAY,WKEND,HOLID,HBEGIN,HEND,HNAME,
  10.      1        SHORT,MAGIC,MAGNM,LATNCY,SAVED,SAVET,SETUP,WIZ
  11.      
  12.       WIZARD=YESM(16,0,7)
  13.       IF(.NOT.WIZARD) RETURN
  14.       
  15. C  HE SAYS HE IS.  FIRST STEP:  DOES HE KNOW ANYTHING MAGICAL?
  16.  
  17.       CALL MSPEAK(17)
  18.       CALL GETIN(WORD,X,Y,Z)
  19.       IF(WORD.NE.MAGIC) GOTO 99
  20.       
  21. C
  22. C  HE DOES.  GIVE HIM A RANDOM CHALLENGE AND CHECK HIS REPLY.
  23. C
  24.       CALL DATIME(D,T)
  25.       T=T*2+1
  26.       WORD='@@@@'
  27.       DO 15 Y=1,4
  28.       X=79+MOD(D,4)
  29.       D=D/4
  30.       DO 12 Z=1,X
  31.    12 T=MOD(T*1027,1048576)
  32.       VAL(Y)=(T*26)/1048576+1
  33.    15 WORD=WORD+SHIFT(VAL(Y),32-8*Y)
  34.       IF(YESM(18,0,0)) GOTO 99
  35.       WRITE(*,18) WORD
  36.    18 FORMAT(/1X,A4)
  37.       CALL GETIN(WORD,X,Y,Z)
  38.       CALL DATIME(D,T)
  39.       T=(T/60)*40+(T/10)*10
  40.       D=MAGNM
  41.       DO 19 Y=1,4
  42.       Z=MOD(Y,4)+1
  43.       X=MOD(IABS(VAL(Y)-VAL(Z))*MOD(D,10)+MOD(T,10),26)+1
  44.       T=T/10
  45.       D=D/10
  46.    19 WORD=WORD-SHIFT(X,32-8*Y)
  47.       IF(WORD.NE.'@@@@') GOTO 99
  48.       
  49. C  BY GEORGE, HE REALLY *IS* A WIZARD!
  50.  
  51.   100 CALL MSPEAK(19)
  52.       WIZ=.TRUE.
  53.       RETURN
  54.       
  55. C  AHA!  AN IMPOSTOR!
  56.  
  57.    99 CALL MSPEAK(20)
  58.       WIZARD=.FALSE.
  59.       RETURN
  60.       END
  61.