Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!wuarchive!uunet!zephyr.ens.tek.com!tekred!saab!billr From: billr@saab.CNA.TEK.COM (Bill Randle) Newsgroups: comp.sources.games Subject: v12i035: larn - dungeon type adventure game, Patch4 Message-ID: <7080@tekred.CNA.TEK.COM> Date: 13 Feb 91 20:45:11 GMT Sender: news@tekred.CNA.TEK.COM Lines: 1067 Approved: billr@saab.CNA.TEK.COM Submitted-by: routley@tle.ENET.DEC.COM (Kevin Routley) Posting-number: Volume 12, Issue 35 Archive-name: larn/Patch4 Patch-To: larn: Volume 11, Issue 84-95 Environment: Unix, VMS, MS-DOS, termcap [Warning: this patch has some long (> 80 chars) lines that may get split if this article goes thru a bitnet site. If the patches don't apply, try editing the patch file and reapply the patches. -br] #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'patches04' <<'END_OF_FILE' X*** patchlevel_orig.h Tue Feb 12 10:53:38 1991 X--- patchlevel.h Tue Feb 12 10:53:35 1991 X*************** X*** 1 **** X! #define PATCHLEVEL 3 X--- 1 ---- X! #define PATCHLEVEL 4 X*** PATCHLOG_orig Tue Feb 12 10:53:47 1991 X--- PATCHLOG Tue Feb 12 10:53:42 1991 X*************** X*** 1,3 **** X--- 1,33 ---- X+ Patch4 X+ ====== X+ X+ For Pat Rankin (nethack.rankin@eql.caltech.edu). Under VMS, do a X+ getenv("TERM") before a getenv("TERMINAL"). Add more Dec terminals to the X+ termcap file. X+ X+ Courtesy of Andreas Wettengel (andreas@nixhhs.uucp). Modify bill.c to X+ produce RFC822-conformant mail headers, compiled using the new RFCMAIL X+ #define. This allows elm and other conformant mail programs to display X+ the Subject and Sender correctly. X+ X+ To satisfy several requests, I have brought back the descriptions of the X+ compile-time defines into the makefile. I have also updated the list to X+ include the more recent additions. X+ X+ Modify main.c to include and make use of PATCHLEVEL. This requires those X+ using MSDOS or OS/2 to change patchlevel.h to patchlev.h. The 'v' command X+ will now print out the patchlevel as part of the version information. X+ X+ As pointed out by Andreas Wettengal, the second parameter to tputs() should X+ be one if its to have no affect. X+ X+ Fix a bug pointed out by Gordon D. (frog!gordon). Reading a scroll of X+ teleport without picking it up leaves it behind when you teleport, allowing X+ you to read it again. X+ X+ Fix the help file spelling mistakes and spell-casting lister in the help file X+ with escape sequences. X+ X Patch3 X ====== X X*** bill_orig.c Wed Jan 2 10:55:41 1991 X--- bill.c Mon Jan 7 13:21:29 1991 X*************** X*** 23,28 X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 600 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X X--- 23,29 ----- X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 600 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X*************** X*** 24,29 X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 600 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X standout("\nSubject:"); lprcat(" undeclared income\n"); X X--- 25,31 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 600 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif /*RFCMAIL*/ X # endif X #ifdef RFCMAIL X lprcat("From: LRS (Larn Revenue Service)\n"); X*************** X*** 25,30 X if (lcreat(mail600) < 0) { write(1,"can't write 600 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X standout("\nSubject:"); lprcat(" undeclared income\n"); X lprcat("\n We heard you survived the caverns of Larn. Let me be the"); X X--- 27,36 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X+ #ifdef RFCMAIL X+ lprcat("From: LRS (Larn Revenue Service)\n"); X+ lprcat("Subject: Undeclared Income\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X standout("\nSubject:"); lprcat(" undeclared income\n"); X #endif /*RFCMAIL*/ X*************** X*** 27,32 X # endif X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X standout("\nSubject:"); lprcat(" undeclared income\n"); X lprcat("\n We heard you survived the caverns of Larn. Let me be the"); X lprcat("\nfirst to congratulate you on your success. It is quite a feat."); X lprcat("\nIt must also have been very profitable for you."); X X--- 33,39 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X standout("\nSubject:"); lprcat(" undeclared income\n"); X+ #endif /*RFCMAIL*/ X lprcat("\n We heard you survived the caverns of Larn. Let me be the"); X lprcat("\nfirst to congratulate you on your success. It is quite a feat."); X lprcat("\nIt must also have been very profitable for you."); X*************** X*** 57,62 X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 601 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X X--- 64,70 ----- X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 601 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X*************** X*** 58,63 X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 601 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X standout("\nSubject:"); lprcat(" a noble deed\n"); X X--- 66,72 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 601 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif /*RFCMAIL*/ X # endif X #ifdef RFCMAIL X lprcat("From: King (His Majesty King Wilfred of Larndom)\n"); X*************** X*** 59,64 X if (lcreat(mail600) < 0) { write(1,"can't write 601 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X standout("\nSubject:"); lprcat(" a noble deed\n"); X lprcat("\n I have heard of your magnificent feat, and I, King Wilfred,"); X X--- 68,77 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X+ #ifdef RFCMAIL X+ lprcat("From: King (His Majesty King Wilfred of Larndom)\n"); X+ lprcat("Subject: A Noble Deed\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X standout("\nSubject:"); lprcat(" a noble deed\n"); X #endif /*RFCMAIL*/ X*************** X*** 61,66 X # endif X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X standout("\nSubject:"); lprcat(" a noble deed\n"); X lprcat("\n I have heard of your magnificent feat, and I, King Wilfred,"); X lprcat("\nforthwith declare today to be a national holiday. Furthermore,"); X lprcat("\nhence three days, Ye be invited to the castle to receive the"); X X--- 74,80 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X standout("\nSubject:"); lprcat(" a noble deed\n"); X+ #endif /*RFCMAIL*/ X lprcat("\n I have heard of your magnificent feat, and I, King Wilfred,"); X lprcat("\nforthwith declare today to be a national holiday. Furthermore,"); X lprcat("\nhence three days, Ye be invited to the castle to receive the"); X*************** X*** 78,83 X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 602 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Count Endelford\n"); X X--- 92,98 ----- X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 602 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X*************** X*** 79,84 X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 602 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Count Endelford\n"); X standout("\nSubject:"); lprcat(" You Bastard!\n"); X X--- 94,100 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 602 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif /*RFCMAIL*/ X # endif X #ifdef RFCMAIL X lprcat("From: Endelford (Count Endelford)\n"); X*************** X*** 80,85 X if (lcreat(mail600) < 0) { write(1,"can't write 602 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Count Endelford\n"); X standout("\nSubject:"); lprcat(" You Bastard!\n"); X lprcat("\n I heard (from sources) of your journey. Congratulations!"); X X--- 96,105 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X+ #ifdef RFCMAIL X+ lprcat("From: Endelford (Count Endelford)\n"); X+ lprcat("Subject: You Bastard!\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" Count Endelford\n"); X standout("\nSubject:"); lprcat(" You Bastard!\n"); X #endif /*RFCMAIL*/ X*************** X*** 82,87 X # endif X standout("From:"); lprcat(" Count Endelford\n"); X standout("\nSubject:"); lprcat(" You Bastard!\n"); X lprcat("\n I heard (from sources) of your journey. Congratulations!"); X lprcat("\nYou Bastard! With several attempts I have yet to endure the"); X lprcat(" caves,\nand you, a nobody, makes the journey! From this time"); X X--- 102,108 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" Count Endelford\n"); X standout("\nSubject:"); lprcat(" You Bastard!\n"); X+ #endif /*RFCMAIL*/ X lprcat("\n I heard (from sources) of your journey. Congratulations!"); X lprcat("\nYou Bastard! With several attempts I have yet to endure the"); X lprcat(" caves,\nand you, a nobody, makes the journey! From this time"); X*************** X*** 97,102 X # ifdef MAIL X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 603 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X X--- 118,124 ----- X # ifdef MAIL X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 603 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X*************** X*** 98,103 X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 603 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X standout("\nSubject:"); lprcat(" High Praise\n"); X X--- 120,126 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 603 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif /*RFCMAIL*/ X # endif X #ifdef RFCMAIL X lprcat("From: Mainair (Mainair, Duke of Larnty)\n"); X*************** X*** 99,104 X if (lcreat(mail600) < 0) { write(1,"can't write 603 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X standout("\nSubject:"); lprcat(" High Praise\n"); X lprcat("\n With a certainty a hero I declare to be amongst us! A nod of"); X X--- 122,131 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X+ #ifdef RFCMAIL X+ lprcat("From: Mainair (Mainair, Duke of Larnty)\n"); X+ lprcat("Subject: High Praise\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X standout("\nSubject:"); lprcat(" High Praise\n"); X #endif /*RFCMAIL*/ X*************** X*** 101,106 X # endif X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X standout("\nSubject:"); lprcat(" High Praise\n"); X lprcat("\n With a certainty a hero I declare to be amongst us! A nod of"); X lprcat("\nfavour I send to thee. Me thinks Count Endelford this day of"); X lprcat("\nright breath'eth fire as of dragon of whom ye are slayer. I"); X X--- 128,134 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X standout("\nSubject:"); lprcat(" High Praise\n"); X+ #endif /*RFCMAIL*/ X lprcat("\n With a certainty a hero I declare to be amongst us! A nod of"); X lprcat("\nfavour I send to thee. Me thinks Count Endelford this day of"); X lprcat("\nright breath'eth fire as of dragon of whom ye are slayer. I"); X*************** X*** 118,123 X # ifdef MAIL X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 604 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X X--- 146,152 ----- X # ifdef MAIL X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 604 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X*************** X*** 119,124 X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 604 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X standout("\nSubject:"); lprcat(" these poor children\n"); X X--- 148,154 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 604 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif /*RFCMAIL*/ X # endif X #ifdef RFCMAIL X lprcat("From: StMary (St. Mary's Children's Home)\n"); X*************** X*** 120,125 X if (lcreat(mail600) < 0) { write(1,"can't write 604 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X standout("\nSubject:"); lprcat(" these poor children\n"); X lprcat("\n News of your great conquests has spread to all of Larndom."); X X--- 150,159 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X+ #ifdef RFCMAIL X+ lprcat("From: StMary (St. Mary's Children's Home)\n"); X+ lprcat("Subject: These Poor Children\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X standout("\nSubject:"); lprcat(" these poor children\n"); X #endif /*RFCMAIL*/ X*************** X*** 122,127 X # endif X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X standout("\nSubject:"); lprcat(" these poor children\n"); X lprcat("\n News of your great conquests has spread to all of Larndom."); X lprcat("\nMight I have a moment of a great man's time. We here at St."); X lprcat("\nMary's Children's Home are very poor, and many children are"); X X--- 156,162 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X standout("\nSubject:"); lprcat(" these poor children\n"); X+ #endif /*RFCMAIL*/ X lprcat("\n News of your great conquests has spread to all of Larndom."); X lprcat("\nMight I have a moment of a great man's time. We here at St."); X lprcat("\nMary's Children's Home are very poor, and many children are"); X*************** X*** 140,145 X # ifdef MAIL X sprintf(mail600, "%s%dmail600", MAILTMP, pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 605 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X X--- 175,181 ----- X # ifdef MAIL X sprintf(mail600, "%s%dmail600", MAILTMP, pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 605 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif X # endif X*************** X*** 141,146 X sprintf(mail600, "%s%dmail600", MAILTMP, pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 605 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X standout("\nSubject:"); lprcat(" hope\n"); X X--- 177,183 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 605 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif X # endif X #ifdef RFCMAIL X lprcat("From: CancerSociety (The National Cancer Society of Larn)\n"); X*************** X*** 142,147 X if (lcreat(mail600) < 0) { write(1,"can't write 605 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X standout("\nSubject:"); lprcat(" hope\n"); X lprcat("\nCongratulations on your successful expedition. We are sure much"); X X--- 179,188 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif X # endif X+ #ifdef RFCMAIL X+ lprcat("From: CancerSociety (The National Cancer Society of Larn)\n"); X+ lprcat("Subject: Hope\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X standout("\nSubject:"); lprcat(" hope\n"); X #endif /*RFCMAIL*/ X*************** X*** 144,149 X # endif X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X standout("\nSubject:"); lprcat(" hope\n"); X lprcat("\nCongratulations on your successful expedition. We are sure much"); X lprcat("\ncourage and determination were needed on your quest. There are"); X lprcat("\nmany though, that could never hope to undertake such a journey"); X X--- 185,191 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X standout("\nSubject:"); lprcat(" hope\n"); X+ #endif /*RFCMAIL*/ X lprcat("\nCongratulations on your successful expedition. We are sure much"); X lprcat("\ncourage and determination were needed on your quest. There are"); X lprcat("\nmany though, that could never hope to undertake such a journey"); X*** io_orig.c Tue Feb 12 10:52:16 1991 X--- io.c Tue Feb 12 10:52:05 1991 X*************** X*** 748,756 **** X switch (tgetent(termbuf, term)) X # else X # ifdef VMS X! term = getenv("TERMINAL"); X if (term == NULL) X! term = getenv("TERM"); X switch (tgetent(termbuf, term)) X # else X switch (tgetent(termbuf, term = getenv("TERM"))) X--- 748,756 ---- X switch (tgetent(termbuf, term)) X # else X # ifdef VMS X! term = getenv("TERM"); X if (term == NULL) X! term = getenv("TERMINAL"); X switch (tgetent(termbuf, term)) X # else X switch (tgetent(termbuf, term = getenv("TERM"))) X*************** X*** 927,949 **** X { X if (*str>=32) { ttputch (*str); curx++; } X else switch (*str) { X! case CLEAR: tputs (CL, 0, ttputch); curx = cury = 0; X break; X X! case CL_LINE: tputs (CE, 0, ttputch); X break; X X! case CL_DOWN: tputs (CD, 0, ttputch); X break; X X! case ST_START: tputs (SO, 0, ttputch); X break; X X! case ST_END: tputs (SE, 0, ttputch); X break; X X! case CURSOR: curx = *++str - 1; cury = *++str - 1; X! tputs (tgoto (CM, curx, cury), 0, ttputch); X break; X X case '\n': if ((cury == 23) && enable_scroll) X--- 927,949 ---- X { X if (*str>=32) { ttputch (*str); curx++; } X else switch (*str) { X! case CLEAR: tputs (CL, 1, ttputch); curx = cury = 0; X break; X X! case CL_LINE: tputs (CE, 1, ttputch); X break; X X! case CL_DOWN: tputs (CD, 1, ttputch); X break; X X! case ST_START: tputs (SO, 1, ttputch); X break; X X! case ST_END: tputs (SE, 1, ttputch); X break; X X! case CURSOR: curx = *++str - 1; cury = *++str - 1; X! tputs (tgoto (CM, curx, cury), 0, ttputch); X break; X X case '\n': if ((cury == 23) && enable_scroll) X*************** X*** 953,971 **** X if (++scrline > 23) scrline=19; X X if (++scrline > 23) scrline=19; X! tputs (tgoto (CM, 0, scrline), 0, ttputch); X! tputs (CE, 0, ttputch); X X if (--scrline < 19) scrline=23; X! tputs (tgoto (CM, 0, scrline), 0, ttputch); X! tputs (CE, 0, ttputch); X } X else X { X! tputs (tgoto (CM, 0, 19), 0, ttputch); X! tputs (DL, 0, ttputch); X! tputs (tgoto (CM, 0, 23), 0, ttputch); X! /* tputs (AL, 0, ttputch); */ X } X } X else X--- 953,971 ---- X if (++scrline > 23) scrline=19; X X if (++scrline > 23) scrline=19; X! tputs (tgoto (CM, 1, scrline), 0, ttputch); X! tputs (CE, 1, ttputch); X X if (--scrline < 19) scrline=23; X! tputs (tgoto (CM, 1, scrline), 0, ttputch); X! tputs (CE, 1, ttputch); X } X else X { X! tputs (tgoto (CM, 1, 19), 0, ttputch); X! tputs (DL, 1, ttputch); X! tputs (tgoto (CM, 1, 23), 0, ttputch); X! /* tputs (AL, 1, ttputch); */ X } X } X else X*************** X*** 976,986 **** X break; X case T_INIT: X if (TI) X! tputs(TI, 0, ttputch); X break; X case T_END: X if (TE) X! tputs(TE, 0, ttputch); X break; X default: X ttputch (*str); X--- 976,986 ---- X break; X case T_INIT: X if (TI) X! tputs(TI, 1, ttputch); X break; X case T_END: X if (TE) X! tputs(TE, 1, ttputch); X break; X default: X ttputch (*str); X*** main_orig.c Tue Feb 12 10:53:18 1991 X--- main.c Tue Feb 12 10:52:54 1991 X*************** X*** 4,13 **** X--- 4,15 ---- X #include "errno.h" X #include "setjmp.h" X #include "stdlib.h" X+ #include "patchlev.h" X #endif X X #include "header.h" X #ifndef MSDOS X+ #include "patchlevel.h" X # ifndef VMS X # include X # endif VMS X*************** X*** 818,824 **** X case 'v': X yrepcount=0; X cursors(); X! lprintf("\nCaverns of Larn, Version %d.%d, Diff=%d",(long)VERSION,(long)SUBVERSION,(long)c[HARDGAME]); X if (wizard) lprcat(" Wizard"); nomove=1; X if (cheat) lprcat(" Cheater"); X lprcat(copyright); X--- 820,826 ---- X case 'v': X yrepcount=0; X cursors(); X! lprintf("\nCaverns of Larn, Version %d.%d.%d, Diff=%d",(long)VERSION,(long)SUBVERSION,(long)PATCHLEVEL,(long)c[HARDGAME]); X if (wizard) lprcat(" Wizard"); nomove=1; X if (cheat) lprcat(" Cheater"); X lprcat(copyright); X*************** X*** 1286,1296 **** X lprcat(" here. Read it?"); X if ((tempc = getyn()) == 'y') X { X if (i==OBOOK) X! readbook( iarg[playerx][playery] ); X else X! read_scroll( iarg[playerx][playery] ); X! forget(); X return; X } X else if (tempc != 'n' ) X--- 1288,1303 ---- X lprcat(" here. Read it?"); X if ((tempc = getyn()) == 'y') X { X+ int temp = iarg[playerx][playery]; X+ /* destroy the scroll first, in case its a teleport scroll. but X+ also must update player's knowledge to prevent a blank spot. X+ */ X+ forget(); X+ know[playerx][playery] = KNOWALL ; X if (i==OBOOK) X! readbook( temp ); X else X! read_scroll( temp ); X return; X } X else if (tempc != 'n' ) X*** Makefile_orig Tue Feb 12 10:53:31 1991 X--- Makefile Tue Feb 12 10:53:26 1991 X*************** X*** 1,4 **** X--- 1,61 ---- X+ ############################################################################ X # X+ # A list of available compile-time defines: X+ # X+ # BSD - use BSD specific features (mostly timer and signal stuff) X+ # BSD4.1 - use BSD4.1 to avoid some 4.2 dependencies (must be used with X+ # BSD above; do not mix with SYSV) X+ # DGK - Don Kneller (ported Larn from Unix to MS-DOS) specific X+ # changes. None are MS-DOS specific. This option will be X+ # going away in a future version. X+ # DGK_MSDOS - MS-DOS specific Don Kneller code. This will be merged with X+ # the MSDOS #define in a future version. X+ # DECRainbow - DEC Rainbow specific display code. X+ # DOCHECKPOINTS - if not defined, checkpoint files are periodically written X+ # by the larn process (no forking) if enabled in the .larnopts X+ # description file. Checkpointing is handy on an unreliable X+ # system, but takes CPU. Inclusion of DOCHECKPOINTS will cause X+ # fork()ing to perform the checkpoints (again if enabled in X+ # the .larnopts file). This usually avoids pauses in larn X+ # while the checkpointing is being done (on large machines). X+ # EXTRA - incorporates code to gather additional performance stats X+ # FLUSHNO=# - Set the input queue excess flushing threshold (default 5) X+ # HIDEBYLINK - if defined, the program attempts to hide from ps X+ # MACRORND - Define to use macro version of rnd() and rund() (fast & big) X+ # MAIL - system supports mail messages (see bill.c). Not useful on X+ # non-networked machines. X+ # MSDOS - MS-DOS specific code. X+ # OS2LARN - OS/2 Specific code. X+ # NONAP - causes napms() to return immediately instead of delaying X+ # n milliseconds. This define may be needed on some systems X+ # if the nap stuff does not work correctly (possible hang). X+ # nap() is primarilly used to delay for effect when casting X+ # missile type spells. X+ # NOVARARGS - Define for systems that don't have varargs (a default X+ # varargs will be used). X+ # RFCMAIL - mail messages are RFC822 conformant. Must be used with X+ # MAIL above. X+ # SAVEINHOME - put save files in users HOME instead of LARNHOME (default) X+ # SIGTSTP - define if your system provides the tty stop signal X+ # SIGVTALRM - define if your system supports the virtual time alarm signal X+ # SYSV - use system III/V (instead of V7) type ioctl calls X+ # TIMECHECK - incorporates code to disable play during working hours (8-5) X+ # UIDSCORE - Define to use user id's to manage scoreboard. Leaving this X+ # out will cause player id's from the file ".playerids" to X+ # be used instead. (.playerids is created upon demand). X+ # Only one entry per id # is allowed in each scoreboard X+ # (winning & non-winning). X+ # VT100 - Compile for using vt100 family of terminals. Omission of X+ # this define will cause larn to use termcap. X+ # WIZID=xxx - this is the userid (or playerid) of the wizard. Default is X+ # zero (superuser), which disables all wizard functions. X+ # Players must have this userid (or playerid) in order to X+ # become the non-scoring wizard player. Definition of WIZID X+ # to non-zero will enable the special wizard debugging X+ # commands. For root to become wizard, use WIZID= -1. X+ # X+ ############################################################################ X+ # X OBJ= action.o bill.o config.o create.o data.o diag.o display.o \ X fortune.o global.o help.o io.o main.o monster.o \ X moreobj.o movem.o msdos.o nap.o object.o regen.o savelev.o \ X*************** X*** 5,12 **** X scores.o signal.o spells.o spheres.o store.o \ X tok.o vms.o X # X # X- X CFLAGS=-DDGK -DBSD -D'LARNHOME="/usr/users/routley/larncc/"' X X larn122: $(OBJ) X--- 62,69 ---- X scores.o signal.o spells.o spheres.o store.o \ X tok.o vms.o X # X+ # LARNHOME is the directory where the larn data files will be installed. X # X CFLAGS=-DDGK -DBSD -D'LARNHOME="/usr/users/routley/larncc/"' X X larn122: $(OBJ) X*** termcap_orig.vms Tue Feb 12 10:53:57 1991 X--- termcap.vms Tue Feb 12 10:53:53 1991 X*************** X*** 20,27 **** X :rf=/usr/lib/tabset/vt100:rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ X :sc=\E7:se=\E[m:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:\ X :vt#3:xn: X! da|vt200|VT200-80|vt200-80|vt200-nam|dec vt200:\ X! :ae=4\E(B:as=2\E(<:tc=vt100p: X d0|vt100|VT100-80|vt100-80|vt100-am|dec vt100:\ X :cr=^M:do=^J:nl=^J:bl=^G:co#80:li#24:cl=50\E[;H\E[2J:\ X :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\ X--- 20,35 ---- X :rf=/usr/lib/tabset/vt100:rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ X :sc=\E7:se=\E[m:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:\ X :vt#3:xn: X! da|vt200|VT200-80|vt2xx|vt200-80|vt220|vt220-80|vt200-nam|dec vt200:\ X! :ae=4\E(B:as=2\E(<:se=2\E[27m:ue=2\E[24m:tc=vt100p: X! dd|vt200-132|vt220-132|VT200-132|vt200-w|dec vt200 132 cols:\ X! :co#132:tc=vt200: X! db|vt300|vt300-80|vt3xx|dec vt300|vt320|vt320-80|vt300-nam|VT300-80|dec vt300 80 cols:\ X! :ds=\E[1$}\E[;H\E[K\E[0$}:\ X! :es:fs=\E[0$}:hs:ts=\E[1$}\E[;H\E[K:\ X! :tc=vt200: X! dc|vt300-132|vt320-132|vt300-w|VT300-132|dec vt300 132 cols:\ X! :co#132:tc=vt300: X d0|vt100|VT100-80|vt100-80|vt100-am|dec vt100:\ X :cr=^M:do=^J:nl=^J:bl=^G:co#80:li#24:cl=50\E[;H\E[2J:\ X :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\ X*************** X*** 33,41 **** X :sc=\E7:rc=\E8:cs=\E[%i%d;%dr: X d1|vt100-nam|vt100 w/no am:\ X :am@:xn@:tc=vt100-am: X! d3|vt132|vt132:\ X :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:tc=vt100: X! d6|vt125|vt125-am|DEC vt125:\ X :cr=^M:do=^J:nl=^J:bl=^G:co#80:li#24:cl=50\E[H\E[2J:\ X :le=^H:am:bs:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:ce=3\E[K:cd=50\E[J:\ X :so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:md=2\E[1m:mr=2\E[7m:mb=2\E[5m:\ X--- 41,51 ---- X :sc=\E7:rc=\E8:cs=\E[%i%d;%dr: X d1|vt100-nam|vt100 w/no am:\ X :am@:xn@:tc=vt100-am: X! d3|vt132|vt132-80|dec vt132:\ X :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:tc=vt100: X! d4|vt132-132|vt132 132 cols:\ X! :co#132:tc=vt132: X! d6|vt125|vt125-80|vt125-am|DEC vt125:\ X :cr=^M:do=^J:nl=^J:bl=^G:co#80:li#24:cl=50\E[H\E[2J:\ X :le=^H:am:bs:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:ce=3\E[K:cd=50\E[J:\ X :so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:md=2\E[1m:mr=2\E[7m:mb=2\E[5m:\ X*************** X*** 43,53 **** X :ks=\E[?1h\E=:ke=\E[?1l\E>:ku=\EOA:kd=\EOB:\ X :kr=\EOC:kl=\EOD:kb=^H:ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:ta=^I:\ X :pt:sr=5\EM:vt#3:sc=\E7:rc=\E8:cs=\E[%i%d;%dr: X! dt|vt100-w|dec vt100 132 cols (w/advanced video):\ X :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=vt100-am: X dv|vt100-w-nam|dec vt100 132 cols (w/advanced video), no am:\ X :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:vt@:tc=vt100-nam: X! dw|vt52|dec vt52:\ X :cr=^M:do=^J:nl=^J:bl=^G:\ X :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#24:nd=\EC:\ X :ta=^I:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H: X--- 53,63 ---- X :ks=\E[?1h\E=:ke=\E[?1l\E>:ku=\EOA:kd=\EOB:\ X :kr=\EOC:kl=\EOD:kb=^H:ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:ta=^I:\ X :pt:sr=5\EM:vt#3:sc=\E7:rc=\E8:cs=\E[%i%d;%dr: X! dt|vt100-132|vt100-w|dec vt100 132 cols (w/advanced video):\ X :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=vt100-am: X dv|vt100-w-nam|dec vt100 132 cols (w/advanced video), no am:\ X :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:vt@:tc=vt100-nam: X! dw|vt52|vt52-80|dec vt52:\ X :cr=^M:do=^J:nl=^J:bl=^G:\ X :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#24:nd=\EC:\ X :ta=^I:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H: END_OF_FILE if test 31787 -ne `wc -c <'patches04'`; then echo shar: \"'patches04'\" unpacked with wrong size! fi # end of 'patches04' if test -f 'larn_hlp.uue' -a "${1}" != "-c" ; then echo shar: Renaming existing file \"'larn_hlp.uue'\" to \"'larn_hlp.uue.orig'\" mv -f 'larn_hlp.uue' 'larn_hlp.uue.orig' fi echo shar: Extracting \"'larn_hlp.uue'\" \(11216 characters\) sed "s/^X//" >'larn_hlp.uue' <<'END_OF_FILE' Xbegin 644 larn.hlp XM-R`@("!796QC;VUE('1O('1H92!G86UE(&]F($QA2!E9F9E8W0N XM("!9;W4@2!T;R!S879E(&AE2X* XM4&5R:&%P65A2!M:7)A8W5L;W5S('-U8V-E XM6]U"!S=&%T=7,*:2`@:6YV96YT;W)Y('EO=7(@<&]C XM:V5T2!A="!A XM;B!A;'1A3"!R961R87<@=&AE('-C7!E("6]U6]U(&YE960@82!L:7-T(&]F XM('-P96QL6EN9R!F;W(@4')O9FET(&ES(%!R;VAI8FET960*0V]P>7)I9VAT(#$Y XM.#8@8GD@3F]A:"!-;W)G86XL($%L;"!2:6=H=',@4F5S97)V960N"@H*"B`@ XM("`@("`@("`@("`@("`@("`@("`@(!M;-VU,87)N($-O;6UA;F0@3&EN92!/ XM<'1I;VYS&UMM"@IL87)N("LK("`@("`@("`@("`@("`@("!R97-T;W)E(&-H XM96-K<&]I;G1E9"!G86UE"FQA2!O9B!T:&4@9V%M92`H;6%Y(&)E('5S960@ XM=VET:"`M;BD*;&%R;B`M;SQO<'1S9FEL93X@("`@("`@2!T:&4@ XM;W!T:6]N(&9I;&4@=&\@8F4@=7-E9`IL87)N("UC("`@("`@("`@("`@("`@ XM("!C6]U(&9A8V4@ XM82!G2!E9F9E8W0N("!9;W4@2!T XM;R!S879E(&AE2X*4&5R:&%P65A2!M:7)A8W5L;W5S('-U8V-E6]U6]U(&AA=F4@=&AA="!C;VUP=71E<@H@("`@96YA8FQE+6-H96-K<&]I XM;G1I;F<@("`@='5R;B!O;B!P97)I;V1I8R!C:&5C:W!O:6YT:6YG"B`@("!G XM7!A9"!F;W(@;6]V:6YG"B`@("!L87)N9&ER.B`@9&ER96-T;W)Y XM("`@("!T:&4@9&ER96-T;W)Y('1O('5S92!F;W(@;&%R;B!F:6QE6]U XM0IB92!U<"!T;R`S-"!C:&%R86-T97)S XM(&QO;F71H:6YG XM(&5N8VQO'!L86YA=&EO;B!O XM9B!T:&4@3&%R;B!S8V]R96)O87)D(&9A8VEL:71Y&UMM"@H@("`@3&%R;B!S XM=7!P;W)T65R("AB XM>2!U65R:60L('-E92!524130T]212!I;B!-86ME9FEL XM92D*:7,@86QL;W=E9"!O;F4@65R2!I65R(B!H87,@ XM82!S8V]R92!O9B`Q,C@P,#,@;VX@=&AE('-C;W)E8F]A2!O;B!T:&4@65R(&1I97,L('1H92!I;G9E XM;G1O