807 lines
22 KiB
Plaintext
807 lines
22 KiB
Plaintext
|
|
||
|
|
||
|
.FUNCT V-SPELLS,CNT,S,ANY=0,OS=0,TMP
|
||
|
GET ALL-SPELLS,0 >CNT
|
||
|
PRINTI "The gnusto spell, the only thing you seem to have learned well after many years at the University, remains yours forever. Other than that, you have "
|
||
|
?PRG3: ZERO? CNT \?CND5
|
||
|
ZERO? OS /?CND8
|
||
|
CALL SPELL-PRINT,OS,ANY,TRUE-VALUE
|
||
|
SET 'ANY,TRUE-VALUE
|
||
|
?CND8: ZERO? ANY \?ELS14
|
||
|
PRINTI "no spells memorized."
|
||
|
JUMP ?CND12
|
||
|
?ELS14: PRINTI " committed to memory."
|
||
|
?CND12: CRLF
|
||
|
RTRUE
|
||
|
?CND5: GET ALL-SPELLS,CNT
|
||
|
CALL SPELL-TIMES,STACK >TMP
|
||
|
ZERO? TMP /?CND21
|
||
|
ZERO? OS /?CND24
|
||
|
CALL SPELL-PRINT,OS,ANY
|
||
|
SET 'ANY,TRUE-VALUE
|
||
|
?CND24: SET 'OS,TMP
|
||
|
?CND21: DEC 'CNT
|
||
|
JUMP ?PRG3
|
||
|
|
||
|
|
||
|
.FUNCT SPELL-TIMES,S
|
||
|
GETP S,P?COUNT
|
||
|
GRTR? STACK,0 \FALSE
|
||
|
IN? S,SPELL-BOOK \?ELS10
|
||
|
RETURN S
|
||
|
?ELS10: EQUAL? S,DISPEL-SPELL \?ELS12
|
||
|
IN? DISPEL-SPELL,DISPEL-SCROLL /?ELS12
|
||
|
RETURN S
|
||
|
?ELS12: EQUAL? S,BANISH-SPELL \FALSE
|
||
|
IN? BANISH-SPELL,BANISH-SCROLL /FALSE
|
||
|
RETURN S
|
||
|
|
||
|
|
||
|
.FUNCT SPELL-PRINT,S,ANY,PAND?=0,CNT
|
||
|
ZERO? ANY /?CND1
|
||
|
ZERO? PAND? /?ELS7
|
||
|
PRINTI " and "
|
||
|
JUMP ?CND1
|
||
|
?ELS7: PRINTI ", "
|
||
|
?CND1: PRINTI "the "
|
||
|
PRINTD S
|
||
|
GETP S,P?COUNT >CNT
|
||
|
GRTR? CNT,5 \?ELS19
|
||
|
PRINTI " many times"
|
||
|
RETURN S
|
||
|
?ELS19: PRINTI " "
|
||
|
SUB CNT,1
|
||
|
GET COUNTERS,STACK
|
||
|
PRINT STACK
|
||
|
RETURN S
|
||
|
|
||
|
|
||
|
.FUNCT SPELL-BOOK-F,F
|
||
|
FIRST? SPELL-BOOK >F /?KLU28
|
||
|
?KLU28: EQUAL? PRSA,V?EXAMINE \?ELS5
|
||
|
PRINTR "The title is ""My Spell Book"". The book looks pretty new, and it doesn't seem to have much written in it yet. There are some spells written in the book in glowing letters, with marginal notes about how to cast them and what their effects are."
|
||
|
?ELS5: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS9
|
||
|
PRINTR "Thanks to its magic properties, the spell book is always open to the right place at the right time, but it is also always closed. This innovation eliminates tedious page turning and hunting for spells in tight situations. Many wizardly lives have been saved by this small advance in magical technology."
|
||
|
?ELS9: EQUAL? PRSA,V?READ \FALSE
|
||
|
ZERO? LIT \?CND14
|
||
|
PRINTI "Though it is dark, the magic writing of your spells casts enough light that you can read them."
|
||
|
CRLF
|
||
|
?CND14: PRINTI "
|
||
|
My Spell Book
|
||
|
|
||
|
"
|
||
|
?PRG21: ZERO? F /TRUE
|
||
|
PRINTI "The "
|
||
|
PRINTD F
|
||
|
PRINTI " ("
|
||
|
GETP F,P?TEXT
|
||
|
PRINT STACK
|
||
|
PRINTI ")."
|
||
|
CRLF
|
||
|
NEXT? F >F /?KLU29
|
||
|
?KLU29: JUMP ?PRG21
|
||
|
|
||
|
|
||
|
.FUNCT SPELL-CHECK,TBL,WRD,OBJ=0
|
||
|
EQUAL? WRD,W?GNUSTO \?ELS3
|
||
|
SET 'OBJ,WRITE-MAGIC-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS3: EQUAL? WRD,W?FROTZ \?ELS5
|
||
|
SET 'OBJ,LIGHT-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS5: EQUAL? WRD,W?OZMOO \?ELS7
|
||
|
SET 'OBJ,CHEAT-DEATH-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS7: EQUAL? WRD,W?ZIFMIA \?ELS9
|
||
|
SET 'OBJ,SUMMON-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS9: EQUAL? WRD,W?VAXUM \?ELS11
|
||
|
SET 'OBJ,CHARM-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS11: EQUAL? WRD,W?REZROV \?ELS13
|
||
|
SET 'OBJ,OPEN-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS13: EQUAL? WRD,W?NITFOL \?ELS15
|
||
|
SET 'OBJ,TALK-TO-ANIMALS-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS15: EQUAL? WRD,W?EXEX \?ELS17
|
||
|
SET 'OBJ,HASTE-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS17: EQUAL? WRD,W?KULCAD \?ELS19
|
||
|
SET 'OBJ,DISPEL-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS19: EQUAL? WRD,W?MELBOR \?ELS21
|
||
|
SET 'OBJ,PROTECTION-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS21: EQUAL? WRD,W?BLORB \?ELS23
|
||
|
SET 'OBJ,STRONG-BOX-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS23: EQUAL? WRD,W?GUNCHO \?ELS25
|
||
|
SET 'OBJ,BANISH-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS25: EQUAL? WRD,W?KREBF \?ELS27
|
||
|
SET 'OBJ,REPAIR-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS27: EQUAL? WRD,W?CLEESH \?ELS29
|
||
|
SET 'OBJ,NEWT-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS29: EQUAL? WRD,W?IZYUK \?ELS31
|
||
|
SET 'OBJ,FLY-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS31: EQUAL? WRD,W?GONDAR \?ELS33
|
||
|
SET 'OBJ,QUENCH-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS33: EQUAL? WRD,W?FILFRE \?CND1
|
||
|
SET 'OBJ,CREDITS-SPELL
|
||
|
?CND1: ZERO? OBJ /TRUE
|
||
|
CALL OBJ-FOUND,OBJ,TBL
|
||
|
RTRUE
|
||
|
|
||
|
|
||
|
.FUNCT PRE-QUICK-CAST,MEM?,SPELL,SCROLL
|
||
|
EQUAL? PRSA,V?GNUSTO \?ELS5
|
||
|
PUSH WRITE-MAGIC-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS5: EQUAL? PRSA,V?FROTZ \?ELS7
|
||
|
PUSH LIGHT-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS7: EQUAL? PRSA,V?OZMOO \?ELS9
|
||
|
PUSH CHEAT-DEATH-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS9: EQUAL? PRSA,V?ZIFMIA \?ELS11
|
||
|
PUSH SUMMON-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS11: EQUAL? PRSA,V?VAXUM \?ELS13
|
||
|
PUSH CHARM-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS13: EQUAL? PRSA,V?REZROV \?ELS15
|
||
|
PUSH OPEN-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS15: EQUAL? PRSA,V?NITFOL \?ELS17
|
||
|
PUSH TALK-TO-ANIMALS-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS17: EQUAL? PRSA,V?EXEX \?ELS19
|
||
|
PUSH HASTE-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS19: EQUAL? PRSA,V?KULCAD \?ELS21
|
||
|
PUSH DISPEL-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS21: EQUAL? PRSA,V?MELBOR \?ELS23
|
||
|
PUSH PROTECTION-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS23: EQUAL? PRSA,V?BLORB \?ELS25
|
||
|
PUSH STRONG-BOX-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS25: EQUAL? PRSA,V?GUNCHO \?ELS27
|
||
|
PUSH BANISH-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS27: EQUAL? PRSA,V?GONDAR \?ELS29
|
||
|
PUSH QUENCH-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS29: EQUAL? PRSA,V?KREBF \?ELS31
|
||
|
PUSH REPAIR-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS31: EQUAL? PRSA,V?CLEESH \?ELS33
|
||
|
PUSH NEWT-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS33: EQUAL? PRSA,V?IZYUK \?ELS35
|
||
|
PUSH FLY-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS35: EQUAL? PRSA,V?FILFRE \?ELS37
|
||
|
PUSH CREDITS-SPELL
|
||
|
JUMP ?CND1
|
||
|
?ELS37: PRINTR "**OOOPS!**"
|
||
|
?CND1: SET 'SPELL,STACK
|
||
|
FSET? SPELL,RMUNGBIT \?CND42
|
||
|
PRINTR "The spell is defaced beyond recognition."
|
||
|
?CND42: LOC SPELL >SCROLL
|
||
|
ZERO? SCROLL /?CND47
|
||
|
FSET? SCROLL,SCROLLBIT \?CND47
|
||
|
IN? SCROLL,WINNER \?ELS54
|
||
|
REMOVE SCROLL
|
||
|
EQUAL? PRSO,KRILL /?CND55
|
||
|
PRINTI "As you cast the spell, the "
|
||
|
PRINTD SCROLL
|
||
|
PRINTI " vanishes!"
|
||
|
CRLF
|
||
|
?CND55: PUTP SPELL,P?COUNT,1
|
||
|
JUMP ?CND47
|
||
|
?ELS54: FSET? SPELL,TOUCHBIT /?THN62
|
||
|
IN? SCROLL,HERE \?ELS61
|
||
|
?THN62: PRINTI "You don't have the "
|
||
|
PRINTD SPELL
|
||
|
PRINTR " memorized, nor do you have the scroll on which it is written."
|
||
|
?ELS61: PRINTI "The "
|
||
|
PRINTD SPELL
|
||
|
PRINTR " is not committed to memory, and you haven't seen any scroll on which it is written."
|
||
|
?CND47: GETP SPELL,P?COUNT >MEM?
|
||
|
EQUAL? SPELL,WRITE-MAGIC-SPELL /FALSE
|
||
|
GRTR? MEM?,0 /?ELS76
|
||
|
PRINTI "You don't have the "
|
||
|
PRINTD SPELL
|
||
|
PRINTR " committed to memory!"
|
||
|
?ELS76: SUB MEM?,1
|
||
|
PUTP SPELL,P?COUNT,STACK
|
||
|
INC 'SPELL-ROOM
|
||
|
EQUAL? PRSA,V?GUNCHO,V?KULCAD \FALSE
|
||
|
CALL QUEUE,MORE-PROBE,1
|
||
|
PUT STACK,0,1
|
||
|
RFALSE
|
||
|
|
||
|
|
||
|
.FUNCT SCROLL-F,SPELL
|
||
|
EQUAL? PRSA,V?TAKE \?ELS5
|
||
|
FIRST? PRSO >SPELL /?KLU41
|
||
|
?KLU41: FSET SPELL,TOUCHBIT
|
||
|
RFALSE
|
||
|
?ELS5: EQUAL? PRSA,V?CUT \?ELS7
|
||
|
EQUAL? PRSI,MAGIC-KNIFE \?ELS7
|
||
|
REMOVE PRSO
|
||
|
PRINTR "The magic dagger reduces the scroll to shreds. The shreds shrivel up into tiny spitballs. The spitballs evaporate."
|
||
|
?ELS7: EQUAL? PRSA,V?BURN \?ELS13
|
||
|
EQUAL? PRSI,ETERNAL-FLAME \?ELS13
|
||
|
REMOVE PRSO
|
||
|
PRINTI "The "
|
||
|
PRINTD PRSO
|
||
|
PRINTR " burns cheerily. Interestingly, the flame is sort of purple and rather bright. Not even ashes remain."
|
||
|
?ELS13: EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
|
||
|
FIRST? PRSO >SPELL \?ELS24
|
||
|
FSET? SPELL,RMUNGBIT \?CND25
|
||
|
PRINTR "The scroll is defaced. The spell on it cannot be read."
|
||
|
?CND25: PRINTI "The scroll reads """
|
||
|
PRINTD SPELL
|
||
|
PRINTI ": "
|
||
|
GETP SPELL,P?TEXT
|
||
|
PRINT STACK
|
||
|
PRINTI """."
|
||
|
EQUAL? SPELL,BANISH-SPELL,DISPEL-SPELL \?CND32
|
||
|
PRINTI " The spell seems very long and extremely complicated."
|
||
|
?CND32: CRLF
|
||
|
RTRUE
|
||
|
?ELS24: PRINTR "Nothing useful can be made out on the scroll."
|
||
|
|
||
|
|
||
|
.FUNCT SPELL-F,MEM?,FORGET=0
|
||
|
EQUAL? PRSA,V?READ \?ELS5
|
||
|
IN? PRSO,SPELL-BOOK /FALSE
|
||
|
LOC PRSO
|
||
|
IN? STACK,WINNER /FALSE
|
||
|
PRINTR "You can't do that without having the spell in your book or on a scroll in your hand."
|
||
|
?ELS5: EQUAL? PRSA,V?LEARN,V?MEMORIZE \?ELS16
|
||
|
IN? PRSO,SPELL-BOOK /?ELS21
|
||
|
LOC PRSO
|
||
|
IN? STACK,WINNER \?ELS26
|
||
|
PRINTR "You haven't written that spell into your book yet. Until you do, you can't memorize the spell."
|
||
|
?ELS26: CALL V-LEARN
|
||
|
RSTACK
|
||
|
?ELS21: IN? SPELL-BOOK,WINNER /?ELS32
|
||
|
PRINTR "You don't have your spell book. How do you expect to memorize a spell without a spell book?"
|
||
|
?ELS32: EQUAL? PRSO,WRITE-MAGIC-SPELL \?ELS36
|
||
|
PRINTR "You already know that spell by heart."
|
||
|
?ELS36: ZERO? LIT \?ELS40
|
||
|
PRINTR "It will be hard to learn that spell in the dark."
|
||
|
?ELS40: GETP PRSO,P?COUNT >MEM?
|
||
|
ZERO? SPELL-ROOM \?ELS47
|
||
|
EQUAL? SPELL-MAX,1 \?ELS50
|
||
|
PRINTR "You can't concentrate well enough to learn the spell."
|
||
|
?ELS50: EQUAL? MEM?,SPELL-MAX \?ELS54
|
||
|
JUMP ?CND45
|
||
|
?ELS54: CALL FORGET-SPELL,PRSO
|
||
|
INC 'MEM?
|
||
|
PUTP PRSO,P?COUNT,MEM?
|
||
|
SET 'FORGET,TRUE-VALUE
|
||
|
JUMP ?CND45
|
||
|
?ELS47: DEC 'SPELL-ROOM
|
||
|
INC 'MEM?
|
||
|
PUTP PRSO,P?COUNT,MEM?
|
||
|
?CND45: PRINTI "Using your best study habits, you learn the "
|
||
|
PRINTD PRSO
|
||
|
GRTR? MEM?,1 \?CND61
|
||
|
PRINTI " yet another time"
|
||
|
?CND61: PRINTI "."
|
||
|
CRLF
|
||
|
ZERO? FORGET /TRUE
|
||
|
PRINTR "You have so much buzzing around in your head, though, that it's likely that something may have been forgotten in the shuffle."
|
||
|
?ELS16: EQUAL? PRSA,V?DROP,V?TAKE \FALSE
|
||
|
CALL PICK-ONE,YUKS
|
||
|
PRINT STACK
|
||
|
CRLF
|
||
|
RTRUE
|
||
|
|
||
|
|
||
|
.FUNCT FORGET-SPELL,SPL,NSPL,F,CNT,TBL,NUM=0,SP=0
|
||
|
FIRST? SPELL-BOOK >F /?KLU26
|
||
|
?KLU26: SET 'TBL,FORGET-TBL
|
||
|
?PRG1: ZERO? F \?ELS5
|
||
|
JUMP ?REP2
|
||
|
?ELS5: GETP F,P?COUNT >CNT
|
||
|
GRTR? CNT,0 \?CND3
|
||
|
?PRG8: SET 'SP,F
|
||
|
PUT TBL,1,F
|
||
|
INC 'NUM
|
||
|
ADD TBL,2 >TBL
|
||
|
DLESS? 'CNT,1 \?PRG8
|
||
|
?CND3: NEXT? F >F /?KLU27
|
||
|
?KLU27: JUMP ?PRG1
|
||
|
?REP2: GRTR? NUM,0 \?CND13
|
||
|
GETP SP,P?COUNT
|
||
|
EQUAL? STACK,NUM \?CND13
|
||
|
SUB NUM,1
|
||
|
PUTP SP,P?COUNT,STACK
|
||
|
RTRUE
|
||
|
?CND13: PUT FORGET-TBL,0,NUM
|
||
|
ZERO? NUM /TRUE
|
||
|
?PRG21: CALL RANDOM-ELEMENT,FORGET-TBL >NSPL
|
||
|
EQUAL? NSPL,SPL /?PRG21
|
||
|
GETP NSPL,P?COUNT
|
||
|
SUB STACK,1
|
||
|
PUTP NSPL,P?COUNT,STACK
|
||
|
RTRUE
|
||
|
|
||
|
|
||
|
.FUNCT FORGET-ALL,F
|
||
|
SET 'SPELL-ROOM,SPELL-MAX
|
||
|
FIRST? SPELL-BOOK >F /?KLU8
|
||
|
?KLU8:
|
||
|
?PRG1: ZERO? F /TRUE
|
||
|
PUTP F,P?COUNT,0
|
||
|
NEXT? F >F /?KLU9
|
||
|
?KLU9: JUMP ?PRG1
|
||
|
|
||
|
|
||
|
.FUNCT V-CAST,VRB
|
||
|
FSET? PRSO,SPELLBIT /?ELS5
|
||
|
PRINTI "You might as well be casting with a fly rod, as to try to cast "
|
||
|
CALL PRINTA,PRSO
|
||
|
PRINTR "."
|
||
|
?ELS5: EQUAL? PRSO,WRITE-MAGIC-SPELL \?ELS14
|
||
|
PUSH V?GNUSTO
|
||
|
JUMP ?CND10
|
||
|
?ELS14: EQUAL? PRSO,LIGHT-SPELL \?ELS16
|
||
|
PUSH V?FROTZ
|
||
|
JUMP ?CND10
|
||
|
?ELS16: EQUAL? PRSO,CHEAT-DEATH-SPELL \?ELS18
|
||
|
PUSH V?OZMOO
|
||
|
JUMP ?CND10
|
||
|
?ELS18: EQUAL? PRSO,SUMMON-SPELL \?ELS20
|
||
|
PUSH V?ZIFMIA
|
||
|
JUMP ?CND10
|
||
|
?ELS20: EQUAL? PRSO,CHARM-SPELL \?ELS22
|
||
|
PUSH V?VAXUM
|
||
|
JUMP ?CND10
|
||
|
?ELS22: EQUAL? PRSO,OPEN-SPELL \?ELS24
|
||
|
PUSH V?REZROV
|
||
|
JUMP ?CND10
|
||
|
?ELS24: EQUAL? PRSO,TALK-TO-ANIMALS-SPELL \?ELS26
|
||
|
PUSH V?NITFOL
|
||
|
JUMP ?CND10
|
||
|
?ELS26: EQUAL? PRSO,HASTE-SPELL \?ELS28
|
||
|
PUSH V?EXEX
|
||
|
JUMP ?CND10
|
||
|
?ELS28: EQUAL? PRSO,DISPEL-SPELL \?ELS30
|
||
|
PUSH V?KULCAD
|
||
|
JUMP ?CND10
|
||
|
?ELS30: EQUAL? PRSO,PROTECTION-SPELL \?ELS32
|
||
|
PUSH V?MELBOR
|
||
|
JUMP ?CND10
|
||
|
?ELS32: EQUAL? PRSO,STRONG-BOX-SPELL \?ELS34
|
||
|
PUSH V?BLORB
|
||
|
JUMP ?CND10
|
||
|
?ELS34: EQUAL? PRSO,BANISH-SPELL \?ELS36
|
||
|
PUSH V?GUNCHO
|
||
|
JUMP ?CND10
|
||
|
?ELS36: EQUAL? PRSO,QUENCH-SPELL \?ELS38
|
||
|
PUSH V?GONDAR
|
||
|
JUMP ?CND10
|
||
|
?ELS38: EQUAL? PRSO,REPAIR-SPELL \?ELS40
|
||
|
PUSH V?KREBF
|
||
|
JUMP ?CND10
|
||
|
?ELS40: EQUAL? PRSO,NEWT-SPELL \?ELS42
|
||
|
PUSH V?CLEESH
|
||
|
JUMP ?CND10
|
||
|
?ELS42: EQUAL? PRSO,FLY-SPELL \?ELS44
|
||
|
PUSH V?IZYUK
|
||
|
JUMP ?CND10
|
||
|
?ELS44: EQUAL? PRSO,CREDITS-SPELL \?ELS46
|
||
|
PUSH V?FILFRE
|
||
|
JUMP ?CND10
|
||
|
?ELS46: PRINTR "**OOPS**"
|
||
|
?CND10: SET 'VRB,STACK
|
||
|
ZERO? PRSI \?ELS53
|
||
|
EQUAL? VRB,V?KREBF,V?FILFRE \?ELS53
|
||
|
CALL PERFORM,VRB
|
||
|
RTRUE
|
||
|
?ELS53: ZERO? PRSI \?ELS57
|
||
|
PRINTR "You might as well be casting it away as not cast it on something."
|
||
|
?ELS57: CALL PERFORM,VRB,PRSI
|
||
|
RTRUE
|
||
|
|
||
|
|
||
|
.FUNCT V-LEARN
|
||
|
PRINTR "You don't have that spell, if indeed that is a spell."
|
||
|
|
||
|
|
||
|
.FUNCT V-MEMORIZE
|
||
|
CALL V-LEARN
|
||
|
RSTACK
|
||
|
|
||
|
|
||
|
.FUNCT V-GNUSTO,SCROLL
|
||
|
IN? SPELL-BOOK,WINNER /?ELS5
|
||
|
PRINTR "The spell quests around in your hands, looking for your spell book, and not finding it, fades reluctantly."
|
||
|
?ELS5: FSET? PRSO,SPELLBIT /?ELS9
|
||
|
PRINTI "You can't inscribe "
|
||
|
EQUAL? PRSO,ME \?ELS14
|
||
|
PRINTI "yourself"
|
||
|
JUMP ?CND12
|
||
|
?ELS14: CALL PRINTA,PRSO
|
||
|
?CND12: PRINTR " in your spell book!"
|
||
|
?ELS9: IN? PRSO,SPELL-BOOK \?ELS24
|
||
|
PRINTR "You already have that spell inscribed in your book!"
|
||
|
?ELS24: FSET? PRSO,RMUNGBIT \?ELS28
|
||
|
PRINTR "The spell is defaced beyond recognition."
|
||
|
?ELS28: LOC PRSO >SCROLL
|
||
|
FSET? SCROLL,SCROLLBIT \?ELS37
|
||
|
CALL HELD?,SCROLL
|
||
|
ZERO? STACK /?ELS37
|
||
|
EQUAL? PRSO,DISPEL-SPELL,BANISH-SPELL,CREDITS-SPELL \?ELS42
|
||
|
PRINTI "Your spell book begins to glow softly. In a spectacular effort of magic, the powers of the gnusto spell attempt to copy the "
|
||
|
PRINTD PRSO
|
||
|
PRINTI " into your book, but the spell is too long, too complicated, and too powerful. The glow fades, but fortunately the "
|
||
|
PRINTD SCROLL
|
||
|
PRINTI " remains intact."
|
||
|
CRLF
|
||
|
EQUAL? PRSO,DISPEL-SPELL,BANISH-SPELL \TRUE
|
||
|
CALL MORE-PROBE,FALSE-VALUE
|
||
|
RTRUE
|
||
|
?ELS42: REMOVE SCROLL
|
||
|
MOVE PRSO,SPELL-BOOK
|
||
|
PUTP PRSO,P?COUNT,0
|
||
|
PRINTI "Your spell book begins to glow softly. Slowly, ornately, the words of the "
|
||
|
PRINTD PRSO
|
||
|
PRINTR " are inscribed, glowing even more brightly than the book itself. The book's brightness fades, but the spell remains! However, the scroll on which it was written vanishes as the last word is copied."
|
||
|
?ELS37: PRINTR "You must have a legible spell scroll in your hands before the gnusto spell will work on it."
|
||
|
|
||
|
|
||
|
.FUNCT MORE-PROBE,CAST?=1
|
||
|
EQUAL? HERE,PIT,REAL-STAIR,ENDLESS-STAIR /TRUE
|
||
|
EQUAL? HERE,WARLOCK-TOWER /TRUE
|
||
|
IGRTR? 'PROBE,3 \?ELS9
|
||
|
PRINTI "The warlock Krill appears before you, clad in deepest black. ""You are a fool, wizard-worm! You and your Circle!"" He spits in your face, causing a wound through which a foul poison enters your body. Krill's demonic laughter is the last sound you hear."
|
||
|
CRLF
|
||
|
CALL FINISH
|
||
|
RSTACK
|
||
|
?ELS9: CRLF
|
||
|
GET PROBE-TBL,PROBE
|
||
|
PRINT STACK
|
||
|
CRLF
|
||
|
ZERO? CAST? \?THN19
|
||
|
EQUAL? PROBE,2 \?CND16
|
||
|
IN? KRILL,HERE /?CND16
|
||
|
?THN19: ZERO? BELBOZ-WARNING \?CND16
|
||
|
SET 'BELBOZ-WARNING,TRUE-VALUE
|
||
|
CRLF
|
||
|
PRINTI "Belboz appears before you, hard and stern. ""While you have quested for Krill's lair, the Circle has not been idle. We have tried to shield your presence from him, but "
|
||
|
ZERO? CAST? /?ELS30
|
||
|
PRINTI "your use of such a powerful spell might endanger us all!"
|
||
|
JUMP ?CND28
|
||
|
?ELS30: PRINTI "your foolish attempt to copy such a powerful spell cannot be ignored!"
|
||
|
?CND28: PRINTI " As we have sensed it, so surely must Krill! Be careful, brave Enchanter!"" His image fades."
|
||
|
CRLF
|
||
|
?CND16: INC 'LOSSAGE
|
||
|
RTRUE
|
||
|
|
||
|
|
||
|
.FUNCT V-FROTZ,OLIT
|
||
|
SET 'OLIT,LIT
|
||
|
IN? PRSO,LOCAL-GLOBALS /?ELS5
|
||
|
FSET? PRSO,TAKEBIT /?THN8
|
||
|
FSET? PRSO,VICBIT \?ELS5
|
||
|
?THN8: FSET PRSO,LIGHTBIT
|
||
|
FSET PRSO,ONBIT
|
||
|
PRINTI "There is an almost blinding flash of light as the "
|
||
|
PRINTD PRSO
|
||
|
PRINTI " begins to glow! It slowly fades to a less painful level, but the "
|
||
|
PRINTD PRSO
|
||
|
PRINTI " is now quite usable as a light source."
|
||
|
CRLF
|
||
|
ADD SCORE,LIGHT-POINT >SCORE
|
||
|
SET 'LIGHT-POINT,0
|
||
|
CALL LIT?,HERE >LIT
|
||
|
ZERO? OLIT \TRUE
|
||
|
ZERO? LIT /TRUE
|
||
|
CRLF
|
||
|
CALL PERFORM,V?LOOK
|
||
|
RTRUE
|
||
|
?ELS5: CALL V-VAXUM
|
||
|
RSTACK
|
||
|
|
||
|
|
||
|
.FUNCT V-OZMOO
|
||
|
PRINTI "A huge puff of orange smoke envelops "
|
||
|
SET 'DEATH-CHEATED,PRSO
|
||
|
EQUAL? PRSO,ME \?ELS7
|
||
|
CALL QUEUE,I-DEATH-CHEATED-END,8
|
||
|
PUT STACK,0,1
|
||
|
PRINTR "you, but you feel no different."
|
||
|
?ELS7: PRINTI "the "
|
||
|
PRINTD PRSO
|
||
|
PRINTR ". Other than that, not much happens."
|
||
|
|
||
|
|
||
|
.FUNCT I-DEATH-CHEATED-END
|
||
|
SET 'DEATH-CHEATED,FALSE-VALUE
|
||
|
EQUAL? DEATH-CHEATED,ME \TRUE
|
||
|
PRINTR "You feel a bit lightheaded for a moment, but the feeling quickly passes."
|
||
|
|
||
|
|
||
|
.FUNCT V-ZIFMIA
|
||
|
FSET? PRSO,TAKEBIT /?THN6
|
||
|
IN? PRSO,LOCAL-GLOBALS \?ELS5
|
||
|
?THN6: PRINTR "The zifmia spell is for summoning beings, not things!"
|
||
|
?ELS5: FSET? PRSO,VICBIT \?ELS11
|
||
|
IN? PRSO,HERE /?ELS11
|
||
|
CALL NO-ZIF
|
||
|
RSTACK
|
||
|
?ELS11: CALL V-VAXUM
|
||
|
RSTACK
|
||
|
|
||
|
|
||
|
.FUNCT NO-ZIF
|
||
|
PRINTR "If you will remember from Thaumaturgy 201, summoning of beings works only if the being can be seen, unless the being possesses great magic of his own."
|
||
|
|
||
|
|
||
|
.FUNCT V-VAXUM
|
||
|
PRINTR "Although you complete the spell, nothing seems to have happened."
|
||
|
|
||
|
|
||
|
.FUNCT V-GONDAR
|
||
|
CALL V-VAXUM
|
||
|
RSTACK
|
||
|
|
||
|
|
||
|
.FUNCT V-REZROV
|
||
|
FSET? PRSO,CONTBIT \?ELS5
|
||
|
FSET? PRSO,OPENBIT \?ELS8
|
||
|
PRINTI "It's open already. Why bother?"
|
||
|
CRLF
|
||
|
JUMP ?CND6
|
||
|
?ELS8: PRINTI "The "
|
||
|
PRINTD PRSO
|
||
|
PRINTI " opens. Kind of like swatting a fly with a sledge hammer, if you ask me."
|
||
|
CRLF
|
||
|
?CND6: FSET PRSO,OPENBIT
|
||
|
RTRUE
|
||
|
?ELS5: CALL V-VAXUM
|
||
|
RSTACK
|
||
|
|
||
|
|
||
|
.FUNCT I-TALK-TO-ANIMAL
|
||
|
EQUAL? TALK-TO-ANIMAL?,TURTLE \?CND1
|
||
|
ZERO? TURTLE-FOLLOWS /?CND1
|
||
|
SET 'TURTLE-FOLLOWS,FALSE-VALUE
|
||
|
IN? TURTLE,HERE \?CND1
|
||
|
PRINTI "The turtle no longer seems to understand you, loses interest in you, and stops following."
|
||
|
CRLF
|
||
|
?CND1: SET 'TALK-TO-ANIMAL?,FALSE-VALUE
|
||
|
RETURN TALK-TO-ANIMAL?
|
||
|
|
||
|
|
||
|
.FUNCT V-NITFOL
|
||
|
FSET? PRSO,VILLAIN \?ELS5
|
||
|
SET 'TALK-TO-ANIMAL?,PRSO
|
||
|
CALL QUEUE,I-TALK-TO-ANIMAL,20
|
||
|
PUT STACK,0,1
|
||
|
EQUAL? PRSO,ME \?ELS10
|
||
|
PRINTR "You now understand everything you say to yourself, which is more than I can do. You didn't study too hard in Thaumaturgy 101, did you? This spell should be cast on the creature you wish to talk to!"
|
||
|
?ELS10: EQUAL? PRSO,FROG \?ELS17
|
||
|
PRINTI "One of the frogs"
|
||
|
JUMP ?CND15
|
||
|
?ELS17: PRINTI "The "
|
||
|
PRINTD PRSO
|
||
|
?CND15: PRINTR " looks at you for a moment, and you look at it. ""Hello,"" it says."
|
||
|
?ELS5: PRINTI "This seems to have no effect on "
|
||
|
CALL PRINTA,PRSO
|
||
|
PRINTR "."
|
||
|
|
||
|
|
||
|
.FUNCT I-HASTE
|
||
|
EQUAL? HASTED?,ME \?CND1
|
||
|
ADD HUNGER-COUNT,2 >HUNGER-COUNT
|
||
|
CALL QUEUE,I-HUNGER,3
|
||
|
PUT STACK,0,1
|
||
|
ADD THIRST-COUNT,2 >THIRST-COUNT
|
||
|
CALL QUEUE,I-THIRST,4
|
||
|
PUT STACK,0,1
|
||
|
CALL QUEUE,I-TIRED,5
|
||
|
PUT STACK,0,1
|
||
|
PRINTI "The effects of the exex spell have worn off. You are ravenous, parched, and tired."
|
||
|
CRLF
|
||
|
?CND1: SET 'HASTED?,FALSE-VALUE
|
||
|
RETURN HASTED?
|
||
|
|
||
|
|
||
|
.FUNCT V-EXEX
|
||
|
ZERO? HASTED? /?ELS5
|
||
|
PRINTR "Nothing seems to happen. Perhaps the spell needs time before it can be cast again."
|
||
|
?ELS5: FSET? PRSO,VILLAIN \?ELS10
|
||
|
SET 'HASTED?,PRSO
|
||
|
EQUAL? PRSO,ME \?ELS15
|
||
|
SET 'HASTED?,PLAYER
|
||
|
EQUAL? HERE,WARLOCK-TOWER \?ELS20
|
||
|
PRINTR "Krill, nobody's fool, hears you start the exex spell and hastily improvises one of his own which entirely counteracts it. The spell acts so well, in fact, that you are frozen solid."
|
||
|
?ELS20: CALL QUEUE,I-HASTE,45
|
||
|
PUT STACK,0,1
|
||
|
PRINTR "You feel energetic and zippy."
|
||
|
?ELS15: CALL QUEUE,I-HASTE,15
|
||
|
PUT STACK,0,1
|
||
|
PRINTI "The "
|
||
|
PRINTD PRSO
|
||
|
PRINTR " shimmers, then vibrates in place for a few seconds, but doesn't take any notice of the change."
|
||
|
?ELS10: CALL V-VAXUM
|
||
|
RSTACK
|
||
|
|
||
|
|
||
|
.FUNCT V-KULCAD
|
||
|
PRINTI "It appears that the "
|
||
|
PRINTD PRSO
|
||
|
PRINTR " was real, since nothing happens."
|
||
|
|
||
|
|
||
|
.FUNCT V-MELBOR
|
||
|
EQUAL? PRSO,ME \?ELS5
|
||
|
SET 'PROTECTED-FROM-EVIL,TRUE-VALUE
|
||
|
PRINTR "A wave of warmth courses through you, leaving you with a feeling of great internal strength."
|
||
|
?ELS5: CALL V-VAXUM
|
||
|
RSTACK
|
||
|
|
||
|
|
||
|
.FUNCT V-BLORB,OBJ
|
||
|
ZERO? STRONG-BOX-FLAG /?CND1
|
||
|
CALL V-VAXUM
|
||
|
RTRUE
|
||
|
?CND1: FSET? PRSO,TAKEBIT /?THN10
|
||
|
EQUAL? PRSO,ADVENTURER \?ELS9
|
||
|
?THN10: EQUAL? PRSO,ADVENTURER,TURTLE \?ELS14
|
||
|
REMOVE PRSO
|
||
|
EQUAL? PRSO,ADVENTURER \?ELS17
|
||
|
CALL QUEUE,I-ADVENTURER,0
|
||
|
JUMP ?CND12
|
||
|
?ELS17: CALL QUEUE,I-TURTLE,0
|
||
|
JUMP ?CND12
|
||
|
?ELS14: MOVE PRSO,STRONG-BOX
|
||
|
?CND12: SET 'STRONG-BOX-FLAG,TRUE-VALUE
|
||
|
MOVE STRONG-BOX,HERE
|
||
|
PRINTI "A glowing strong box forms out of the air, carefully enclosing the "
|
||
|
PRINTD PRSO
|
||
|
PRINTR ", which disappears from view. The strong box rests on the ground."
|
||
|
?ELS9: CALL V-VAXUM
|
||
|
RSTACK
|
||
|
|
||
|
|
||
|
.FUNCT STRONG-BOX-F,OBJ
|
||
|
EQUAL? PRSA,V?TAKE \?ELS5
|
||
|
PRINTR "The strong box is apparently stuck to the ground, or welded there, or tied with magical ropes. It won't move."
|
||
|
?ELS5: EQUAL? PRSA,V?KULCAD,V?REZROV,V?OPEN \FALSE
|
||
|
SET 'STRONG-BOX-FLAG,FALSE-VALUE
|
||
|
FIRST? STRONG-BOX >OBJ \?CND10
|
||
|
MOVE OBJ,HERE
|
||
|
CALL THIS-IS-IT,OBJ
|
||
|
?CND10: REMOVE STRONG-BOX
|
||
|
EQUAL? PRSA,V?OPEN \?ELS19
|
||
|
PUSH STR?122
|
||
|
JUMP ?CND15
|
||
|
?ELS19: EQUAL? PRSA,V?REZROV \?ELS21
|
||
|
PUSH STR?123
|
||
|
JUMP ?CND15
|
||
|
?ELS21: EQUAL? PRSA,V?KULCAD \?PRD17
|
||
|
PUSH STR?124
|
||
|
JUMP ?CND15
|
||
|
?PRD17: PUSH 0
|
||
|
?CND15: PRINT STACK
|
||
|
PRINTI " the strong box, it vanishes, and "
|
||
|
ZERO? OBJ /?ELS26
|
||
|
PRINTI "the "
|
||
|
PRINTD OBJ
|
||
|
PRINTI " re"
|
||
|
JUMP ?CND24
|
||
|
?ELS26: PRINTI "nothing "
|
||
|
?CND24: PRINTR "appears in its place."
|
||
|
|
||
|
|
||
|
.FUNCT V-GUNCHO
|
||
|
FSET? PRSO,VICBIT \?ELS5
|
||
|
REMOVE PRSO
|
||
|
PRINTI "The "
|
||
|
PRINTD PRSO
|
||
|
PRINTR " disappears, fading with stately speed into a misty shadow, shimmering and wavering, which then is gone."
|
||
|
?ELS5: CALL V-VAXUM
|
||
|
RSTACK
|
||
|
|
||
|
|
||
|
.FUNCT V-KREBF
|
||
|
ZERO? PRSO /?THN6
|
||
|
EQUAL? PRSO,GLOBAL-ROOM \?ELS5
|
||
|
?THN6: FSET? HERE,RMUNGBIT \?ELS12
|
||
|
FCLEAR HERE,RMUNGBIT
|
||
|
FCLEAR HERE,TOUCHBIT
|
||
|
PRINTR "There is a slow brightening of the illumination, and color flows back into your surroundings. There is a touch of spring in the air."
|
||
|
?ELS12: PRINTR "Nothing happens. Perhaps there was no damage here to repair."
|
||
|
?ELS5: FSET? PRSO,SCROLLBIT \?CND21
|
||
|
FIRST? PRSO \?CND21
|
||
|
FIRST? PRSO >PRSO /?KLU46
|
||
|
?KLU46:
|
||
|
?CND21: FSET? PRSO,RMUNGBIT /?ELS30
|
||
|
PRINTR "Nothing happens."
|
||
|
?ELS30: FCLEAR PRSO,RMUNGBIT
|
||
|
FSET? PRSO,SPELLBIT \?ELS39
|
||
|
PRINTI "The "
|
||
|
PRINTD PRSO
|
||
|
PRINTR " becomes readable again."
|
||
|
?ELS39: PRINTR "Nothing obvious happens."
|
||
|
|
||
|
|
||
|
.FUNCT V-CLEESH
|
||
|
EQUAL? PRSO,ME \?ELS5
|
||
|
PRINTI "You are turned into a newt, and scurry off to find your friends in the swamp. You are distracted by various yummy insects along the way, but eventually settle into a nice gooey part of the morass and live happily ever after, at least until you are devoured by a heron."
|
||
|
CRLF
|
||
|
CALL FINISH
|
||
|
RSTACK
|
||
|
?ELS5: EQUAL? PRSO,ADVENTURER,ADVENTURER-LG \?ELS9
|
||
|
CALL NO-MORE-ADVENTURER
|
||
|
CALL QUEUE,I-ADVENTURER,0
|
||
|
REMOVE ADVENTURER
|
||
|
PRINTR "The adventurer turns into a fairly large newt, which scuttles off and is lost to sight."
|
||
|
?ELS9: FSET? PRSO,VICBIT \?ELS13
|
||
|
FSET? PRSO,VILLAIN \?ELS13
|
||
|
PRINTI "The "
|
||
|
PRINTD PRSO
|
||
|
PRINTR " looks sort of green and slimy for a moment, but he gets better."
|
||
|
?ELS13: PRINTI "Turning the "
|
||
|
PRINTD PRSO
|
||
|
PRINTR " into a newt is a remarkable idea."
|
||
|
|
||
|
|
||
|
.FUNCT V-IZYUK
|
||
|
ZERO? PRSO /?THN6
|
||
|
EQUAL? PRSO,ME \?ELS5
|
||
|
?THN6: SET 'FLYING?,TRUE-VALUE
|
||
|
CALL QUEUE,I-FLY,4
|
||
|
PUT STACK,0,1
|
||
|
CALL QUEUE,I-FALL-FOREVER,0
|
||
|
PRINTR "Your descent slows, and you are floating serenely in midair. The tower surrounds you, with wide-cut openings to the east and west. You could probably fly in either direction if you wished."
|
||
|
?ELS5: PRINTI "You can't make the "
|
||
|
PRINTD PRSO
|
||
|
PRINTR " fly!"
|
||
|
|
||
|
|
||
|
.FUNCT I-FLY
|
||
|
SET 'FLYING?,FALSE-VALUE
|
||
|
LOC WINNER
|
||
|
EQUAL? STACK,PIT,REAL-STAIR \?ELS5
|
||
|
PRINTI "The izyuk spell has worn off! You plummet deeper and deeper into the pit! Oddly enough, you never seem to hit bottom. After many years, only tattered remnants of you remain, still falling."
|
||
|
CRLF
|
||
|
CALL FINISH
|
||
|
RSTACK
|
||
|
?ELS5: PRINTR "You settle gently to the ground."
|
||
|
|
||
|
|
||
|
.FUNCT V-FILFRE
|
||
|
PRINTI "In a blinding burst of pyrotechnics, the air lights up with fireworks and dazzling explosions of multicolored fire! In sizzling sparks and roiling smoke is written:
|
||
|
"
|
||
|
CALL FIXED-FONT-ON
|
||
|
PRINTI "
|
||
|
Enchanter
|
||
|
by
|
||
|
Dave Lebling
|
||
|
and
|
||
|
Marc Blank
|
||
|
|
||
|
Copyright 1983, by Infocom, Inc.
|
||
|
|
||
|
"
|
||
|
CALL FIXED-FONT-OFF
|
||
|
PRINTR "After a while, the smoke dissipates and the lights dim. You remain slightly dazzled for a while, but fortunately, this wears off."
|
||
|
|
||
|
.ENDI
|