-+-+-+-+-+-+-+-+ START OF PART 20 -+-+-+-+-+-+-+-+ X added. X X9. Performance of the display has been improved slightly. X X10. Monster movement has been improved for large numbers of monsters. It is X somewhat better on PC's, even with aggravation. X X11. I have added new mazes to LARN.MAZ. X X12. A Rogue-like command mode has been added, and is the default. The X version 12.0 prompting mode has been preserved for those who like it, X accessible via a command line option. Command letters have been added X to provide the ability to perform all the same actions as the prompt mod Ve. X The help file and command line help have been updated. When in command X mode, the player will automatically pick up objects, and can read, quaff V, X eat, look at, and pick up objects that you are standing on. X X In order to implement the new commands, the A and D commands from versio Vn X 12.0 have been changed. They are now `5EA and I. For consistancy, to s Vee X the list of known spells at the spell prompt, 'I' also shows all known X spells. $ CALL UNPACK LARN123.FIX;1 1780943399 $ create 'f' X/* X Function, data declarations X*/ Xextern char regen_bottom; Xextern char floorc, wallc; Xextern char boldobjects; Xextern char auto_pickup; Xextern char VERSION,SUBVERSION; Xextern char aborted`5B`5D,beenhere`5B`5D,boldon,cheat,ckpfile`5B`5D,ckpflag; Xextern char *class`5B`5D,course`5B`5D,diagfile`5B`5D,fortfile`5B`5D,helpfile V`5B`5D,holifile`5B`5D; Xextern char ckpfile`5B`5D; X# ifdef MSDOS Xextern int swapfd; Xextern char swapfile`5B`5D; Xextern long tell(), lseek(); X# endif Xextern char *inbuffer; Xextern char item`5BMAXX`5D`5BMAXY`5D,iven`5B`5D,know`5BMAXX`5D`5BMAXY`5D,lar Vnlevels`5B`5D,lastmonst`5B`5D; Xextern char level,*levelname`5B`5D,logfile`5B`5D,loginname`5B`5D,logname`5B` V5D,*lpbuf,*lpend; Xextern char *lpnt,mitem`5BMAXX`5D`5BMAXY`5D,monstlevel`5B`5D; Xextern char monstnamelist`5B`5D,nch`5B`5D,ndgg`5B`5D,nlpts`5B`5D,nomove,nosi Vgnal,nowelcome; Xextern char nplt`5B`5D,nsw`5B`5D,*objectname`5B`5D; Xextern char hacklike_objnamelist`5B`5D; Xextern char original_objnamelist`5B`5D; Xextern char objnamelist`5B`5D,optsfile`5B`5D,*potionname`5B`5D,playerids`5B` V5D,potprob`5B`5D; Xextern char predostuff,psname`5B`5D,restorflag,savefilename`5B`5D,scorefile` V5B`5D,scprob`5B`5D; Xextern char screen`5BMAXX`5D`5BMAXY`5D,*scrollname`5B`5D,sex,*spelcode`5B`5D V,*speldescript`5B`5D; Xextern char spelknow`5B`5D,*spelname`5B`5D,*spelmes`5B`5D; Xextern char splev`5B`5D,stealth`5BMAXX`5D`5BMAXY`5D,wizard; Xextern short diroffx`5B`5D,diroffy`5B`5D,hitflag,hit2flag,hit3flag,hitp`5BMA VXX`5D`5BMAXY`5D; Xextern short iarg`5BMAXX`5D`5BMAXY`5D,ivenarg`5B`5D,lasthx,lasthy,lastnum,la Vstpx,lastpy; Xextern short nobeep,oldx,oldy,playerx,playery; Xextern int dayplay,enable_scroll,yrepcount,userid,wisid,lfd,fd; Xextern long initialtime,outstanding_taxes,skill`5B`5D,gtime,c`5B`5D,cbak`5B` V5D; Xextern unsigned long lrandx; X# ifndef MSDOS /* Different storage under MSDOS */ Xextern struct cel *cell; X# endif Xextern struct sphere *spheres; X Xvoid *malloc(); Xchar *fortune(),*getenv(),*getlogin(),*lgetw(),*lgetl(),*ctime(); Xchar *tmcapcnv(),*tgetstr(),*tgoto(); Xlong paytaxes(),lgetc(),lrint(),time(); Xunsigned long readnum(); X X /* macro to create scroll #'s with probability of occurrence */ X#define newscroll() (scprob`5Brund(81)`5D) X /* macro to return a potion # created with probability of occurrence */ X#define newpotion() (potprob`5Brund(41)`5D) X /* macro to return the + points on created leather armor */ X#define newleather() (nlpts`5Brund(c`5BHARDGAME`5D?13:15)`5D) X /* macro to return the + points on chain armor */ X#define newchain() (nch`5Brund(10)`5D) X /* macro to return + points on plate armor */ X#define newplate() (nplt`5Brund(c`5BHARDGAME`5D?4:12)`5D) X /* macro to return + points on new daggers */ X#define newdagger() (ndgg`5Brund(13)`5D) X /* macro to return + points on new swords */ X#define newsword() (nsw`5Brund(c`5BHARDGAME`5D?6:13)`5D) X /* macro to destroy object at present location */ X#define forget() (item`5Bplayerx`5D`5Bplayery`5D=know`5Bplayerx`5D`5Bplayery V`5D=0) X /* macro to wipe out a monster at a location */ X#define disappear(x,y) (mitem`5Bx`5D`5By`5D=know`5Bx`5D`5By`5D=0) X X#ifdef VT100 X /* macro to turn on bold display for the terminal */ X#define setbold() (lprcat(boldon?"\33`5B1m":"\33`5B7m")) X /* macro to turn off bold display for the terminal */ X#define resetbold() (lprcat("\33`5Bm")) X /* macro to setup the scrolling region for the terminal */ X#define setscroll() (lprcat("\33`5B20;24r")) X /* macro to clear the scrolling region for the terminal */ X#define resetscroll() (lprcat("\33`5B;24r")) X /* macro to clear the screen and home the cursor */ X#define clear() (lprcat("\33`5B2J\33`5Bf"), regen_bottom=TRUE) X#define cltoeoln() lprcat("\33`5BK") X#else /* VT100 */ X /* defines below are for use in the termcap mode only */ X#define ST_START 1 X#define ST_END 2 X#define BOLD 3 X#define END_BOLD 4 X#define CLEAR 5 X#define CL_LINE 6 X#define T_INIT 7 X#define T_END 8 X#define CL_DOWN 14 X#define CURSOR 15 X /* macro to turn on bold display for the terminal */ X#define setbold() (*lpnt++ = ST_START) X /* macro to turn off bold display for the terminal */ X#define resetbold() (*lpnt++ = ST_END) X /* macro to setup the scrolling region for the terminal */ X#define setscroll() enable_scroll=1 X /* macro to clear the scrolling region for the terminal */ X#define resetscroll() enable_scroll=0 X /* macro to clear the screen and home the cursor */ X#define clear() (*lpnt++ =CLEAR, regen_bottom=TRUE) X /* macro to clear to end of line */ X#define cltoeoln() (*lpnt++ = CL_LINE) X#endif /* VT100 */ X X /* macro to output one byte to the output buffer */ X#define lprc(ch) ((lpnt>=lpend)?(*lpnt++ =(ch), lflush()):(*lpnt++ =(ch))) X X /* macro to seed the random number generator */ X#define srand(x) (lrandx=x) X#ifdef MACRORND X /* macros to generate random numbers 1<=rnd(N)<=N 0<=rund(N)<=N-1 */ X#define rnd(x) ((((lrandx=lrandx*1103515245+12345)>>7)%(x))+1) X#define rund(x) ((((lrandx=lrandx*1103515245+12345)>>7)%(x)) ) X#endif /* MACRORND */ X X#define KNOWNOT 0x00 X#define HAVESEEN 0x1 X#define KNOWHERE 0x2 X#define KNOWALL (HAVESEEN `7C KNOWHERE) X#ifdef MSDOS X# ifdef OS2LARN X# define PATHLEN 256 X# define DIRLEN 256 X# define INCL_BASE X# include X# define sleep(x)`09DosSleep(x*1000L); X# else X# define PATHLEN 80 X# define DIRLEN 64 X# endif X extern char larndir`5B`5D; X extern int raw_io, DECRainbow, keypad, ramlevels, cursorset; X extern unsigned char cursorstart, cursorend; X#endif MSDOS X Xextern char prompt_mode ; $ CALL UNPACK LARNDEFS.H;1 928297800 $ create 'f' X7 Welcome to the game of Larn. At this moment, you face a great problem. XYour daughter has contracted a strange disease, and none of your home remedi Ves Xseem to have any effect. You sense that she is in mortal danger, and you mu Vst Xtry to save her. Time ago you heard of a land of great danger and opportuni Vty. XPerhaps here is the solution you need. X X It has been said that there once was a great magician who called himself XPolinneaus. Many years ago, after having many miraculous successes, Polinne Vaus Xretired to the caverns of Larn, where he devoted most of his time to the Xcreation of magic. Rumors have it that one day Polinneaus set out to dispe Vl Xan attacking army in a forest some distance to the north. It is believed th Vat Xhere he met his demise. X X The caverns of Larn, it is thought, must be magnificent in design, Xand contain much magic and treasure. One option you have is to undertake a Xjourney into these caverns. X X X Good Luck! You're going to need it! X X X X X Help File for The Caverns of Larn, Prompt Mode X Xb move southwest B run southwest S save the game Xh move left H run left . stay here Xj move down J run down `5E identify a trap Xk move up K run up T take off armor Xl move right L run right Xn move southeast N run southeast Xu move northeast U run northeast Xy move northwest Y run northwest `5EL redraw the scree Vn Xc cast a spell Z teleport yourself Xd drop an item e eat something Xg get present pack weight P give tax status Xi inventory your pockets I list all items found ? this help screen Xq quaff a potion Q quit the game Xr read a scroll v print program version Xw wield a weapon W wear armor `5EL redraw the scree Vn X X X X X X X Help File for The Caverns of Larn, Command Mode X Xb move southwest B run southwest A desecrate an altar Xc cast a spell C close a door Z teleport yourself Xd drop an item D drink at a fountain < go up stairs or Xe eat something E enter a store, dungeon volcanic shaft Xg get present pack weight > go down stairs or Xh move left H run left volcanic shaft Xi inventory your pockets I list all items found ? this help screen Xj move down J run down `5E identify a trap Xk move up K run up , pick up item Xl move right L run right : look at object you Xn move southeast N run southeast are standing on X O open a door or chest . stay here Xp pray at an altar P give tax status m move without picki Vng Xq quaff a potion Q quit the game up an object Xr read a scroll R remove gems from throne @ toggle auto-pickup Xs sit on a throne S save the game / identify objects i Vn Xt tidy up at a fountain T take off armor the game Xu move northeast U run northeast Xv print program version Xw wield a weapon W wear armor Xy move northwest Y run northwest `5EL redraw the scree Vn X Special Notes X XWhen dropping gold, if you type '*' as your amount, all your gold gets dropp Ved. XIn general, typing in '*' means all of what your interested in. This is tru Ve Xwhen visiting the bank, or when contributing at altars. X XLarn needs the ANSI.SYS (or preferably, the NANSI.SYS) device driver install Ved Xin your CONFIG.SYS file. The supplied "termcap" file describes the escape Xsequences to change video modes (see ch 13 of the DOS 2.0 manual). See the X"TERMCAP" section in LARN.DOC for further details. X XWhen in the store, trading post, school, or home, an will get you o Vut. X XWhen casting a spell, if you need a list of spells you can cast, type 'I' as Xthe first letter of your spell. The available list of spells will be shown, Xafter which you may enter the spell code. This only works on the 1st letter Xof the spell you are casting. X XWhen an inventory list is on the screen from a drop, quaff, read, or similar Xcommand, you can type the letter of the object that you wish to act apon, Xwithout having to type a space to get back to the prompt. X XThis version of Larn is by Kevin Routley. X Larn Command Line Options X Xlarn ++ restore checkpointed game Xlarn -s list the scoreboard Xlarn -i list scores with inventories Xlarn -n suppress welcome message when beginning a game Xlarn -h print out all the command line options Xlarn -? print out all the command line options Xlarn - specify difficulty of the game Xlarn -o specify the option file to be used Xlarn -c create new scoreboards -- prompts for a password Xlarn -l print out the larn log file Xlarn -p play in prompt mode X X X X X X X X X X X Background Information for Larn X X Welcome to the game of Larn. At this moment, you face a great problem. XYour daughter has contracted a strange disease, and none of your home remedi Ves Xseem to have any effect. You sense that she is in mortal danger, and you mu Vst Xtry to save her. Time ago you heard of a land of great danger and opportuni Vty. XPerhaps here is the solution you need. X X It has been said that there once was a great magician who called himself XPolinneaus. Many years ago, after having many miraculous successes, Polinne Vaus Xretired to the caverns of Larn, where he devoted most of his time to the Xcreation of magic. Rumors have it that one day Polinneaus set out to dispe Vl Xan attacking army in a forest some distance to the north. It is believed th Vat Xhere he met his demise. X X The caverns of Larn, it is thought, must be magnificent in design, Xand contain much magic and treasure. One option you have is to undertake a Xjourney into these caverns. X X Good Luck! You're going to need it! X X X X How to use the larn.opt option file X XThe file "larn.opt", if used, should be in a directory along your PATH. XA sequence of words terminated by whitespace is used to specify options. X X Word Meaning X cursor: lowscan highscan change the shape of the cursor X DECRainbow tell LARN you have that computer X enable-checkpointing turn on periodic checkpointing X graphics: wallc floorc select graphics maze characters X keypad enable the numeric keypad for moving X larndir: directory the directory to use for larn files X monster: "monst name" choose a name for a monster X name: "your name" choose your playing name X no-beep disable beeping of the terminal X no-introduction do not display intro message X savefile: save-file-name define what the savegame filename will be X swapfile: swap-file-name define the name of the swapfile X XYour name and monster names must be enclosed in double quotation marks and m Vay Xbe up to 34 characters long. Longer names are truncated. Anything enclosed +-+-+-+-+-+-+-+- END OF PART 20 +-+-+-+-+-+-+-+-